[ { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
610160604052348015610010575f80fd5b506040516135c93803806135c983398181016040528101906100329190610884565b6040518060400160405280601a81526020017f4261747465727920436f696e205265736572766520546f6b656e000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280601a81526020017f4261747465727920436f696e205265736572766520546f6b656e0000000000008152506040518060400160405280600481526020017f4241545200000000000000000000000000000000000000000000000000000000815250816003908161011a9190610afc565b50806004908161012a9190610afc565b5050505f60055f6101000a81548160ff02191690831515021790555061015a60078361027460201b90919060201c565b610120818152505061017660088261027460201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506101b36102c160201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506102035f801b8361031b60201b60201c565b506102347f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261031b60201b60201c565b5061026d3361024761041160201b60201c565b600a6102539190610d33565b63405f7e006102629190610d7d565b61041960201b60201c565b5050610ff8565b5f6020835110156102955761028e8361049e60201b60201c565b90506102bb565b826102a58361050360201b60201c565b5f0190816102b39190610afc565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001610300959493929190610df4565b60405160208183030381529060405280519060200120905090565b5f61032c838361050c60201b60201c565b61040757600160065f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103a461057060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061040b565b5f90505b92915050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610489575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104809190610e45565b60405180910390fd5b61049a5f838361057760201b60201c565b5050565b5f80829050601f815111156104ea57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016104e19190610ec4565b60405180910390fd5b8051816104f690610f11565b5f1c175f1b915050919050565b5f819050919050565b5f60065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b61058883838361058d60201b60201c565b505050565b61059b6105b160201b60201c565b6105ac8383836105f860201b60201c565b505050565b6105bf61081160201b60201c565b156105f6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610648578060025f82825461063c9190610f77565b92505081905550610716565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156106d1578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016106c893929190610faa565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361075d578060025f82825403925050819055506107a7565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108049190610fdf565b60405180910390a3505050565b5f60055f9054906101000a900460ff16905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108538261082a565b9050919050565b61086381610849565b811461086d575f80fd5b50565b5f8151905061087e8161085a565b92915050565b5f806040838503121561089a57610899610826565b5b5f6108a785828601610870565b92505060206108b885828601610870565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061093d57607f821691505b6020821081036109505761094f6108f9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026109b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610977565b6109bc8683610977565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610a006109fb6109f6846109d4565b6109dd565b6109d4565b9050919050565b5f819050919050565b610a19836109e6565b610a2d610a2582610a07565b848454610983565b825550505050565b5f90565b610a41610a35565b610a4c818484610a10565b505050565b5b81811015610a6f57610a645f82610a39565b600181019050610a52565b5050565b601f821115610ab457610a8581610956565b610a8e84610968565b81016020851015610a9d578190505b610ab1610aa985610968565b830182610a51565b50505b505050565b5f82821c905092915050565b5f610ad45f1984600802610ab9565b1980831691505092915050565b5f610aec8383610ac5565b9150826002028217905092915050565b610b05826108c2565b67ffffffffffffffff811115610b1e57610b1d6108cc565b5b610b288254610926565b610b33828285610a73565b5f60209050601f831160018114610b64575f8415610b52578287015190505b610b5c8582610ae1565b865550610bc3565b601f198416610b7286610956565b5f5b82811015610b9957848901518255600182019150602085019450602081019050610b74565b86831015610bb65784890151610bb2601f891682610ac5565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610c4d57808604811115610c2957610c28610bcb565b5b6001851615610c385780820291505b8081029050610c4685610bf8565b9450610c0d565b94509492505050565b5f82610c655760019050610d20565b81610c72575f9050610d20565b8160018114610c885760028114610c9257610cc1565b6001915050610d20565b60ff841115610ca457610ca3610bcb565b5b8360020a915084821115610cbb57610cba610bcb565b5b50610d20565b5060208310610133831016604e8410600b8410161715610cf65782820a905083811115610cf157610cf0610bcb565b5b610d20565b610d038484846001610c04565b92509050818404811115610d1a57610d19610bcb565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610d3d826109d4565b9150610d4883610d27565b9250610d757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c56565b905092915050565b5f610d87826109d4565b9150610d92836109d4565b9250828202610da0816109d4565b91508282048414831517610db757610db6610bcb565b5b5092915050565b5f819050919050565b610dd081610dbe565b82525050565b610ddf816109d4565b82525050565b610dee81610849565b82525050565b5f60a082019050610e075f830188610dc7565b610e146020830187610dc7565b610e216040830186610dc7565b610e2e6060830185610dd6565b610e3b6080830184610de5565b9695505050505050565b5f602082019050610e585f830184610de5565b92915050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610e96826108c2565b610ea08185610e5e565b9350610eb0818560208601610e6e565b610eb981610e7c565b840191505092915050565b5f6020820190508181035f830152610edc8184610e8c565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610f088251610dbe565b80915050919050565b5f610f1b82610ee4565b82610f2584610eee565b9050610f3081610efd565b92506020821015610f7057610f6b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610977565b831692505b5050919050565b5f610f81826109d4565b9150610f8c836109d4565b9250828201905080821115610fa457610fa3610bcb565b5b92915050565b5f606082019050610fbd5f830186610de5565b610fca6020830185610dd6565b610fd76040830184610dd6565b949350505050565b5f602082019050610ff25f830184610dd6565b92915050565b60805160a05160c05160e0516101005161012051610140516125806110495f395f6111b801525f61117d01525f61157801525f61155701525f610ece01525f610f2401525f610f4d01526125805ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c806370a08231116100dc578063a217fddf11610095578063d505accf1161006f578063d505accf14610453578063d547741f1461046f578063dd62ed3e1461048b578063e63ab1e9146104bb57610171565b8063a217fddf146103e9578063a9059cbb14610407578063c00017861461043757610171565b806370a082311461030d5780637ecebe001461033d5780638456cb591461036d57806384b0196e1461037757806391d148541461039b57806395d89b41146103cb57610171565b80632f2ff15d1161012e5780632f2ff15d14610271578063313ce5671461028d5780633644e515146102ab57806336568abe146102c95780633f4ba83a146102e55780635c975abb146102ef57610171565b806301ffc9a71461017557806306fdde03146101a5578063095ea7b3146101c357806318160ddd146101f357806323b872dd14610211578063248a9ca314610241575b5f80fd5b61018f600480360381019061018a9190611cc9565b6104d9565b60405161019c9190611d0e565b60405180910390f35b6101ad610552565b6040516101ba9190611d97565b60405180910390f35b6101dd60048036038101906101d89190611e44565b6105e2565b6040516101ea9190611d0e565b60405180910390f35b6101fb610604565b6040516102089190611e91565b60405180910390f35b61022b60048036038101906102269190611eaa565b61060d565b6040516102389190611d0e565b60405180910390f35b61025b60048036038101906102569190611f2d565b61063b565b6040516102689190611f67565b60405180910390f35b61028b60048036038101906102869190611f80565b610658565b005b61029561067a565b6040516102a29190611fd9565b60405180910390f35b6102b3610682565b6040516102c09190611f67565b60405180910390f35b6102e360048036038101906102de9190611f80565b610690565b005b6102ed61070b565b005b6102f7610740565b6040516103049190611d0e565b60405180910390f35b61032760048036038101906103229190611ff2565b610755565b6040516103349190611e91565b60405180910390f35b61035760048036038101906103529190611ff2565b61079a565b6040516103649190611e91565b60405180910390f35b6103756107ab565b005b61037f6107e0565b604051610392979695949392919061211d565b60405180910390f35b6103b560048036038101906103b09190611f80565b610885565b6040516103c29190611d0e565b60405180910390f35b6103d36108e9565b6040516103e09190611d97565b60405180910390f35b6103f1610979565b6040516103fe9190611f67565b60405180910390f35b610421600480360381019061041c9190611e44565b61097f565b60405161042e9190611d0e565b60405180910390f35b610451600480360381019061044c9190611e44565b6109a1565b005b61046d600480360381019061046891906121c9565b6109bc565b005b61048960048036038101906104849190611f80565b610b01565b005b6104a560048036038101906104a09190612266565b610b23565b6040516104b29190611e91565b60405180910390f35b6104c3610ba5565b6040516104d09190611f67565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061054b575061054a82610bc9565b5b9050919050565b606060038054610561906122d1565b80601f016020809104026020016040519081016040528092919081815260200182805461058d906122d1565b80156105d85780601f106105af576101008083540402835291602001916105d8565b820191905f5260205f20905b8154815290600101906020018083116105bb57829003601f168201915b5050505050905090565b5f806105ec610c32565b90506105f9818585610c39565b600191505092915050565b5f600254905090565b5f80610617610c32565b9050610624858285610c4b565b61062f858585610cdd565b60019150509392505050565b5f60065f8381526020019081526020015f20600101549050919050565b6106618261063b565b61066a81610dcd565b6106748383610de1565b50505050565b5f6012905090565b5f61068b610ecb565b905090565b610698610c32565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106fc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107068282610f81565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61073581610dcd565b61073d61106b565b50565b5f60055f9054906101000a900460ff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6107a4826110cc565b9050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d581610dcd565b6107dd611112565b50565b5f6060805f805f60606107f1611174565b6107f96111af565b46305f801b5f67ffffffffffffffff81111561081857610817612301565b5b6040519080825280602002602001820160405280156108465781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f60065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6060600480546108f8906122d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610924906122d1565b801561096f5780601f106109465761010080835404028352916020019161096f565b820191905f5260205f20905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b5f801b81565b5f80610989610c32565b9050610996818585610cdd565b600191505092915050565b5f801b6109ad81610dcd565b6109b783836111ea565b505050565b83421115610a0157836040517f627913020000000000000000000000000000000000000000000000000000000081526004016109f89190611e91565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a2f8c611269565b89604051602001610a459695949392919061232e565b6040516020818303038152906040528051906020012090505f610a67826112bc565b90505f610a76828787876112d5565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aea57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610ae192919061238d565b60405180910390fd5b610af58a8a8a610c39565b50505050505050505050565b610b0a8261063b565b610b1381610dcd565b610b1d8383610f81565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b610c468383836001611303565b505050565b5f610c568484610b23565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cd75781811015610cc8578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610cbf939291906123b4565b60405180910390fd5b610cd684848484035f611303565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d4d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d4491906123e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dbd575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610db491906123e9565b60405180910390fd5b610dc88383836114d2565b505050565b610dde81610dd9610c32565b6114e2565b50565b5f610dec8383610885565b610ec157600160065f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610e5e610c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610ec5565b5f90505b92915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610f4657507f000000000000000000000000000000000000000000000000000000000000000046145b15610f73577f00000000000000000000000000000000000000000000000000000000000000009050610f7e565b610f7b611533565b90505b90565b5f610f8c8383610885565b15611061575f60065f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610ffe610c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611065565b5f90505b92915050565b6110736115c8565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6110b5610c32565b6040516110c291906123e9565b60405180910390a1565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61111a611608565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861115d610c32565b60405161116a91906123e9565b60405180910390a1565b60606111aa60077f000000000000000000000000000000000000000000000000000000000000000061164990919063ffffffff16565b905090565b60606111e560087f000000000000000000000000000000000000000000000000000000000000000061164990919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361125a575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161125191906123e9565b60405180910390fd5b611265825f836114d2565b5050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f6112ce6112c8610ecb565b836116f6565b9050919050565b5f805f806112e588888888611736565b9250925092506112f5828261181d565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611373575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161136a91906123e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e3575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016113da91906123e9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156114cc578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114c39190611e91565b60405180910390a35b50505050565b6114dd83838361197f565b505050565b6114ec8282610885565b61152f5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611526929190612402565b60405180910390fd5b5050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016115ad959493929190612429565b60405160208183030381529060405280519060200120905090565b6115d0610740565b611606576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611610610740565b15611647576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b606060ff5f1b83146116655761165e83611997565b90506116f0565b818054611671906122d1565b80601f016020809104026020016040519081016040528092919081815260200182805461169d906122d1565b80156116e85780601f106116bf576101008083540402835291602001916116e8565b820191905f5260205f20905b8154815290600101906020018083116116cb57829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611772575f600385925092509250611813565b5f6001888888886040515f8152602001604052604051611795949392919061247a565b6020604051602081039080840390855afa1580156117b5573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611806575f60015f801b93509350935050611813565b805f805f1b935093509350505b9450945094915050565b5f60038111156118305761182f6124bd565b5b826003811115611843576118426124bd565b5b031561197b576001600381111561185d5761185c6124bd565b5b8260038111156118705761186f6124bd565b5b036118a7576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156118bb576118ba6124bd565b5b8260038111156118ce576118cd6124bd565b5b0361191257805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016119099190611e91565b60405180910390fd5b600380811115611925576119246124bd565b5b826003811115611938576119376124bd565b5b0361197a57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016119719190611f67565b60405180910390fd5b5b5050565b611987611608565b611992838383611a09565b505050565b60605f6119a383611c22565b90505f602067ffffffffffffffff8111156119c1576119c0612301565b5b6040519080825280601f01601f1916602001820160405280156119f35781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a59578060025f828254611a4d9190612517565b92505081905550611b27565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ae2578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611ad9939291906123b4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b6e578060025f8282540392505081905550611bb8565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c159190611e91565b60405180910390a3505050565b5f8060ff835f1c169050601f811115611c67576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ca881611c74565b8114611cb2575f80fd5b50565b5f81359050611cc381611c9f565b92915050565b5f60208284031215611cde57611cdd611c70565b5b5f611ceb84828501611cb5565b91505092915050565b5f8115159050919050565b611d0881611cf4565b82525050565b5f602082019050611d215f830184611cff565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d6982611d27565b611d738185611d31565b9350611d83818560208601611d41565b611d8c81611d4f565b840191505092915050565b5f6020820190508181035f830152611daf8184611d5f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611de082611db7565b9050919050565b611df081611dd6565b8114611dfa575f80fd5b50565b5f81359050611e0b81611de7565b92915050565b5f819050919050565b611e2381611e11565b8114611e2d575f80fd5b50565b5f81359050611e3e81611e1a565b92915050565b5f8060408385031215611e5a57611e59611c70565b5b5f611e6785828601611dfd565b9250506020611e7885828601611e30565b9150509250929050565b611e8b81611e11565b82525050565b5f602082019050611ea45f830184611e82565b92915050565b5f805f60608486031215611ec157611ec0611c70565b5b5f611ece86828701611dfd565b9350506020611edf86828701611dfd565b9250506040611ef086828701611e30565b9150509250925092565b5f819050919050565b611f0c81611efa565b8114611f16575f80fd5b50565b5f81359050611f2781611f03565b92915050565b5f60208284031215611f4257611f41611c70565b5b5f611f4f84828501611f19565b91505092915050565b611f6181611efa565b82525050565b5f602082019050611f7a5f830184611f58565b92915050565b5f8060408385031215611f9657611f95611c70565b5b5f611fa385828601611f19565b9250506020611fb485828601611dfd565b9150509250929050565b5f60ff82169050919050565b611fd381611fbe565b82525050565b5f602082019050611fec5f830184611fca565b92915050565b5f6020828403121561200757612006611c70565b5b5f61201484828501611dfd565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6120518161201d565b82525050565b61206081611dd6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61209881611e11565b82525050565b5f6120a9838361208f565b60208301905092915050565b5f602082019050919050565b5f6120cb82612066565b6120d58185612070565b93506120e083612080565b805f5b838110156121105781516120f7888261209e565b9750612102836120b5565b9250506001810190506120e3565b5085935050505092915050565b5f60e0820190506121305f83018a612048565b81810360208301526121428189611d5f565b905081810360408301526121568188611d5f565b90506121656060830187611e82565b6121726080830186612057565b61217f60a0830185611f58565b81810360c083015261219181846120c1565b905098975050505050505050565b6121a881611fbe565b81146121b2575f80fd5b50565b5f813590506121c38161219f565b92915050565b5f805f805f805f60e0888a0312156121e4576121e3611c70565b5b5f6121f18a828b01611dfd565b97505060206122028a828b01611dfd565b96505060406122138a828b01611e30565b95505060606122248a828b01611e30565b94505060806122358a828b016121b5565b93505060a06122468a828b01611f19565b92505060c06122578a828b01611f19565b91505092959891949750929550565b5f806040838503121561227c5761227b611c70565b5b5f61228985828601611dfd565b925050602061229a85828601611dfd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122e857607f821691505b6020821081036122fb576122fa6122a4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c0820190506123415f830189611f58565b61234e6020830188612057565b61235b6040830187612057565b6123686060830186611e82565b6123756080830185611e82565b61238260a0830184611e82565b979650505050505050565b5f6040820190506123a05f830185612057565b6123ad6020830184612057565b9392505050565b5f6060820190506123c75f830186612057565b6123d46020830185611e82565b6123e16040830184611e82565b949350505050565b5f6020820190506123fc5f830184612057565b92915050565b5f6040820190506124155f830185612057565b6124226020830184611f58565b9392505050565b5f60a08201905061243c5f830188611f58565b6124496020830187611f58565b6124566040830186611f58565b6124636060830185611e82565b6124706080830184612057565b9695505050505050565b5f60808201905061248d5f830187611f58565b61249a6020830186611fca565b6124a76040830185611f58565b6124b46060830184611f58565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61252182611e11565b915061252c83611e11565b9250828201905080821115612544576125436124ea565b5b9291505056fea2646970667358221220c2916910a3643e23d4bb146eae5bebeca49b0fcf1e6eddb81ed03db3043e545064736f6c634300081a0033000000000000000000000000348ff9bd375a241ab9d9ac1d9df3589a0cd7572a000000000000000000000000348ff9bd375a241ab9d9ac1d9df3589a0cd7572a