@ensuro/account-abstraction 0.0.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,27 @@
1
+ // This file was autogenerated by Hardhat, do not edit it.
2
+ // prettier-ignore
3
+ // tslint:disable
4
+ // eslint-disable
5
+ // biome-ignore format: see above
6
+
7
+ export interface ERC2771ForwarderAccount$Type {
8
+ readonly _format: "hh3-artifact-1";
9
+ readonly contractName: "ERC2771ForwarderAccount";
10
+ readonly sourceName: "contracts/ERC2771ForwarderAccount.sol";
11
+ readonly abi: [{"inputs":[{"internalType":"contract IEntryPoint","name":"anEntryPoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes","name":"error","type":"bytes"}],"name":"ExecuteError","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidCall","type":"error"},{"inputs":[{"internalType":"contract ERC2771Context","name":"target","type":"address"},{"internalType":"address","name":"signer","type":"address"}],"name":"InvalidTarget","type":"error"},{"inputs":[],"name":"OnlyExecuteUserOpAllowed","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"RequiredEntryPointOrExecutor","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"contract ERC2771Context","name":"target","type":"address"}],"name":"ExecutorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"executor","type":"address"}],"name":"ExecutorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"executor","type":"address"},{"internalType":"contract ERC2771Context","name":"target","type":"address"}],"name":"addExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"entryPoint","outputs":[{"internalType":"contract IEntryPoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct BaseAccount.Call[]","name":"","type":"tuple[]"}],"name":"executeBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct PackedUserOperation","name":"userOp","type":"tuple"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"}],"name":"executeUserOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"executor","type":"address"}],"name":"removeExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct PackedUserOperation","name":"userOp","type":"tuple"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"missingAccountFunds","type":"uint256"}],"name":"validateUserOp","outputs":[{"internalType":"uint256","name":"validationData","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawDepositTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}];
12
+ readonly bytecode: "0x60c060405230608052348015610013575f5ffd5b5060405161152838038061152883398101604081905261003291610043565b6001600160a01b031660a052610070565b5f60208284031215610053575f5ffd5b81516001600160a01b0381168114610069575f5ffd5b9392505050565b60805160a0516114666100c25f395f81816102510152818161036f015281816103eb015281816105d40152818161066901526106a301525f81816107a6015281816107cf015261090b01526114665ff3fe6080604052600436106100e7575f3560e01c80636267e75911610087578063b0d691fe11610057578063b0d691fe14610238578063b61d27f61461027b578063c399ec8814610295578063d087d288146102a9575f5ffd5b80636267e759146101b25780638129fc1c146101d15780638dd7712f146101dc578063ad3cb1cc146101fb575f5ffd5b80634a58db19116100c25780634a58db19146101645780634d44560d1461016c5780634f1ef2861461018b57806352d1902d1461019e575f5ffd5b806319822f7c146100f2578063247884291461012457806334fcd5be14610145575f5ffd5b366100ee57005b5f5ffd5b3480156100fd575f5ffd5b5061011161010c366004610f87565b6102bd565b6040519081526020015b60405180910390f35b34801561012f575f5ffd5b5061014361013e366004610fe5565b6102e2565b005b348015610150575f5ffd5b5061014361015f366004611000565b610354565b61014361036d565b348015610177575f5ffd5b50610143610186366004611071565b6103e9565b61014361019936600461113a565b61046d565b3480156101a9575f5ffd5b50610111610483565b3480156101bd575f5ffd5b506101436101cc366004611187565b61049e565b348015610143575f5ffd5b3480156101e7575f5ffd5b506101436101f63660046111be565b61051b565b348015610206575f5ffd5b5061022b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161011b9190611200565b348015610243575f5ffd5b506040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161011b565b348015610286575f5ffd5b5061014361015f366004611235565b3480156102a0575f5ffd5b506101116105b5565b3480156102b4575f5ffd5b50610111610643565b5f6102c6610698565b6102d08484610710565b90506102db82610756565b9392505050565b6001600160a01b0381165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b0319169055519092917f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d91a25050565b604051630ad8c00b60e31b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b1580156103d0575f5ffd5b505af11580156103e2573d5f5f3e3d5ffd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b158015610453575f5ffd5b505af1158015610465573d5f5f3e3d5ffd5b505050505050565b61047561079b565b61047f828261083f565b5050565b5f61048c610900565b505f5160206114115f395f51905f5290565b6001600160a01b038281165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b031916958716958617905551909392917f8a39fc6d5142759acd84b3e96ccde9187266ecb0df56c8ff08bf2aedc7c93c4791a3505050565b565b5f6105268383610949565b90505f6105338484610a4d565b905061054281835f0151610ace565b825190829061057c5760405163f252a21160e01b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b50506103e2825f015183604001518360405160200161059c9291906112ba565b6040516020818303038152906040528460200151610b0e565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561061a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063e91906112e9565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a906044016105ff565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610573565b5f5f61071c8484610949565b90505f6107298585610a4d565b905061073881835f0151610ace565b6107475760019250505061074d565b5f925050505b92915050565b50565b8015610753576040515f90339083908381818185875af1925050503d805f81146103e2576040519150601f19603f3d011682016040523d82523d5f602084013e6103e2565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061082157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108155f5160206114115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105195760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610899575060408051601f3d908101601f19168201909252610896918101906112e9565b60015b6108c157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610573565b5f5160206114115f395f51905f5281146108f157604051632a87526960e21b815260048101829052602401610573565b6108fb8383610bda565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405163703e46dd60e11b815260040160405180910390fd5b60408051606080820183525f80835260208301529181019190915260386109736060850185611300565b9050101580156109b65750638dd7712f60e01b6109936060850185611300565b6109a1916004915f9161134a565b6109aa91611371565b6001600160e01b031916145b6109d35760405163574b16a760e11b815260040160405180910390fd5b6109e06060840184611300565b6109ee91600490829061134a565b8101906109fb91906113a7565b604084015260208301526001600160a01b031680825261074d578051610a218484610a4d565b60405163f252a21160e01b81526001600160a01b03928316600482015291166024820152604401610573565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120610ac681610a8d610100870187611300565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c2f92505050565b949350505050565b6001600160a01b039182165f9081527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020526040902054821691161490565b606081471015610b3a5760405163cf47918160e01b815247600482015260248101839052604401610573565b5f610b46858486610c57565b9050808015610b6757505f3d1180610b6757505f856001600160a01b03163b115b15610b7c57610b74610c6c565b9150506102db565b8015610ba657604051639996b31560e01b81526001600160a01b0386166004820152602401610573565b3d15610bb957610bb4610c85565b610bd2565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b610be382610c90565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610c27576108fb8282610cf3565b61047f610d75565b5f5f5f5f610c3d8686610d94565b925092509250610c4d8282610ddd565b5090949350505050565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03610cc557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610573565b5f5160206114115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610d008484610e95565b9050808015610d2157505f3d1180610d2157505f846001600160a01b03163b115b15610d3657610d2e610c6c565b91505061074d565b8015610d6057604051639996b31560e01b81526001600160a01b0385166004820152602401610573565b3d15610bb957610d6e610c85565b5092915050565b34156105195760405163b398979f60e01b815260040160405180910390fd5b5f5f5f8351604103610dcb576020840151604085015160608601515f1a610dbd88828585610ea8565b955095509550505050610dd6565b505081515f91506002905b9250925092565b5f826003811115610df057610df06113fc565b03610df9575050565b6001826003811115610e0d57610e0d6113fc565b03610e2b5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e3f57610e3f6113fc565b03610e605760405163fce698f760e01b815260048101829052602401610573565b6003826003811115610e7457610e746113fc565b0361047f576040516335e2f38360e21b815260048101829052602401610573565b5f5f5f835160208501865af49392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ee157505f91506003905082610f66565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f32573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610f5d57505f925060019150829050610f66565b92505f91508190505b9450945094915050565b5f6101208284031215610f81575f5ffd5b50919050565b5f5f5f60608486031215610f99575f5ffd5b833567ffffffffffffffff811115610faf575f5ffd5b610fbb86828701610f70565b9660208601359650604090950135949350505050565b6001600160a01b0381168114610753575f5ffd5b5f60208284031215610ff5575f5ffd5b81356102db81610fd1565b5f5f60208385031215611011575f5ffd5b823567ffffffffffffffff811115611027575f5ffd5b8301601f81018513611037575f5ffd5b803567ffffffffffffffff81111561104d575f5ffd5b8560208260051b8401011115611061575f5ffd5b6020919091019590945092505050565b5f5f60408385031215611082575f5ffd5b823561108d81610fd1565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126110be575f5ffd5b813567ffffffffffffffff8111156110d8576110d861109b565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111075761110761109b565b60405281815283820160200185101561111e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561114b575f5ffd5b823561115681610fd1565b9150602083013567ffffffffffffffff811115611171575f5ffd5b61117d858286016110af565b9150509250929050565b5f5f60408385031215611198575f5ffd5b82356111a381610fd1565b915060208301356111b381610fd1565b809150509250929050565b5f5f604083850312156111cf575f5ffd5b823567ffffffffffffffff8111156111e5575f5ffd5b6111f185828601610f70565b95602094909401359450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f60608587031215611248575f5ffd5b843561125381610fd1565b935060208501359250604085013567ffffffffffffffff811115611275575f5ffd5b8501601f81018713611285575f5ffd5b803567ffffffffffffffff81111561129b575f5ffd5b8760208284010111156112ac575f5ffd5b949793965060200194505050565b5f83518060208601845e60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f602082840312156112f9575f5ffd5b5051919050565b5f5f8335601e19843603018112611315575f5ffd5b83018035915067ffffffffffffffff82111561132f575f5ffd5b602001915036819003821315611343575f5ffd5b9250929050565b5f5f85851115611358575f5ffd5b83861115611364575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610d6e576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f606084860312156113b9575f5ffd5b83356113c481610fd1565b925060208401359150604084013567ffffffffffffffff8111156113e6575f5ffd5b6113f2868287016110af565b9150509250925092565b634e487b7160e01b5f52602160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220872c50a7097bf4bc50c5972cce553b4d6fb501a6658c63b74a98bc002b65524164736f6c634300081e0033";
13
+ readonly deployedBytecode: "0x6080604052600436106100e7575f3560e01c80636267e75911610087578063b0d691fe11610057578063b0d691fe14610238578063b61d27f61461027b578063c399ec8814610295578063d087d288146102a9575f5ffd5b80636267e759146101b25780638129fc1c146101d15780638dd7712f146101dc578063ad3cb1cc146101fb575f5ffd5b80634a58db19116100c25780634a58db19146101645780634d44560d1461016c5780634f1ef2861461018b57806352d1902d1461019e575f5ffd5b806319822f7c146100f2578063247884291461012457806334fcd5be14610145575f5ffd5b366100ee57005b5f5ffd5b3480156100fd575f5ffd5b5061011161010c366004610f87565b6102bd565b6040519081526020015b60405180910390f35b34801561012f575f5ffd5b5061014361013e366004610fe5565b6102e2565b005b348015610150575f5ffd5b5061014361015f366004611000565b610354565b61014361036d565b348015610177575f5ffd5b50610143610186366004611071565b6103e9565b61014361019936600461113a565b61046d565b3480156101a9575f5ffd5b50610111610483565b3480156101bd575f5ffd5b506101436101cc366004611187565b61049e565b348015610143575f5ffd5b3480156101e7575f5ffd5b506101436101f63660046111be565b61051b565b348015610206575f5ffd5b5061022b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161011b9190611200565b348015610243575f5ffd5b506040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161011b565b348015610286575f5ffd5b5061014361015f366004611235565b3480156102a0575f5ffd5b506101116105b5565b3480156102b4575f5ffd5b50610111610643565b5f6102c6610698565b6102d08484610710565b90506102db82610756565b9392505050565b6001600160a01b0381165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b0319169055519092917f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d91a25050565b604051630ad8c00b60e31b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b1580156103d0575f5ffd5b505af11580156103e2573d5f5f3e3d5ffd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b158015610453575f5ffd5b505af1158015610465573d5f5f3e3d5ffd5b505050505050565b61047561079b565b61047f828261083f565b5050565b5f61048c610900565b505f5160206114115f395f51905f5290565b6001600160a01b038281165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b031916958716958617905551909392917f8a39fc6d5142759acd84b3e96ccde9187266ecb0df56c8ff08bf2aedc7c93c4791a3505050565b565b5f6105268383610949565b90505f6105338484610a4d565b905061054281835f0151610ace565b825190829061057c5760405163f252a21160e01b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b50506103e2825f015183604001518360405160200161059c9291906112ba565b6040516020818303038152906040528460200151610b0e565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561061a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063e91906112e9565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a906044016105ff565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610573565b5f5f61071c8484610949565b90505f6107298585610a4d565b905061073881835f0151610ace565b6107475760019250505061074d565b5f925050505b92915050565b50565b8015610753576040515f90339083908381818185875af1925050503d805f81146103e2576040519150601f19603f3d011682016040523d82523d5f602084013e6103e2565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061082157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108155f5160206114115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105195760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610899575060408051601f3d908101601f19168201909252610896918101906112e9565b60015b6108c157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610573565b5f5160206114115f395f51905f5281146108f157604051632a87526960e21b815260048101829052602401610573565b6108fb8383610bda565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405163703e46dd60e11b815260040160405180910390fd5b60408051606080820183525f80835260208301529181019190915260386109736060850185611300565b9050101580156109b65750638dd7712f60e01b6109936060850185611300565b6109a1916004915f9161134a565b6109aa91611371565b6001600160e01b031916145b6109d35760405163574b16a760e11b815260040160405180910390fd5b6109e06060840184611300565b6109ee91600490829061134a565b8101906109fb91906113a7565b604084015260208301526001600160a01b031680825261074d578051610a218484610a4d565b60405163f252a21160e01b81526001600160a01b03928316600482015291166024820152604401610573565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120610ac681610a8d610100870187611300565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c2f92505050565b949350505050565b6001600160a01b039182165f9081527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020526040902054821691161490565b606081471015610b3a5760405163cf47918160e01b815247600482015260248101839052604401610573565b5f610b46858486610c57565b9050808015610b6757505f3d1180610b6757505f856001600160a01b03163b115b15610b7c57610b74610c6c565b9150506102db565b8015610ba657604051639996b31560e01b81526001600160a01b0386166004820152602401610573565b3d15610bb957610bb4610c85565b610bd2565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b610be382610c90565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610c27576108fb8282610cf3565b61047f610d75565b5f5f5f5f610c3d8686610d94565b925092509250610c4d8282610ddd565b5090949350505050565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03610cc557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610573565b5f5160206114115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610d008484610e95565b9050808015610d2157505f3d1180610d2157505f846001600160a01b03163b115b15610d3657610d2e610c6c565b91505061074d565b8015610d6057604051639996b31560e01b81526001600160a01b0385166004820152602401610573565b3d15610bb957610d6e610c85565b5092915050565b34156105195760405163b398979f60e01b815260040160405180910390fd5b5f5f5f8351604103610dcb576020840151604085015160608601515f1a610dbd88828585610ea8565b955095509550505050610dd6565b505081515f91506002905b9250925092565b5f826003811115610df057610df06113fc565b03610df9575050565b6001826003811115610e0d57610e0d6113fc565b03610e2b5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e3f57610e3f6113fc565b03610e605760405163fce698f760e01b815260048101829052602401610573565b6003826003811115610e7457610e746113fc565b0361047f576040516335e2f38360e21b815260048101829052602401610573565b5f5f5f835160208501865af49392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ee157505f91506003905082610f66565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f32573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610f5d57505f925060019150829050610f66565b92505f91508190505b9450945094915050565b5f6101208284031215610f81575f5ffd5b50919050565b5f5f5f60608486031215610f99575f5ffd5b833567ffffffffffffffff811115610faf575f5ffd5b610fbb86828701610f70565b9660208601359650604090950135949350505050565b6001600160a01b0381168114610753575f5ffd5b5f60208284031215610ff5575f5ffd5b81356102db81610fd1565b5f5f60208385031215611011575f5ffd5b823567ffffffffffffffff811115611027575f5ffd5b8301601f81018513611037575f5ffd5b803567ffffffffffffffff81111561104d575f5ffd5b8560208260051b8401011115611061575f5ffd5b6020919091019590945092505050565b5f5f60408385031215611082575f5ffd5b823561108d81610fd1565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126110be575f5ffd5b813567ffffffffffffffff8111156110d8576110d861109b565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111075761110761109b565b60405281815283820160200185101561111e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561114b575f5ffd5b823561115681610fd1565b9150602083013567ffffffffffffffff811115611171575f5ffd5b61117d858286016110af565b9150509250929050565b5f5f60408385031215611198575f5ffd5b82356111a381610fd1565b915060208301356111b381610fd1565b809150509250929050565b5f5f604083850312156111cf575f5ffd5b823567ffffffffffffffff8111156111e5575f5ffd5b6111f185828601610f70565b95602094909401359450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f60608587031215611248575f5ffd5b843561125381610fd1565b935060208501359250604085013567ffffffffffffffff811115611275575f5ffd5b8501601f81018713611285575f5ffd5b803567ffffffffffffffff81111561129b575f5ffd5b8760208284010111156112ac575f5ffd5b949793965060200194505050565b5f83518060208601845e60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f602082840312156112f9575f5ffd5b5051919050565b5f5f8335601e19843603018112611315575f5ffd5b83018035915067ffffffffffffffff82111561132f575f5ffd5b602001915036819003821315611343575f5ffd5b9250929050565b5f5f85851115611358575f5ffd5b83861115611364575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610d6e576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f606084860312156113b9575f5ffd5b83356113c481610fd1565b925060208401359150604084013567ffffffffffffffff8111156113e6575f5ffd5b6113f2868287016110af565b9150509250925092565b634e487b7160e01b5f52602160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220872c50a7097bf4bc50c5972cce553b4d6fb501a6658c63b74a98bc002b65524164736f6c634300081e0033";
14
+ readonly linkReferences: {};
15
+ readonly deployedLinkReferences: {};
16
+ readonly immutableReferences: {"2756":[{"length":32,"start":1958},{"length":32,"start":1999},{"length":32,"start":2315}],"12314":[{"length":32,"start":593},{"length":32,"start":879},{"length":32,"start":1003},{"length":32,"start":1492},{"length":32,"start":1641},{"length":32,"start":1699}]};
17
+ readonly inputSourceName: "project/contracts/ERC2771ForwarderAccount.sol";
18
+ readonly buildInfoId: "solc-0_8_30-95f43f1788cfd8898b8023be4a1aea1d69744865";
19
+ };
20
+
21
+ import "hardhat/types/artifacts";
22
+ declare module "hardhat/types/artifacts" {
23
+ interface ArtifactMap {
24
+ ["ERC2771ForwarderAccount"]: ERC2771ForwarderAccount$Type;
25
+ ["contracts/ERC2771ForwarderAccount.sol:ERC2771ForwarderAccount"]: ERC2771ForwarderAccount$Type;
26
+ }
27
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "_format": "hh-sol-artifact-1",
2
+ "_format": "hh3-artifact-1",
3
3
  "contractName": "AccessManager",
4
4
  "sourceName": "contracts/dependencies/AccessManager.sol",
5
5
  "abi": [
@@ -52,17 +52,6 @@
52
52
  "name": "AccessManagerInvalidInitialAdmin",
53
53
  "type": "error"
54
54
  },
55
- {
56
- "inputs": [
57
- {
58
- "internalType": "address",
59
- "name": "account",
60
- "type": "address"
61
- }
62
- ],
63
- "name": "AccessManagerLockedAccount",
64
- "type": "error"
65
- },
66
55
  {
67
56
  "inputs": [
68
57
  {
@@ -181,20 +170,25 @@
181
170
  "name": "AddressEmptyCode",
182
171
  "type": "error"
183
172
  },
173
+ {
174
+ "inputs": [],
175
+ "name": "FailedCall",
176
+ "type": "error"
177
+ },
184
178
  {
185
179
  "inputs": [
186
180
  {
187
- "internalType": "address",
188
- "name": "account",
189
- "type": "address"
181
+ "internalType": "uint256",
182
+ "name": "balance",
183
+ "type": "uint256"
184
+ },
185
+ {
186
+ "internalType": "uint256",
187
+ "name": "needed",
188
+ "type": "uint256"
190
189
  }
191
190
  ],
192
- "name": "AddressInsufficientBalance",
193
- "type": "error"
194
- },
195
- {
196
- "inputs": [],
197
- "name": "FailedInnerCall",
191
+ "name": "InsufficientBalance",
198
192
  "type": "error"
199
193
  },
200
194
  {
@@ -1174,8 +1168,11 @@
1174
1168
  "type": "function"
1175
1169
  }
1176
1170
  ],
1177
- "bytecode": "0x60806040523480156200001157600080fd5b506040516200518b3803806200518b8339818101604052810190620000379190620007d1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ac5760006040517f0813ada2000000000000000000000000000000000000000000000000000000008152600401620000a3919062000814565b60405180910390fd5b620000c2600082600080620000ca60201b60201c565b505062000a62565b600067ffffffffffffffff80168567ffffffffffffffff16036200012757846040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016200011e919062000856565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115620002f9578463ffffffff16620001d2620004b660201b60201c565b620001de9190620008b4565b905060405180604001604052808265ffffffffffff168152602001620002108663ffffffff16620004ce60201b60201c565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506200044a565b620003a5846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16620004de60201b9092919060201c565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051620004a19392919062000944565b60405180910390a38192505050949350505050565b6000620004c9426200059660201b60201c565b905090565b60008163ffffffff169050919050565b600080600062000504866dffffffffffffffffffffffffffff16620005f360201b60201c565b90506000620005508563ffffffff168763ffffffff168463ffffffff16116200052f5760006200053e565b87846200053d919062000981565b5b63ffffffff166200062460201b60201c565b90508063ffffffff1662000569620004b660201b60201c565b620005759190620008b4565b92506200058a8287856200063f60201b60201c565b93505050935093915050565b600065ffffffffffff8016821115620005eb576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401620005e292919062000a35565b60405180910390fd5b819050919050565b60008062000617836dffffffffffffffffffffffffffff166200068b60201b60201c565b5050905080915050919050565b600081831162000635578162000637565b825b905092915050565b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000620006b184620006a5620004b660201b60201c565b620006be60201b60201c565b9250925092509193909250565b600080600080600080620006e8886dffffffffffffffffffffffffffff166200072560201b60201c565b9250925092508665ffffffffffff168165ffffffffffff161115620007105782828262000715565b816000805b9550955095505050509250925092565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000799826200076c565b9050919050565b620007ab816200078c565b8114620007b757600080fd5b50565b600081519050620007cb81620007a0565b92915050565b600060208284031215620007ea57620007e962000767565b5b6000620007fa84828501620007ba565b91505092915050565b6200080e816200078c565b82525050565b60006020820190506200082b600083018462000803565b92915050565b600067ffffffffffffffff82169050919050565b620008508162000831565b82525050565b60006020820190506200086d600083018462000845565b92915050565b600065ffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008c18262000873565b9150620008ce8362000873565b9250828201905065ffffffffffff811115620008ef57620008ee62000885565b5b92915050565b600063ffffffff82169050919050565b6200091081620008f5565b82525050565b620009218162000873565b82525050565b60008115159050919050565b6200093e8162000927565b82525050565b60006060820190506200095b600083018662000905565b6200096a602083018562000916565b62000979604083018462000933565b949350505050565b60006200098e82620008f5565b91506200099b83620008f5565b9250828203905063ffffffff811115620009ba57620009b962000885565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600062000a02620009fc620009f684620009c0565b620009d7565b620009ca565b9050919050565b62000a1481620009e1565b82525050565b6000819050919050565b62000a2f8162000a1a565b82525050565b600060408201905062000a4c600083018562000a09565b62000a5b602083018462000a24565b9392505050565b6147198062000a726000396000f3fe6080604052600436106101e35760003560e01c80636d5115bd11610102578063b700961311610095578063d22b598911610064578063d22b59891461077c578063d6bb62c6146107a5578063f801a698146107e2578063fe0776f514610820576101e3565b8063b7009613146106ac578063b7d2b162146106ea578063cc1b6c8114610713578063d1f856ee1461073e576101e3565b8063a166aa89116100d1578063a166aa89146105cc578063a64d95ce14610609578063abd9bd2a14610632578063ac9650d81461066f576101e3565b80636d5115bd1461051257806375b238fc1461054f578063853551b81461057a57806394c7d7ee146105a3576101e3565b806330cae1871161017a5780634665096d116101495780634665096d146104445780634c1da1e21461046f57806352962952146104ac578063530dd456146104d5576101e3565b806330cae187146103765780633adc277a1461039f5780633ca7c02a146103dc5780634136a33c14610407576101e3565b806318ff183c116101b657806318ff183c146102b45780631cff79cd146102dd57806325c471a01461030d5780633078f11414610336576101e3565b806308d6122d146101e85780630b0a93ba1461021157806312be87271461024e578063167bd3951461028b575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190613542565b610849565b005b34801561021d57600080fd5b50610238600480360381019061023391906135b6565b6108a3565b60405161024591906135f2565b60405180910390f35b34801561025a57600080fd5b50610275600480360381019061027091906135b6565b6108eb565b604051610282919061362c565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad919061367f565b610951565b005b3480156102c057600080fd5b506102db60048036038101906102d691906136bf565b610967565b005b6102f760048036038101906102f29190613755565b6109de565b604051610304919061362c565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f91906137e1565b610b31565b005b34801561034257600080fd5b5061035d60048036038101906103589190613834565b610b53565b60405161036d9493929190613895565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906138da565b610c78565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613950565b610c8e565b6040516103d3919061397d565b60405180910390f35b3480156103e857600080fd5b506103f1610cda565b6040516103fe91906135f2565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613950565b610ce6565b60405161043b919061362c565b60405180910390f35b34801561045057600080fd5b50610459610d16565b604051610466919061362c565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613998565b610d21565b6040516104a3919061362c565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce91906138da565b610d9e565b005b3480156104e157600080fd5b506104fc60048036038101906104f791906135b6565b610db4565b60405161050991906135f2565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613a1d565b610dfc565b60405161054691906135f2565b60405180910390f35b34801561055b57600080fd5b50610564610eab565b60405161057191906135f2565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613ab3565b610eb0565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613755565b610f79565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613998565b611097565b6040516106009190613b22565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190613b3d565b6110ef565b005b34801561063e57600080fd5b5061065960048036038101906106549190613b7d565b611105565b6040516106669190613c00565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190613c71565b61113e565b6040516106a39190613e10565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613e32565b611322565b6040516106e1929190613e85565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190613834565b6113cf565b005b34801561071f57600080fd5b506107286113e6565b604051610735919061362c565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190613834565b6113f1565b604051610773929190613e85565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e9190613eae565b611485565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190613b7d565b61149b565b6040516107d9919061362c565b60405180910390f35b3480156107ee57600080fd5b5061080960048036038101906108049190613f1a565b61168e565b604051610817929190613f8e565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613834565b611872565b005b6108516118ed565b60005b8383905081101561089c576108918585858481811061087657610875613fb7565b5b905060200201602081019061088b9190613fe6565b8461199a565b806001019050610854565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b600061094a600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611aaf565b9050919050565b6109596118ed565b6109638282611ad8565b5050565b61096f6118ed565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b81526004016109a89190614022565b600060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050505050565b6000806109e9611bf3565b90506000806109fa83888888611bfb565b9150915081158015610a12575060008163ffffffff16145b15610a61578287610a238888611c7b565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610a589392919061404c565b60405180910390fd5b6000610a6f84898989611105565b90506000808363ffffffff16141580610a9957506000610a8e83610c8e565b65ffffffffffff1614155b15610aaa57610aa782611ca4565b90505b60006003549050610ac48a610abf8b8b611c7b565b611e5a565b600381905550610b198a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505034611e8d565b50806003819055508196505050505050509392505050565b610b396118ed565b610b4d8383610b47866108eb565b84611f5a565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450600460009054906101000a900460ff1615610c2a57610c198160000160069054906101000a90046dffffffffffffffffffffffffffff1661232b565b809450819550829650505050610c6e565b610c618160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661234e565b8094508195508296505050505b5092959194509250565b610c806118ed565b610c8a8282612371565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610cc581612480565b610ccf5780610cd2565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b6000610d976000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611aaf565b9050919050565b610da66118ed565b610db082826124bc565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b610eb86118ed565b600067ffffffffffffffff168367ffffffffffffffff161480610eee575067ffffffffffffffff80168367ffffffffffffffff16145b15610f3057826040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401610f2791906135f2565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610f6c9291906140d0565b60405180910390a2505050565b6000610f83611bf3565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190614109565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461107c57806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016110739190614022565b60405180910390fd5b61109061108b85838686611105565b611ca4565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b6110f76118ed565b61110182826125cb565b5050565b60008484848460405160200161111e9493929190614174565b604051602081830303815290604052805190602001209050949350505050565b6060600061114a611bf3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111ed57600036611187612742565b600036905061119691906141ed565b9080926111a59392919061422b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061123c565b600067ffffffffffffffff81111561120857611207614266565b5b6040519080825280601f01601f19166020018201604052801561123a5781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff81111561125b5761125a614266565b5b60405190808252806020026020018201604052801561128e57816020015b60608152602001906001900390816112795790505b50915060005b8484905081101561131a576112ef308686848181106112b6576112b5613fb7565b5b90506020028101906112c891906142a4565b856040516020016112db93929190614368565b604051602081830303815290604052612747565b83828151811061130257611301613fb7565b5b60200260200101819052508080600101915050611294565b505092915050565b60008061132e84611097565b1561133f57600080915091506113c7565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036113875761137c84846127cb565b6000915091506113c7565b60006113938585610dfc565b90506000806113a283896113f1565b91509150816113b3576000806113bf565b60008163ffffffff1614815b945094505050505b935093915050565b6113d76118ed565b6113e182826127e3565b505050565b600062069780905090565b60008067ffffffffffffffff80168467ffffffffffffffff160361141c57600160009150915061147e565b6000806114298686610b53565b50509150915060008265ffffffffffff16141580156114765750600460009054906101000a900460ff168061147557506114616129cf565b65ffffffffffff168265ffffffffffff1611155b5b819350935050505b9250929050565b61148d6118ed565b61149782826129df565b5050565b6000806114a6611bf3565b905060006114b48585611c7b565b905060006114c488888888611105565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361153b57806040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016115329190613c00565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146115f557600061157b6000856113f1565b509050600061159b6115956115908b87610dfc565b6108a3565b866113f1565b509050811580156115aa575080155b156115f257848a8a866040517f3fe2751c0000000000000000000000000000000000000000000000000000000081526004016115e9949392919061438e565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b600080600061169b611bf3565b905060006116ab82898989611bfb565b91505060008163ffffffff166116bf6129cf565b6116c991906143d3565b905060008263ffffffff161480611703575060008665ffffffffffff1611801561170257508065ffffffffffff168665ffffffffffff16105b5b156117525782896117148a8a611c7b565b6040517f81c6f24b0000000000000000000000000000000000000000000000000000000081526004016117499392919061404c565b60405180910390fd5b61176c8665ffffffffffff168265ffffffffffff16612b38565b955061177a838a8a8a611105565b945061178585612b51565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d60405161185e95949392919061440d565b60405180910390a350505094509492505050565b61187a611bf3565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118de576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e882826127e3565b505050565b60006118f7611bf3565b905060008061190d83611908612be3565b612bf0565b91509150816119955760008163ffffffff1603611979576000611936611931612be3565b612cde565b5091505083816040517ff07e038f00000000000000000000000000000000000000000000000000000000815260040161197092919061445b565b60405180910390fd5b61199361198e8430611989612be3565b611105565b611ca4565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611aa29190614484565b60405180910390a3505050565b600080611acb836dffffffffffffffffffffffffffff1661234e565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4857816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611b3f9190614022565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13882604051611be79190613b22565b60405180910390a25050565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c4557611c3c868585612bf0565b91509150611c72565b60048484905010611c6957611c648686611c5f8787611c7b565b611322565b611c6d565b6000805b915091505b94509492505050565b60008282600090600492611c919392919061422b565b90611c9c91906144b7565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff1603611d4a57836040517f60a299b0000000000000000000000000000000000000000000000000000000008152600401611d419190613c00565b60405180910390fd5b611d526129cf565b65ffffffffffff168265ffffffffffff161115611da657836040517f18cb6b7a000000000000000000000000000000000000000000000000000000008152600401611d9d9190613c00565b60405180910390fd5b611daf82612480565b15611df157836040517f78a5d6e4000000000000000000000000000000000000000000000000000000008152600401611de89190613c00565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b60008282604051602001611e6f929190614516565b60405160208183030381529060405280519060200120905092915050565b606081471015611ed457306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401611ecb9190614022565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051611efd919061453f565b60006040518083038185875af1925050503d8060008114611f3a576040519150601f19603f3d011682016040523d82523d6000602084013e611f3f565b606091505b5091509150611f4f8683836130c6565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff1603611fb457846040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401611fab91906135f2565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612172578463ffffffff166120566129cf565b61206091906143d3565b905060405180604001604052808265ffffffffffff16815260200161208a8663ffffffff16613155565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506122c1565b61221c846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166131659092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf86848660405161231693929190614556565b60405180910390a38192505050949350505050565b60008060006123418461233c6131f7565b61320c565b9250925092509193909250565b60008060006123648461235f6129cf565b613269565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff1614806123a7575067ffffffffffffffff80168267ffffffffffffffff16145b156123e957816040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016123e091906135f2565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b600061248a6129cf565b65ffffffffffff1661249a610d16565b63ffffffff16836124ab91906143d3565b65ffffffffffff1611159050919050565b600067ffffffffffffffff168267ffffffffffffffff1614806124f2575067ffffffffffffffff80168267ffffffffffffffff16145b1561253457816040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161252b91906135f2565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff160361262357816040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161261a91906135f2565b60405180910390fd5b6000612695826126316113e6565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166131659092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b48838360405161273592919061458d565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612771919061453f565b600060405180830381855af49150503d80600081146127ac576040519150601f19603f3d011682016040523d82523d6000602084013e6127b1565b606091505b50915091506127c18583836130c6565b9250505092915050565b60006127d78383611e5a565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361283d57826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161283491906135f2565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036128d257600090506129c9565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b60006129da426132c6565b905090565b6000612a68826129ed6113e6565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166131659092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c8383604051612b2b92919061458d565b60405180910390a2505050565b6000818311612b475781612b49565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff1614158015612b9d5750612b9b81612480565b155b15612bdf57816040517f813e9459000000000000000000000000000000000000000000000000000000008152600401612bd69190613c00565b60405180910390fd5b5050565b3660008036915091509091565b6000806004848490501015612c0b5760008091509150612cd6565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c5c57612c5130612c4c8686611c7b565b6127cb565b600091509150612cd6565b6000806000612c6b8787612cde565b92509250925082612c855760008094509450505050612cd6565b600080612c92848b6113f1565b9150915081612cac57600080965096505050505050612cd6565b612cc28363ffffffff168263ffffffff16612b38565b955060008663ffffffff1614965050505050505b935093915050565b60008060006004858590501015612cff5760008060009250925092506130bf565b6000612d0b8686611c7b565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612da457506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612df35750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e42575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e91575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15612ea7576001600080935093509350506130bf565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612f3e575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612f8d57506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15612fd75760008686600490602492612fa89392919061422b565b810190612fb591906145f4565b90506000612fc282610d21565b905060016000829550955095505050506130bf565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061306e575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156130b257600086866004906024926130899392919061422b565b81019061309691906135b6565b905060016130a382610db4565b600094509450945050506130bf565b6000806000935093509350505b9250925092565b6060826130db576130d682613320565b61314d565b60008251148015613103575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561314557836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161313c9190614022565b60405180910390fd5b81905061314e565b5b9392505050565b60008163ffffffff169050919050565b6000806000613183866dffffffffffffffffffffffffffff16611aaf565b905060006131c38563ffffffff168763ffffffff168463ffffffff16116131ab5760006131b8565b87846131b79190614621565b5b63ffffffff16612b38565b90508063ffffffff166131d46129cf565b6131de91906143d3565b92506131eb828785613365565b93505050935093915050565b60006132076407915ecc006132c6565b905090565b60008060008060008061322e886dffffffffffffffffffffffffffff166133b1565b9250925092508665ffffffffffff168165ffffffffffff16111561325457828282613259565b816000805b9550955095505050509250925092565b60008060008060008061328b886dffffffffffffffffffffffffffff166133f3565b9250925092508665ffffffffffff168165ffffffffffff1611156132b1578282826132b6565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613318576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161330f9291906146ba565b60405180910390fd5b819050919050565b6000815111156133335780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061346a8261343f565b9050919050565b61347a8161345f565b811461348557600080fd5b50565b60008135905061349781613471565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126134c2576134c161349d565b5b8235905067ffffffffffffffff8111156134df576134de6134a2565b5b6020830191508360208202830111156134fb576134fa6134a7565b5b9250929050565b600067ffffffffffffffff82169050919050565b61351f81613502565b811461352a57600080fd5b50565b60008135905061353c81613516565b92915050565b6000806000806060858703121561355c5761355b613435565b5b600061356a87828801613488565b945050602085013567ffffffffffffffff81111561358b5761358a61343a565b5b613597878288016134ac565b935093505060406135aa8782880161352d565b91505092959194509250565b6000602082840312156135cc576135cb613435565b5b60006135da8482850161352d565b91505092915050565b6135ec81613502565b82525050565b600060208201905061360760008301846135e3565b92915050565b600063ffffffff82169050919050565b6136268161360d565b82525050565b6000602082019050613641600083018461361d565b92915050565b60008115159050919050565b61365c81613647565b811461366757600080fd5b50565b60008135905061367981613653565b92915050565b6000806040838503121561369657613695613435565b5b60006136a485828601613488565b92505060206136b58582860161366a565b9150509250929050565b600080604083850312156136d6576136d5613435565b5b60006136e485828601613488565b92505060206136f585828601613488565b9150509250929050565b60008083601f8401126137155761371461349d565b5b8235905067ffffffffffffffff811115613732576137316134a2565b5b60208301915083600182028301111561374e5761374d6134a7565b5b9250929050565b60008060006040848603121561376e5761376d613435565b5b600061377c86828701613488565b935050602084013567ffffffffffffffff81111561379d5761379c61343a565b5b6137a9868287016136ff565b92509250509250925092565b6137be8161360d565b81146137c957600080fd5b50565b6000813590506137db816137b5565b92915050565b6000806000606084860312156137fa576137f9613435565b5b60006138088682870161352d565b935050602061381986828701613488565b925050604061382a868287016137cc565b9150509250925092565b6000806040838503121561384b5761384a613435565b5b60006138598582860161352d565b925050602061386a85828601613488565b9150509250929050565b600065ffffffffffff82169050919050565b61388f81613874565b82525050565b60006080820190506138aa6000830187613886565b6138b7602083018661361d565b6138c4604083018561361d565b6138d16060830184613886565b95945050505050565b600080604083850312156138f1576138f0613435565b5b60006138ff8582860161352d565b92505060206139108582860161352d565b9150509250929050565b6000819050919050565b61392d8161391a565b811461393857600080fd5b50565b60008135905061394a81613924565b92915050565b60006020828403121561396657613965613435565b5b60006139748482850161393b565b91505092915050565b60006020820190506139926000830184613886565b92915050565b6000602082840312156139ae576139ad613435565b5b60006139bc84828501613488565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6139fa816139c5565b8114613a0557600080fd5b50565b600081359050613a17816139f1565b92915050565b60008060408385031215613a3457613a33613435565b5b6000613a4285828601613488565b9250506020613a5385828601613a08565b9150509250929050565b60008083601f840112613a7357613a7261349d565b5b8235905067ffffffffffffffff811115613a9057613a8f6134a2565b5b602083019150836001820283011115613aac57613aab6134a7565b5b9250929050565b600080600060408486031215613acc57613acb613435565b5b6000613ada8682870161352d565b935050602084013567ffffffffffffffff811115613afb57613afa61343a565b5b613b0786828701613a5d565b92509250509250925092565b613b1c81613647565b82525050565b6000602082019050613b376000830184613b13565b92915050565b60008060408385031215613b5457613b53613435565b5b6000613b628582860161352d565b9250506020613b73858286016137cc565b9150509250929050565b60008060008060608587031215613b9757613b96613435565b5b6000613ba587828801613488565b9450506020613bb687828801613488565b935050604085013567ffffffffffffffff811115613bd757613bd661343a565b5b613be3878288016136ff565b925092505092959194509250565b613bfa8161391a565b82525050565b6000602082019050613c156000830184613bf1565b92915050565b60008083601f840112613c3157613c3061349d565b5b8235905067ffffffffffffffff811115613c4e57613c4d6134a2565b5b602083019150836020820283011115613c6a57613c696134a7565b5b9250929050565b60008060208385031215613c8857613c87613435565b5b600083013567ffffffffffffffff811115613ca657613ca561343a565b5b613cb285828601613c1b565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d24578082015181840152602081019050613d09565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d4c82613cea565b613d568185613cf5565b9350613d66818560208601613d06565b613d6f81613d30565b840191505092915050565b6000613d868383613d41565b905092915050565b6000602082019050919050565b6000613da682613cbe565b613db08185613cc9565b935083602082028501613dc285613cda565b8060005b85811015613dfe5784840389528151613ddf8582613d7a565b9450613dea83613d8e565b925060208a01995050600181019050613dc6565b50829750879550505050505092915050565b60006020820190508181036000830152613e2a8184613d9b565b905092915050565b600080600060608486031215613e4b57613e4a613435565b5b6000613e5986828701613488565b9350506020613e6a86828701613488565b9250506040613e7b86828701613a08565b9150509250925092565b6000604082019050613e9a6000830185613b13565b613ea7602083018461361d565b9392505050565b60008060408385031215613ec557613ec4613435565b5b6000613ed385828601613488565b9250506020613ee4858286016137cc565b9150509250929050565b613ef781613874565b8114613f0257600080fd5b50565b600081359050613f1481613eee565b92915050565b60008060008060608587031215613f3457613f33613435565b5b6000613f4287828801613488565b945050602085013567ffffffffffffffff811115613f6357613f6261343a565b5b613f6f878288016136ff565b93509350506040613f8287828801613f05565b91505092959194509250565b6000604082019050613fa36000830185613bf1565b613fb0602083018461361d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613ffc57613ffb613435565b5b600061400a84828501613a08565b91505092915050565b61401c8161345f565b82525050565b60006020820190506140376000830184614013565b92915050565b614046816139c5565b82525050565b60006060820190506140616000830186614013565b61406e6020830185614013565b61407b604083018461403d565b949350505050565b600082825260208201905092915050565b82818337600083830152505050565b60006140af8385614083565b93506140bc838584614094565b6140c583613d30565b840190509392505050565b600060208201905081810360008301526140eb8184866140a3565b90509392505050565b600081519050614103816139f1565b92915050565b60006020828403121561411f5761411e613435565b5b600061412d848285016140f4565b91505092915050565b600082825260208201905092915050565b60006141538385614136565b9350614160838584614094565b61416983613d30565b840190509392505050565b60006060820190506141896000830187614013565b6141966020830186614013565b81810360408301526141a9818486614147565b905095945050505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006141f8826141b4565b9150614203836141b4565b925082820390508181111561421b5761421a6141be565b5b92915050565b600080fd5b600080fd5b6000808585111561423f5761423e614221565b5b838611156142505761424f614226565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126142c1576142c0614295565b5b80840192508235915067ffffffffffffffff8211156142e3576142e261429a565b5b6020830192506001820236038313156142ff576142fe61429f565b5b509250929050565b600081905092915050565b600061431e8385614307565b935061432b838584614094565b82840190509392505050565b600061434282613cea565b61434c8185614307565b935061435c818560208601613d06565b80840191505092915050565b6000614375828587614312565b91506143818284614337565b9150819050949350505050565b60006080820190506143a36000830187614013565b6143b06020830186614013565b6143bd6040830185614013565b6143ca606083018461403d565b95945050505050565b60006143de82613874565b91506143e983613874565b9250828201905065ffffffffffff811115614407576144066141be565b5b92915050565b60006080820190506144226000830188613886565b61442f6020830187614013565b61443c6040830186614013565b818103606083015261444f818486614147565b90509695505050505050565b60006040820190506144706000830185614013565b61447d60208301846135e3565b9392505050565b6000602082019050614499600083018461403d565b92915050565b600082905092915050565b600082821b905092915050565b60006144c3838361449f565b826144ce81356139c5565b9250600482101561450e576145097fffffffff00000000000000000000000000000000000000000000000000000000836004036008026144aa565b831692505b505092915050565b600060408201905061452b6000830185614013565b614538602083018461403d565b9392505050565b600061454b8284614337565b915081905092915050565b600060608201905061456b600083018661361d565b6145786020830185613886565b6145856040830184613b13565b949350505050565b60006040820190506145a2600083018561361d565b6145af6020830184613886565b9392505050565b60006145c18261343f565b9050919050565b6145d1816145b6565b81146145dc57600080fd5b50565b6000813590506145ee816145c8565b92915050565b60006020828403121561460a57614609613435565b5b6000614618848285016145df565b91505092915050565b600061462c8261360d565b91506146378361360d565b9250828203905063ffffffff811115614653576146526141be565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600061469561469061468b84614659565b614670565b614663565b9050919050565b6146a58161467a565b82525050565b6146b4816141b4565b82525050565b60006040820190506146cf600083018561469c565b6146dc60208301846146ab565b939250505056fea26469706673582212205c35ea14450fa4d4ec770103df0168bec3ad451a27e0a3d72f028a2ad621877464736f6c63430008180033",
1178
- "deployedBytecode": "0x6080604052600436106101e35760003560e01c80636d5115bd11610102578063b700961311610095578063d22b598911610064578063d22b59891461077c578063d6bb62c6146107a5578063f801a698146107e2578063fe0776f514610820576101e3565b8063b7009613146106ac578063b7d2b162146106ea578063cc1b6c8114610713578063d1f856ee1461073e576101e3565b8063a166aa89116100d1578063a166aa89146105cc578063a64d95ce14610609578063abd9bd2a14610632578063ac9650d81461066f576101e3565b80636d5115bd1461051257806375b238fc1461054f578063853551b81461057a57806394c7d7ee146105a3576101e3565b806330cae1871161017a5780634665096d116101495780634665096d146104445780634c1da1e21461046f57806352962952146104ac578063530dd456146104d5576101e3565b806330cae187146103765780633adc277a1461039f5780633ca7c02a146103dc5780634136a33c14610407576101e3565b806318ff183c116101b657806318ff183c146102b45780631cff79cd146102dd57806325c471a01461030d5780633078f11414610336576101e3565b806308d6122d146101e85780630b0a93ba1461021157806312be87271461024e578063167bd3951461028b575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190613542565b610849565b005b34801561021d57600080fd5b50610238600480360381019061023391906135b6565b6108a3565b60405161024591906135f2565b60405180910390f35b34801561025a57600080fd5b50610275600480360381019061027091906135b6565b6108eb565b604051610282919061362c565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad919061367f565b610951565b005b3480156102c057600080fd5b506102db60048036038101906102d691906136bf565b610967565b005b6102f760048036038101906102f29190613755565b6109de565b604051610304919061362c565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f91906137e1565b610b31565b005b34801561034257600080fd5b5061035d60048036038101906103589190613834565b610b53565b60405161036d9493929190613895565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906138da565b610c78565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190613950565b610c8e565b6040516103d3919061397d565b60405180910390f35b3480156103e857600080fd5b506103f1610cda565b6040516103fe91906135f2565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613950565b610ce6565b60405161043b919061362c565b60405180910390f35b34801561045057600080fd5b50610459610d16565b604051610466919061362c565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613998565b610d21565b6040516104a3919061362c565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce91906138da565b610d9e565b005b3480156104e157600080fd5b506104fc60048036038101906104f791906135b6565b610db4565b60405161050991906135f2565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613a1d565b610dfc565b60405161054691906135f2565b60405180910390f35b34801561055b57600080fd5b50610564610eab565b60405161057191906135f2565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613ab3565b610eb0565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613755565b610f79565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613998565b611097565b6040516106009190613b22565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190613b3d565b6110ef565b005b34801561063e57600080fd5b5061065960048036038101906106549190613b7d565b611105565b6040516106669190613c00565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190613c71565b61113e565b6040516106a39190613e10565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613e32565b611322565b6040516106e1929190613e85565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190613834565b6113cf565b005b34801561071f57600080fd5b506107286113e6565b604051610735919061362c565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190613834565b6113f1565b604051610773929190613e85565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e9190613eae565b611485565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190613b7d565b61149b565b6040516107d9919061362c565b60405180910390f35b3480156107ee57600080fd5b5061080960048036038101906108049190613f1a565b61168e565b604051610817929190613f8e565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613834565b611872565b005b6108516118ed565b60005b8383905081101561089c576108918585858481811061087657610875613fb7565b5b905060200201602081019061088b9190613fe6565b8461199a565b806001019050610854565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b600061094a600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611aaf565b9050919050565b6109596118ed565b6109638282611ad8565b5050565b61096f6118ed565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b81526004016109a89190614022565b600060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050505050565b6000806109e9611bf3565b90506000806109fa83888888611bfb565b9150915081158015610a12575060008163ffffffff16145b15610a61578287610a238888611c7b565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610a589392919061404c565b60405180910390fd5b6000610a6f84898989611105565b90506000808363ffffffff16141580610a9957506000610a8e83610c8e565b65ffffffffffff1614155b15610aaa57610aa782611ca4565b90505b60006003549050610ac48a610abf8b8b611c7b565b611e5a565b600381905550610b198a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505034611e8d565b50806003819055508196505050505050509392505050565b610b396118ed565b610b4d8383610b47866108eb565b84611f5a565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450600460009054906101000a900460ff1615610c2a57610c198160000160069054906101000a90046dffffffffffffffffffffffffffff1661232b565b809450819550829650505050610c6e565b610c618160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661234e565b8094508195508296505050505b5092959194509250565b610c806118ed565b610c8a8282612371565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610cc581612480565b610ccf5780610cd2565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b6000610d976000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611aaf565b9050919050565b610da66118ed565b610db082826124bc565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b610eb86118ed565b600067ffffffffffffffff168367ffffffffffffffff161480610eee575067ffffffffffffffff80168367ffffffffffffffff16145b15610f3057826040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401610f2791906135f2565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610f6c9291906140d0565b60405180910390a2505050565b6000610f83611bf3565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190614109565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461107c57806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016110739190614022565b60405180910390fd5b61109061108b85838686611105565b611ca4565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b6110f76118ed565b61110182826125cb565b5050565b60008484848460405160200161111e9493929190614174565b604051602081830303815290604052805190602001209050949350505050565b6060600061114a611bf3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111ed57600036611187612742565b600036905061119691906141ed565b9080926111a59392919061422b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061123c565b600067ffffffffffffffff81111561120857611207614266565b5b6040519080825280601f01601f19166020018201604052801561123a5781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff81111561125b5761125a614266565b5b60405190808252806020026020018201604052801561128e57816020015b60608152602001906001900390816112795790505b50915060005b8484905081101561131a576112ef308686848181106112b6576112b5613fb7565b5b90506020028101906112c891906142a4565b856040516020016112db93929190614368565b604051602081830303815290604052612747565b83828151811061130257611301613fb7565b5b60200260200101819052508080600101915050611294565b505092915050565b60008061132e84611097565b1561133f57600080915091506113c7565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036113875761137c84846127cb565b6000915091506113c7565b60006113938585610dfc565b90506000806113a283896113f1565b91509150816113b3576000806113bf565b60008163ffffffff1614815b945094505050505b935093915050565b6113d76118ed565b6113e182826127e3565b505050565b600062069780905090565b60008067ffffffffffffffff80168467ffffffffffffffff160361141c57600160009150915061147e565b6000806114298686610b53565b50509150915060008265ffffffffffff16141580156114765750600460009054906101000a900460ff168061147557506114616129cf565b65ffffffffffff168265ffffffffffff1611155b5b819350935050505b9250929050565b61148d6118ed565b61149782826129df565b5050565b6000806114a6611bf3565b905060006114b48585611c7b565b905060006114c488888888611105565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361153b57806040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016115329190613c00565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146115f557600061157b6000856113f1565b509050600061159b6115956115908b87610dfc565b6108a3565b866113f1565b509050811580156115aa575080155b156115f257848a8a866040517f3fe2751c0000000000000000000000000000000000000000000000000000000081526004016115e9949392919061438e565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b600080600061169b611bf3565b905060006116ab82898989611bfb565b91505060008163ffffffff166116bf6129cf565b6116c991906143d3565b905060008263ffffffff161480611703575060008665ffffffffffff1611801561170257508065ffffffffffff168665ffffffffffff16105b5b156117525782896117148a8a611c7b565b6040517f81c6f24b0000000000000000000000000000000000000000000000000000000081526004016117499392919061404c565b60405180910390fd5b61176c8665ffffffffffff168265ffffffffffff16612b38565b955061177a838a8a8a611105565b945061178585612b51565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d60405161185e95949392919061440d565b60405180910390a350505094509492505050565b61187a611bf3565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118de576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e882826127e3565b505050565b60006118f7611bf3565b905060008061190d83611908612be3565b612bf0565b91509150816119955760008163ffffffff1603611979576000611936611931612be3565b612cde565b5091505083816040517ff07e038f00000000000000000000000000000000000000000000000000000000815260040161197092919061445b565b60405180910390fd5b61199361198e8430611989612be3565b611105565b611ca4565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611aa29190614484565b60405180910390a3505050565b600080611acb836dffffffffffffffffffffffffffff1661234e565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4857816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611b3f9190614022565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13882604051611be79190613b22565b60405180910390a25050565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c4557611c3c868585612bf0565b91509150611c72565b60048484905010611c6957611c648686611c5f8787611c7b565b611322565b611c6d565b6000805b915091505b94509492505050565b60008282600090600492611c919392919061422b565b90611c9c91906144b7565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff1603611d4a57836040517f60a299b0000000000000000000000000000000000000000000000000000000008152600401611d419190613c00565b60405180910390fd5b611d526129cf565b65ffffffffffff168265ffffffffffff161115611da657836040517f18cb6b7a000000000000000000000000000000000000000000000000000000008152600401611d9d9190613c00565b60405180910390fd5b611daf82612480565b15611df157836040517f78a5d6e4000000000000000000000000000000000000000000000000000000008152600401611de89190613c00565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b60008282604051602001611e6f929190614516565b60405160208183030381529060405280519060200120905092915050565b606081471015611ed457306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401611ecb9190614022565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051611efd919061453f565b60006040518083038185875af1925050503d8060008114611f3a576040519150601f19603f3d011682016040523d82523d6000602084013e611f3f565b606091505b5091509150611f4f8683836130c6565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff1603611fb457846040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401611fab91906135f2565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612172578463ffffffff166120566129cf565b61206091906143d3565b905060405180604001604052808265ffffffffffff16815260200161208a8663ffffffff16613155565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506122c1565b61221c846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166131659092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf86848660405161231693929190614556565b60405180910390a38192505050949350505050565b60008060006123418461233c6131f7565b61320c565b9250925092509193909250565b60008060006123648461235f6129cf565b613269565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff1614806123a7575067ffffffffffffffff80168267ffffffffffffffff16145b156123e957816040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016123e091906135f2565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b600061248a6129cf565b65ffffffffffff1661249a610d16565b63ffffffff16836124ab91906143d3565b65ffffffffffff1611159050919050565b600067ffffffffffffffff168267ffffffffffffffff1614806124f2575067ffffffffffffffff80168267ffffffffffffffff16145b1561253457816040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161252b91906135f2565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff160361262357816040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161261a91906135f2565b60405180910390fd5b6000612695826126316113e6565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166131659092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b48838360405161273592919061458d565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612771919061453f565b600060405180830381855af49150503d80600081146127ac576040519150601f19603f3d011682016040523d82523d6000602084013e6127b1565b606091505b50915091506127c18583836130c6565b9250505092915050565b60006127d78383611e5a565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361283d57826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161283491906135f2565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036128d257600090506129c9565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b60006129da426132c6565b905090565b6000612a68826129ed6113e6565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166131659092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c8383604051612b2b92919061458d565b60405180910390a2505050565b6000818311612b475781612b49565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff1614158015612b9d5750612b9b81612480565b155b15612bdf57816040517f813e9459000000000000000000000000000000000000000000000000000000008152600401612bd69190613c00565b60405180910390fd5b5050565b3660008036915091509091565b6000806004848490501015612c0b5760008091509150612cd6565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c5c57612c5130612c4c8686611c7b565b6127cb565b600091509150612cd6565b6000806000612c6b8787612cde565b92509250925082612c855760008094509450505050612cd6565b600080612c92848b6113f1565b9150915081612cac57600080965096505050505050612cd6565b612cc28363ffffffff168263ffffffff16612b38565b955060008663ffffffff1614965050505050505b935093915050565b60008060006004858590501015612cff5760008060009250925092506130bf565b6000612d0b8686611c7b565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612da457506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612df35750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e42575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e91575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15612ea7576001600080935093509350506130bf565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612f3e575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612f8d57506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15612fd75760008686600490602492612fa89392919061422b565b810190612fb591906145f4565b90506000612fc282610d21565b905060016000829550955095505050506130bf565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061306e575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156130b257600086866004906024926130899392919061422b565b81019061309691906135b6565b905060016130a382610db4565b600094509450945050506130bf565b6000806000935093509350505b9250925092565b6060826130db576130d682613320565b61314d565b60008251148015613103575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561314557836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161313c9190614022565b60405180910390fd5b81905061314e565b5b9392505050565b60008163ffffffff169050919050565b6000806000613183866dffffffffffffffffffffffffffff16611aaf565b905060006131c38563ffffffff168763ffffffff168463ffffffff16116131ab5760006131b8565b87846131b79190614621565b5b63ffffffff16612b38565b90508063ffffffff166131d46129cf565b6131de91906143d3565b92506131eb828785613365565b93505050935093915050565b60006132076407915ecc006132c6565b905090565b60008060008060008061322e886dffffffffffffffffffffffffffff166133b1565b9250925092508665ffffffffffff168165ffffffffffff16111561325457828282613259565b816000805b9550955095505050509250925092565b60008060008060008061328b886dffffffffffffffffffffffffffff166133f3565b9250925092508665ffffffffffff168165ffffffffffff1611156132b1578282826132b6565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613318576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161330f9291906146ba565b60405180910390fd5b819050919050565b6000815111156133335780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061346a8261343f565b9050919050565b61347a8161345f565b811461348557600080fd5b50565b60008135905061349781613471565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126134c2576134c161349d565b5b8235905067ffffffffffffffff8111156134df576134de6134a2565b5b6020830191508360208202830111156134fb576134fa6134a7565b5b9250929050565b600067ffffffffffffffff82169050919050565b61351f81613502565b811461352a57600080fd5b50565b60008135905061353c81613516565b92915050565b6000806000806060858703121561355c5761355b613435565b5b600061356a87828801613488565b945050602085013567ffffffffffffffff81111561358b5761358a61343a565b5b613597878288016134ac565b935093505060406135aa8782880161352d565b91505092959194509250565b6000602082840312156135cc576135cb613435565b5b60006135da8482850161352d565b91505092915050565b6135ec81613502565b82525050565b600060208201905061360760008301846135e3565b92915050565b600063ffffffff82169050919050565b6136268161360d565b82525050565b6000602082019050613641600083018461361d565b92915050565b60008115159050919050565b61365c81613647565b811461366757600080fd5b50565b60008135905061367981613653565b92915050565b6000806040838503121561369657613695613435565b5b60006136a485828601613488565b92505060206136b58582860161366a565b9150509250929050565b600080604083850312156136d6576136d5613435565b5b60006136e485828601613488565b92505060206136f585828601613488565b9150509250929050565b60008083601f8401126137155761371461349d565b5b8235905067ffffffffffffffff811115613732576137316134a2565b5b60208301915083600182028301111561374e5761374d6134a7565b5b9250929050565b60008060006040848603121561376e5761376d613435565b5b600061377c86828701613488565b935050602084013567ffffffffffffffff81111561379d5761379c61343a565b5b6137a9868287016136ff565b92509250509250925092565b6137be8161360d565b81146137c957600080fd5b50565b6000813590506137db816137b5565b92915050565b6000806000606084860312156137fa576137f9613435565b5b60006138088682870161352d565b935050602061381986828701613488565b925050604061382a868287016137cc565b9150509250925092565b6000806040838503121561384b5761384a613435565b5b60006138598582860161352d565b925050602061386a85828601613488565b9150509250929050565b600065ffffffffffff82169050919050565b61388f81613874565b82525050565b60006080820190506138aa6000830187613886565b6138b7602083018661361d565b6138c4604083018561361d565b6138d16060830184613886565b95945050505050565b600080604083850312156138f1576138f0613435565b5b60006138ff8582860161352d565b92505060206139108582860161352d565b9150509250929050565b6000819050919050565b61392d8161391a565b811461393857600080fd5b50565b60008135905061394a81613924565b92915050565b60006020828403121561396657613965613435565b5b60006139748482850161393b565b91505092915050565b60006020820190506139926000830184613886565b92915050565b6000602082840312156139ae576139ad613435565b5b60006139bc84828501613488565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6139fa816139c5565b8114613a0557600080fd5b50565b600081359050613a17816139f1565b92915050565b60008060408385031215613a3457613a33613435565b5b6000613a4285828601613488565b9250506020613a5385828601613a08565b9150509250929050565b60008083601f840112613a7357613a7261349d565b5b8235905067ffffffffffffffff811115613a9057613a8f6134a2565b5b602083019150836001820283011115613aac57613aab6134a7565b5b9250929050565b600080600060408486031215613acc57613acb613435565b5b6000613ada8682870161352d565b935050602084013567ffffffffffffffff811115613afb57613afa61343a565b5b613b0786828701613a5d565b92509250509250925092565b613b1c81613647565b82525050565b6000602082019050613b376000830184613b13565b92915050565b60008060408385031215613b5457613b53613435565b5b6000613b628582860161352d565b9250506020613b73858286016137cc565b9150509250929050565b60008060008060608587031215613b9757613b96613435565b5b6000613ba587828801613488565b9450506020613bb687828801613488565b935050604085013567ffffffffffffffff811115613bd757613bd661343a565b5b613be3878288016136ff565b925092505092959194509250565b613bfa8161391a565b82525050565b6000602082019050613c156000830184613bf1565b92915050565b60008083601f840112613c3157613c3061349d565b5b8235905067ffffffffffffffff811115613c4e57613c4d6134a2565b5b602083019150836020820283011115613c6a57613c696134a7565b5b9250929050565b60008060208385031215613c8857613c87613435565b5b600083013567ffffffffffffffff811115613ca657613ca561343a565b5b613cb285828601613c1b565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d24578082015181840152602081019050613d09565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d4c82613cea565b613d568185613cf5565b9350613d66818560208601613d06565b613d6f81613d30565b840191505092915050565b6000613d868383613d41565b905092915050565b6000602082019050919050565b6000613da682613cbe565b613db08185613cc9565b935083602082028501613dc285613cda565b8060005b85811015613dfe5784840389528151613ddf8582613d7a565b9450613dea83613d8e565b925060208a01995050600181019050613dc6565b50829750879550505050505092915050565b60006020820190508181036000830152613e2a8184613d9b565b905092915050565b600080600060608486031215613e4b57613e4a613435565b5b6000613e5986828701613488565b9350506020613e6a86828701613488565b9250506040613e7b86828701613a08565b9150509250925092565b6000604082019050613e9a6000830185613b13565b613ea7602083018461361d565b9392505050565b60008060408385031215613ec557613ec4613435565b5b6000613ed385828601613488565b9250506020613ee4858286016137cc565b9150509250929050565b613ef781613874565b8114613f0257600080fd5b50565b600081359050613f1481613eee565b92915050565b60008060008060608587031215613f3457613f33613435565b5b6000613f4287828801613488565b945050602085013567ffffffffffffffff811115613f6357613f6261343a565b5b613f6f878288016136ff565b93509350506040613f8287828801613f05565b91505092959194509250565b6000604082019050613fa36000830185613bf1565b613fb0602083018461361d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613ffc57613ffb613435565b5b600061400a84828501613a08565b91505092915050565b61401c8161345f565b82525050565b60006020820190506140376000830184614013565b92915050565b614046816139c5565b82525050565b60006060820190506140616000830186614013565b61406e6020830185614013565b61407b604083018461403d565b949350505050565b600082825260208201905092915050565b82818337600083830152505050565b60006140af8385614083565b93506140bc838584614094565b6140c583613d30565b840190509392505050565b600060208201905081810360008301526140eb8184866140a3565b90509392505050565b600081519050614103816139f1565b92915050565b60006020828403121561411f5761411e613435565b5b600061412d848285016140f4565b91505092915050565b600082825260208201905092915050565b60006141538385614136565b9350614160838584614094565b61416983613d30565b840190509392505050565b60006060820190506141896000830187614013565b6141966020830186614013565b81810360408301526141a9818486614147565b905095945050505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006141f8826141b4565b9150614203836141b4565b925082820390508181111561421b5761421a6141be565b5b92915050565b600080fd5b600080fd5b6000808585111561423f5761423e614221565b5b838611156142505761424f614226565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126142c1576142c0614295565b5b80840192508235915067ffffffffffffffff8211156142e3576142e261429a565b5b6020830192506001820236038313156142ff576142fe61429f565b5b509250929050565b600081905092915050565b600061431e8385614307565b935061432b838584614094565b82840190509392505050565b600061434282613cea565b61434c8185614307565b935061435c818560208601613d06565b80840191505092915050565b6000614375828587614312565b91506143818284614337565b9150819050949350505050565b60006080820190506143a36000830187614013565b6143b06020830186614013565b6143bd6040830185614013565b6143ca606083018461403d565b95945050505050565b60006143de82613874565b91506143e983613874565b9250828201905065ffffffffffff811115614407576144066141be565b5b92915050565b60006080820190506144226000830188613886565b61442f6020830187614013565b61443c6040830186614013565b818103606083015261444f818486614147565b90509695505050505050565b60006040820190506144706000830185614013565b61447d60208301846135e3565b9392505050565b6000602082019050614499600083018461403d565b92915050565b600082905092915050565b600082821b905092915050565b60006144c3838361449f565b826144ce81356139c5565b9250600482101561450e576145097fffffffff00000000000000000000000000000000000000000000000000000000836004036008026144aa565b831692505b505092915050565b600060408201905061452b6000830185614013565b614538602083018461403d565b9392505050565b600061454b8284614337565b915081905092915050565b600060608201905061456b600083018661361d565b6145786020830185613886565b6145856040830184613b13565b949350505050565b60006040820190506145a2600083018561361d565b6145af6020830184613886565b9392505050565b60006145c18261343f565b9050919050565b6145d1816145b6565b81146145dc57600080fd5b50565b6000813590506145ee816145c8565b92915050565b60006020828403121561460a57614609613435565b5b6000614618848285016145df565b91505092915050565b600061462c8261360d565b91506146378361360d565b9250828203905063ffffffff811115614653576146526141be565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600061469561469061468b84614659565b614670565b614663565b9050919050565b6146a58161467a565b82525050565b6146b4816141b4565b82525050565b60006040820190506146cf600083018561469c565b6146dc60208301846146ab565b939250505056fea26469706673582212205c35ea14450fa4d4ec770103df0168bec3ad451a27e0a3d72f028a2ad621877464736f6c63430008180033",
1171
+ "bytecode": "0x608060405234801561000f575f5ffd5b50604051612d75380380612d7583398101604081905261002e91610441565b6001600160a01b03811661005c57604051630409d6d160e11b81525f60048201526024015b60405180910390fd5b6100685f82818061006f565b50506104bc565b5f6002600160401b03196001600160401b038616016100ac5760405163061c6a4360e21b81526001600160401b0386166004820152602401610053565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156101a15763ffffffff85166100f76102b5565b6101019190610482565b905060405180604001604052808265ffffffffffff1681526020016101318663ffffffff166102c460201b60201c565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c16845282529091208351815494909201519092166601000000000000026001600160a01b031990931665ffffffffffff90911617919091179055610247565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a1684529091528120546101ed9166010000000000009091046001600160701b03169086906102cd565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316660100000000000002600160301b600160a01b03199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f6102bf42610373565b905090565b63ffffffff1690565b5f80806102e26001600160701b0387166103a9565b90505f61031d8563ffffffff168763ffffffff168463ffffffff1611610308575f610312565b61031288856104a0565b63ffffffff166103c7565b905063ffffffff811661032e6102b5565b6103389190610482565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f65ffffffffffff8211156103a5576040516306dfcc6560e41b81526030600482015260248101839052604401610053565b5090565b5f806103bd6001600160701b0384166103d7565b5090949350505050565b8082118183180281185b92915050565b5f80806103eb846103e66102b5565b6103f8565b9250925092509193909250565b6001600160501b03602083901c166001600160701b03831665ffffffffffff604085901c811690841681111561043057828282610434565b815f5f5b9250925092509250925092565b5f60208284031215610451575f5ffd5b81516001600160a01b0381168114610467575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff81811683821601908111156103d1576103d161046e565b63ffffffff82811682821603908111156103d1576103d161046e565b6128ac806104c95f395ff3fe6080604052600436106101db575f3560e01c80636d5115bd116100fd578063b700961311610092578063d22b598911610062578063d22b598914610636578063d6bb62c614610655578063f801a69814610674578063fe0776f5146106ad575f5ffd5b8063b7009613146105a8578063b7d2b162146105e3578063cc1b6c8114610602578063d1f856ee14610617575f5ffd5b8063a166aa89116100cd578063a166aa8914610501578063a64d95ce14610530578063abd9bd2a1461054f578063ac9650d81461057c575f5ffd5b80636d5115bd1461049157806375b238fc146104b0578063853551b8146104c357806394c7d7ee146104e2575f5ffd5b806330cae187116101735780634665096d116101435780634665096d146104035780634c1da1e2146104185780635296295214610437578063530dd45614610456575f5ffd5b806330cae1871461035c5780633adc277a1461037b5780633ca7c02a146103b15780634136a33c146103cb575f5ffd5b806318ff183c116101ae57806318ff183c146102b25780631cff79cd146102d157806325c471a0146102e45780633078f11414610303575f5ffd5b806308d6122d146101df5780630b0a93ba1461020057806312be87271461025f578063167bd39514610293575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f9366004612192565b6106cc565b005b34801561020b575f5ffd5b5061024261021a3660046121f4565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561026a575f5ffd5b5061027e6102793660046121f4565b61071e565b60405163ffffffff9091168152602001610256565b34801561029e575f5ffd5b506101fe6102ad36600461220d565b610758565b3480156102bd575f5ffd5b506101fe6102cc366004612248565b61076e565b61027e6102df3660046122b1565b6107d0565b3480156102ef575f5ffd5b506101fe6102fe366004612314565b6108fc565b34801561030e575f5ffd5b5061032261031d366004612356565b61091e565b604051610256949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b348015610367575f5ffd5b506101fe610376366004612370565b6109b7565b348015610386575f5ffd5b5061039a6103953660046123a1565b6109c9565b60405165ffffffffffff9091168152602001610256565b3480156103bc575f5ffd5b506102426001600160401b0381565b3480156103d6575f5ffd5b5061027e6103e53660046123a1565b5f90815260026020526040902054600160301b900463ffffffff1690565b34801561040e575f5ffd5b5062093a8061027e565b348015610423575f5ffd5b5061027e6104323660046123b8565b6109fa565b348015610442575f5ffd5b506101fe610451366004612370565b610a27565b348015610461575f5ffd5b506102426104703660046121f4565b6001600160401b039081165f90815260016020819052604090912001541690565b34801561049c575f5ffd5b506102426104ab3660046123e8565b610a39565b3480156104bb575f5ffd5b506102425f81565b3480156104ce575f5ffd5b506101fe6104dd366004612414565b610a73565b3480156104ed575f5ffd5b506101fe6104fc3660046122b1565b610b0a565b34801561050c575f5ffd5b5061052061051b3660046123b8565b610bb4565b6040519015158152602001610256565b34801561053b575f5ffd5b506101fe61054a36600461242f565b610bdb565b34801561055a575f5ffd5b5061056e610569366004612457565b610bed565b604051908152602001610256565b348015610587575f5ffd5b5061059b6105963660046124b7565b610c25565b60405161025691906124f5565b3480156105b3575f5ffd5b506105c76105c2366004612579565b610d0a565b60408051921515835263ffffffff909116602083015201610256565b3480156105ee575f5ffd5b506101fe6105fd366004612356565b610d8b565b34801561060d575f5ffd5b506206978061027e565b348015610622575f5ffd5b506105c7610631366004612356565b610da2565b348015610641575f5ffd5b506101fe6106503660046125c1565b610e26565b348015610660575f5ffd5b5061027e61066f366004612457565b610e38565b34801561067f575f5ffd5b5061069361068e3660046125dd565b610f8b565b6040805192835263ffffffff909116602083015201610256565b3480156106b8575f5ffd5b506101fe6106c7366004612356565b6110cc565b6106d46110f5565b5f5b828110156107175761070f858585848181106106f4576106f461264a565b9050602002016020810190610709919061265e565b8461116c565b6001016106d6565b5050505050565b6001600160401b0381165f9081526001602081905260408220015461075290600160801b90046001600160701b03166111ed565b92915050565b6107606110f5565b61076a828261120b565b5050565b6107766110f5565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015f604051808303815f87803b1580156107b6575f5ffd5b505af11580156107c8573d5f5f3e3d5ffd5b505050505050565b5f3381806107e08388888861127c565b91509150811580156107f6575063ffffffff8116155b1561084957828761080788886112cd565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f61085684898989610bed565b90505f63ffffffff831615158061087c5750610871826109c9565b65ffffffffffff1615155b1561088d5761088a826112e4565b90505b6003546108a38a61089e8b8b6112cd565b6113e2565b6003819055506108ea8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250349250611424915050565b506003559450505050505b9392505050565b6109046110f5565b61091883836109128661071e565b846114f0565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff1691908190819060ff825c161561098a57805461097e90600160301b90046001600160701b0316611736565b919550935091506109ad565b80546109a590600160301b90046001600160701b0316611757565b919550935091505b5092959194509250565b6109bf6110f5565b61076a828261176b565b5f8181526002602052604081205465ffffffffffff166109e88161180e565b6109f257806108f5565b5f9392505050565b6001600160a01b0381165f90815260208190526040812060010154610752906001600160701b03166111ed565b610a2f6110f5565b61076a828261183c565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610a7b6110f5565b6001600160401b0383161580610a9957506001600160401b03838116145b15610ac25760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610afd9291906126a1565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6d91906126bc565b6001600160e01b03191614610ba057604051630641fee960e31b81526001600160a01b0382166004820152602401610840565b610717610baf85838686610bed565b6112e4565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610be36110f5565b61076a82826118ed565b5f84848484604051602001610c0594939291906126d7565b604051602081830303815290604052805190602001209050949350505050565b604080515f815260208101909152606090826001600160401b03811115610c4e57610c4e612748565b604051908082528060200260200182016040528015610c8157816020015b6060815260200190600190039081610c6c5790505b5091505f5b83811015610d0257610cdd30868684818110610ca457610ca461264a565b9050602002810190610cb6919061275c565b85604051602001610cc99392919061279e565b6040516020818303038152906040526119fc565b838281518110610cef57610cef61264a565b6020908102919091010152600101610c86565b505092915050565b5f5f610d1584610bb4565b15610d2457505f905080610d83565b306001600160a01b03861603610d4857610d3e8484611a7e565b5f91509150610d83565b5f610d538585610a39565b90505f5f610d618389610da2565b9150915081610d71575f5f610d7b565b63ffffffff811615815b945094505050505b935093915050565b610d936110f5565b610d9d8282611a94565b505050565b5f8067fffffffffffffffe196001600160401b03851601610dc85750600190505f610e1f565b5f5f610dd4868661091e565b5050915091508165ffffffffffff165f14158015610e14575060ff5f5c1680610e145750610e00611b7d565b65ffffffffffff168265ffffffffffff1611155b93509150610e1f9050565b9250929050565b610e2e6110f5565b61076a8282611b8c565b5f3381610e4585856112cd565b90505f610e5488888888610bed565b5f8181526002602052604081205491925065ffffffffffff9091169003610e915760405163060a299b60e41b815260048101829052602401610840565b826001600160a01b0316886001600160a01b031614610f2a575f610eb55f85610da2565b5090505f610ecf610ec961021a8b87610a39565b86610da2565b50905081158015610ede575080155b15610f2757604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b031985166064820152608401610840565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f803381610f9b8289898961127c565b9150505f8163ffffffff16610fae611b7d565b610fb891906127c1565b905063ffffffff82161580610fee57505f8665ffffffffffff16118015610fee57508065ffffffffffff168665ffffffffffff16105b15610fff5782896108078a8a6112cd565b6110198665ffffffffffff168265ffffffffffff16611c47565b9550611027838a8a8a610bed565b945061103285611c56565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b4906110b8908a9088908f908f908f906127df565b60405180910390a350505094509492505050565b6001600160a01b0381163314610d9357604051635f159e6360e01b815260040160405180910390fd5b335f80611103838236611ca2565b9150915081610d9d578063ffffffff165f0361115d575f6111248136611d65565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b03821660248201529092506044019050610840565b610918610baf84305f36610bed565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f611201836001600160701b0316611757565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1389061127090841515815260200190565b60405180910390a25050565b5f80306001600160a01b038616036112a257611299868585611ca2565b915091506112c4565b600483106112be576112b986866105c287876112cd565b611299565b505f9050805b94509492505050565b5f6112db6004828486612721565b6108f591612824565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff1681830361132c5760405163060a299b60e41b815260048101859052602401610840565b611334611b7d565b65ffffffffffff168265ffffffffffff16111561136757604051630c65b5bd60e11b815260048101859052602401610840565b6113708261180e565b1561139157604051631e2975b960e21b815260048101859052602401610840565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b6060814710156114505760405163cf47918160e01b815247600482015260248101839052604401610840565b5f61145c858486611f4b565b905080801561147d57505f3d118061147d57505f856001600160a01b03163b115b156114925761148a611f60565b9150506108f5565b80156114bc57604051639996b31560e01b81526001600160a01b0386166004820152602401610840565b3d156114cf576114ca611f79565b6114e8565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f67fffffffffffffffe196001600160401b0386160161152e5760405163061c6a4360e21b81526001600160401b0386166004820152602401610840565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff161590811561161e578463ffffffff16611579611b7d565b61158391906127c1565b905060405180604001604052808265ffffffffffff1681526020016115b18663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff909116179190911790556116c8565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a16845290915281205461166791600160301b9091046001600160701b0316908690611f84565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f61174a8461174561202a565b612039565b9250925092509193909250565b5f5f5f61174a84611766611b7d565b61208b565b6001600160401b038216158061178957506001600160401b03828116145b156117b25760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b5f611817611b7d565b65ffffffffffff1661182c62093a80846127c1565b65ffffffffffff16111592915050565b6001600160401b038216158061185a57506001600160401b03828116145b156118835760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b0383160161192a5760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b0382165f9081526001602081905260408220015461196390600160801b90046001600160701b03168362069780611f84565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610afd908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f611a0984846120d7565b9050808015611a2a57505f3d1180611a2a57505f846001600160a01b03163b115b15611a3f57611a37611f60565b915050610752565b8015611a6957604051639996b31560e01b81526001600160a01b0385166004820152602401610840565b3d156114cf57611a77611f79565b5092915050565b5f611a8983836113e2565b600354149392505050565b5f67fffffffffffffffe196001600160401b03841601611ad25760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611b1357505f610752565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f611b87426120ea565b905090565b6001600160a01b0382165f90815260208190526040812060010154611bbe906001600160701b03168362069780611f84565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610afd565b5f8282188284110282186108f5565b5f8181526002602052604090205465ffffffffffff168015801590611c815750611c7f8161180e565b155b1561076a5760405163813e945960e01b815260048101839052602401610840565b5f806004831015611cb757505f905080610d83565b306001600160a01b03861603611cda57610d3e30611cd586866112cd565b611a7e565b5f5f5f611ce78787611d65565b92509250925082158015611cff5750611cff30610bb4565b15611d12575f5f94509450505050610d83565b5f5f611d1e848b610da2565b9150915081611d37575f5f965096505050505050610d83565b611d4d8363ffffffff168263ffffffff16611c47565b63ffffffff8116159b909a5098505050505050505050565b5f80806004841015611d7e57505f915081905080611f44565b5f611d8986866112cd565b90506001600160e01b031981166310a6aa3760e31b1480611dba57506001600160e01b031981166330cae18760e01b145b80611dd557506001600160e01b0319811663294b14a960e11b145b80611df057506001600160e01b03198116635326cae760e11b145b80611e0b57506001600160e01b0319811663d22b598960e01b145b15611e205760015f5f93509350935050611f44565b6001600160e01b0319811663063fc60f60e21b1480611e4f57506001600160e01b0319811663167bd39560e01b145b80611e6a57506001600160e01b031981166308d6122d60e01b145b15611ea9575f611e7e60246004888a612721565b810190611e8b91906123b8565b90505f611e97826109fa565b600196505f95509350611f4492505050565b6001600160e01b0319811663012e238d60e51b1480611ed857506001600160e01b03198116635be958b160e11b145b15611f30575f611eec60246004888a612721565b810190611ef991906121f4565b90506001611f22826001600160401b039081165f90815260016020819052604090912001541690565b5f9450945094505050611f44565b5f611f3b3083610a39565b5f935093509350505b9250925092565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f611f99866001600160701b03166111ed565b90505f611fd48563ffffffff168763ffffffff168463ffffffff1611611fbf575f611fc9565b611fc9888561285a565b63ffffffff16611c47565b90508063ffffffff16611fe5611b7d565b611fef91906127c1565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f611b876407915ecc006120ea565b5f808069ffffffffffffffffffff602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156120775782828261207b565b815f5f5b9550955095505050509250925092565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c81169084168111156120c6578282826120ca565b815f5f5b9250925092509250925092565b5f5f5f835160208501865af49392505050565b5f65ffffffffffff82111561211c576040516306dfcc6560e41b81526030600482015260248101839052604401610840565b5090565b6001600160a01b0381168114612134575f5ffd5b50565b5f5f83601f840112612147575f5ffd5b5081356001600160401b0381111561215d575f5ffd5b6020830191508360208260051b8501011115610e1f575f5ffd5b80356001600160401b038116811461218d575f5ffd5b919050565b5f5f5f5f606085870312156121a5575f5ffd5b84356121b081612120565b935060208501356001600160401b038111156121ca575f5ffd5b6121d687828801612137565b90945092506121e9905060408601612177565b905092959194509250565b5f60208284031215612204575f5ffd5b6108f582612177565b5f5f6040838503121561221e575f5ffd5b823561222981612120565b91506020830135801515811461223d575f5ffd5b809150509250929050565b5f5f60408385031215612259575f5ffd5b823561226481612120565b9150602083013561223d81612120565b5f5f83601f840112612284575f5ffd5b5081356001600160401b0381111561229a575f5ffd5b602083019150836020828501011115610e1f575f5ffd5b5f5f5f604084860312156122c3575f5ffd5b83356122ce81612120565b925060208401356001600160401b038111156122e8575f5ffd5b6122f486828701612274565b9497909650939450505050565b803563ffffffff8116811461218d575f5ffd5b5f5f5f60608486031215612326575f5ffd5b61232f84612177565b9250602084013561233f81612120565b915061234d60408501612301565b90509250925092565b5f5f60408385031215612367575f5ffd5b61226483612177565b5f5f60408385031215612381575f5ffd5b61238a83612177565b915061239860208401612177565b90509250929050565b5f602082840312156123b1575f5ffd5b5035919050565b5f602082840312156123c8575f5ffd5b81356108f581612120565b6001600160e01b031981168114612134575f5ffd5b5f5f604083850312156123f9575f5ffd5b823561240481612120565b9150602083013561223d816123d3565b5f5f5f60408486031215612426575f5ffd5b6122ce84612177565b5f5f60408385031215612440575f5ffd5b61244983612177565b915061239860208401612301565b5f5f5f5f6060858703121561246a575f5ffd5b843561247581612120565b9350602085013561248581612120565b925060408501356001600160401b0381111561249f575f5ffd5b6124ab87828801612274565b95989497509550505050565b5f5f602083850312156124c8575f5ffd5b82356001600160401b038111156124dd575f5ffd5b6124e985828601612137565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561256d57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f8301168801019650505060208201915060208401935060018101905061251b565b50929695505050505050565b5f5f5f6060848603121561258b575f5ffd5b833561259681612120565b925060208401356125a681612120565b915060408401356125b6816123d3565b809150509250925092565b5f5f604083850312156125d2575f5ffd5b823561244981612120565b5f5f5f5f606085870312156125f0575f5ffd5b84356125fb81612120565b935060208501356001600160401b03811115612615575f5ffd5b61262187828801612274565b909450925050604085013565ffffffffffff8116811461263f575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561266e575f5ffd5b81356108f5816123d3565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6126b4602083018486612679565b949350505050565b5f602082840312156126cc575f5ffd5b81516108f5816123d3565b6001600160a01b038581168252841660208201526060604082018190525f906127039083018486612679565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f5f8585111561272f575f5ffd5b8386111561273b575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e19843603018112612771575f5ffd5b8301803591506001600160401b0382111561278a575f5ffd5b602001915036819003821315610e1f575f5ffd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b65ffffffffffff81811683821601908111156107525761075261270d565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f906128199083018486612679565b979650505050505050565b80356001600160e01b03198116906004841015611a77576001600160e01b031960049490940360031b84901b1690921692915050565b63ffffffff82811682821603908111156107525761075261270d56fea2646970667358221220f20b442fa5ef89544bc9330c8ac9c2b7a5af99e381a3ceca3d062a124e75026364736f6c634300081e0033",
1172
+ "deployedBytecode": "0x6080604052600436106101db575f3560e01c80636d5115bd116100fd578063b700961311610092578063d22b598911610062578063d22b598914610636578063d6bb62c614610655578063f801a69814610674578063fe0776f5146106ad575f5ffd5b8063b7009613146105a8578063b7d2b162146105e3578063cc1b6c8114610602578063d1f856ee14610617575f5ffd5b8063a166aa89116100cd578063a166aa8914610501578063a64d95ce14610530578063abd9bd2a1461054f578063ac9650d81461057c575f5ffd5b80636d5115bd1461049157806375b238fc146104b0578063853551b8146104c357806394c7d7ee146104e2575f5ffd5b806330cae187116101735780634665096d116101435780634665096d146104035780634c1da1e2146104185780635296295214610437578063530dd45614610456575f5ffd5b806330cae1871461035c5780633adc277a1461037b5780633ca7c02a146103b15780634136a33c146103cb575f5ffd5b806318ff183c116101ae57806318ff183c146102b25780631cff79cd146102d157806325c471a0146102e45780633078f11414610303575f5ffd5b806308d6122d146101df5780630b0a93ba1461020057806312be87271461025f578063167bd39514610293575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f9366004612192565b6106cc565b005b34801561020b575f5ffd5b5061024261021a3660046121f4565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561026a575f5ffd5b5061027e6102793660046121f4565b61071e565b60405163ffffffff9091168152602001610256565b34801561029e575f5ffd5b506101fe6102ad36600461220d565b610758565b3480156102bd575f5ffd5b506101fe6102cc366004612248565b61076e565b61027e6102df3660046122b1565b6107d0565b3480156102ef575f5ffd5b506101fe6102fe366004612314565b6108fc565b34801561030e575f5ffd5b5061032261031d366004612356565b61091e565b604051610256949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b348015610367575f5ffd5b506101fe610376366004612370565b6109b7565b348015610386575f5ffd5b5061039a6103953660046123a1565b6109c9565b60405165ffffffffffff9091168152602001610256565b3480156103bc575f5ffd5b506102426001600160401b0381565b3480156103d6575f5ffd5b5061027e6103e53660046123a1565b5f90815260026020526040902054600160301b900463ffffffff1690565b34801561040e575f5ffd5b5062093a8061027e565b348015610423575f5ffd5b5061027e6104323660046123b8565b6109fa565b348015610442575f5ffd5b506101fe610451366004612370565b610a27565b348015610461575f5ffd5b506102426104703660046121f4565b6001600160401b039081165f90815260016020819052604090912001541690565b34801561049c575f5ffd5b506102426104ab3660046123e8565b610a39565b3480156104bb575f5ffd5b506102425f81565b3480156104ce575f5ffd5b506101fe6104dd366004612414565b610a73565b3480156104ed575f5ffd5b506101fe6104fc3660046122b1565b610b0a565b34801561050c575f5ffd5b5061052061051b3660046123b8565b610bb4565b6040519015158152602001610256565b34801561053b575f5ffd5b506101fe61054a36600461242f565b610bdb565b34801561055a575f5ffd5b5061056e610569366004612457565b610bed565b604051908152602001610256565b348015610587575f5ffd5b5061059b6105963660046124b7565b610c25565b60405161025691906124f5565b3480156105b3575f5ffd5b506105c76105c2366004612579565b610d0a565b60408051921515835263ffffffff909116602083015201610256565b3480156105ee575f5ffd5b506101fe6105fd366004612356565b610d8b565b34801561060d575f5ffd5b506206978061027e565b348015610622575f5ffd5b506105c7610631366004612356565b610da2565b348015610641575f5ffd5b506101fe6106503660046125c1565b610e26565b348015610660575f5ffd5b5061027e61066f366004612457565b610e38565b34801561067f575f5ffd5b5061069361068e3660046125dd565b610f8b565b6040805192835263ffffffff909116602083015201610256565b3480156106b8575f5ffd5b506101fe6106c7366004612356565b6110cc565b6106d46110f5565b5f5b828110156107175761070f858585848181106106f4576106f461264a565b9050602002016020810190610709919061265e565b8461116c565b6001016106d6565b5050505050565b6001600160401b0381165f9081526001602081905260408220015461075290600160801b90046001600160701b03166111ed565b92915050565b6107606110f5565b61076a828261120b565b5050565b6107766110f5565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015f604051808303815f87803b1580156107b6575f5ffd5b505af11580156107c8573d5f5f3e3d5ffd5b505050505050565b5f3381806107e08388888861127c565b91509150811580156107f6575063ffffffff8116155b1561084957828761080788886112cd565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f61085684898989610bed565b90505f63ffffffff831615158061087c5750610871826109c9565b65ffffffffffff1615155b1561088d5761088a826112e4565b90505b6003546108a38a61089e8b8b6112cd565b6113e2565b6003819055506108ea8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250349250611424915050565b506003559450505050505b9392505050565b6109046110f5565b61091883836109128661071e565b846114f0565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff1691908190819060ff825c161561098a57805461097e90600160301b90046001600160701b0316611736565b919550935091506109ad565b80546109a590600160301b90046001600160701b0316611757565b919550935091505b5092959194509250565b6109bf6110f5565b61076a828261176b565b5f8181526002602052604081205465ffffffffffff166109e88161180e565b6109f257806108f5565b5f9392505050565b6001600160a01b0381165f90815260208190526040812060010154610752906001600160701b03166111ed565b610a2f6110f5565b61076a828261183c565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610a7b6110f5565b6001600160401b0383161580610a9957506001600160401b03838116145b15610ac25760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610afd9291906126a1565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6d91906126bc565b6001600160e01b03191614610ba057604051630641fee960e31b81526001600160a01b0382166004820152602401610840565b610717610baf85838686610bed565b6112e4565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610be36110f5565b61076a82826118ed565b5f84848484604051602001610c0594939291906126d7565b604051602081830303815290604052805190602001209050949350505050565b604080515f815260208101909152606090826001600160401b03811115610c4e57610c4e612748565b604051908082528060200260200182016040528015610c8157816020015b6060815260200190600190039081610c6c5790505b5091505f5b83811015610d0257610cdd30868684818110610ca457610ca461264a565b9050602002810190610cb6919061275c565b85604051602001610cc99392919061279e565b6040516020818303038152906040526119fc565b838281518110610cef57610cef61264a565b6020908102919091010152600101610c86565b505092915050565b5f5f610d1584610bb4565b15610d2457505f905080610d83565b306001600160a01b03861603610d4857610d3e8484611a7e565b5f91509150610d83565b5f610d538585610a39565b90505f5f610d618389610da2565b9150915081610d71575f5f610d7b565b63ffffffff811615815b945094505050505b935093915050565b610d936110f5565b610d9d8282611a94565b505050565b5f8067fffffffffffffffe196001600160401b03851601610dc85750600190505f610e1f565b5f5f610dd4868661091e565b5050915091508165ffffffffffff165f14158015610e14575060ff5f5c1680610e145750610e00611b7d565b65ffffffffffff168265ffffffffffff1611155b93509150610e1f9050565b9250929050565b610e2e6110f5565b61076a8282611b8c565b5f3381610e4585856112cd565b90505f610e5488888888610bed565b5f8181526002602052604081205491925065ffffffffffff9091169003610e915760405163060a299b60e41b815260048101829052602401610840565b826001600160a01b0316886001600160a01b031614610f2a575f610eb55f85610da2565b5090505f610ecf610ec961021a8b87610a39565b86610da2565b50905081158015610ede575080155b15610f2757604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b031985166064820152608401610840565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f803381610f9b8289898961127c565b9150505f8163ffffffff16610fae611b7d565b610fb891906127c1565b905063ffffffff82161580610fee57505f8665ffffffffffff16118015610fee57508065ffffffffffff168665ffffffffffff16105b15610fff5782896108078a8a6112cd565b6110198665ffffffffffff168265ffffffffffff16611c47565b9550611027838a8a8a610bed565b945061103285611c56565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b4906110b8908a9088908f908f908f906127df565b60405180910390a350505094509492505050565b6001600160a01b0381163314610d9357604051635f159e6360e01b815260040160405180910390fd5b335f80611103838236611ca2565b9150915081610d9d578063ffffffff165f0361115d575f6111248136611d65565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b03821660248201529092506044019050610840565b610918610baf84305f36610bed565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f611201836001600160701b0316611757565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1389061127090841515815260200190565b60405180910390a25050565b5f80306001600160a01b038616036112a257611299868585611ca2565b915091506112c4565b600483106112be576112b986866105c287876112cd565b611299565b505f9050805b94509492505050565b5f6112db6004828486612721565b6108f591612824565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff1681830361132c5760405163060a299b60e41b815260048101859052602401610840565b611334611b7d565b65ffffffffffff168265ffffffffffff16111561136757604051630c65b5bd60e11b815260048101859052602401610840565b6113708261180e565b1561139157604051631e2975b960e21b815260048101859052602401610840565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b6060814710156114505760405163cf47918160e01b815247600482015260248101839052604401610840565b5f61145c858486611f4b565b905080801561147d57505f3d118061147d57505f856001600160a01b03163b115b156114925761148a611f60565b9150506108f5565b80156114bc57604051639996b31560e01b81526001600160a01b0386166004820152602401610840565b3d156114cf576114ca611f79565b6114e8565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f67fffffffffffffffe196001600160401b0386160161152e5760405163061c6a4360e21b81526001600160401b0386166004820152602401610840565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff161590811561161e578463ffffffff16611579611b7d565b61158391906127c1565b905060405180604001604052808265ffffffffffff1681526020016115b18663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff909116179190911790556116c8565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a16845290915281205461166791600160301b9091046001600160701b0316908690611f84565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f61174a8461174561202a565b612039565b9250925092509193909250565b5f5f5f61174a84611766611b7d565b61208b565b6001600160401b038216158061178957506001600160401b03828116145b156117b25760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b5f611817611b7d565b65ffffffffffff1661182c62093a80846127c1565b65ffffffffffff16111592915050565b6001600160401b038216158061185a57506001600160401b03828116145b156118835760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b0383160161192a5760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b0382165f9081526001602081905260408220015461196390600160801b90046001600160701b03168362069780611f84565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610afd908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f611a0984846120d7565b9050808015611a2a57505f3d1180611a2a57505f846001600160a01b03163b115b15611a3f57611a37611f60565b915050610752565b8015611a6957604051639996b31560e01b81526001600160a01b0385166004820152602401610840565b3d156114cf57611a77611f79565b5092915050565b5f611a8983836113e2565b600354149392505050565b5f67fffffffffffffffe196001600160401b03841601611ad25760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611b1357505f610752565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f611b87426120ea565b905090565b6001600160a01b0382165f90815260208190526040812060010154611bbe906001600160701b03168362069780611f84565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610afd565b5f8282188284110282186108f5565b5f8181526002602052604090205465ffffffffffff168015801590611c815750611c7f8161180e565b155b1561076a5760405163813e945960e01b815260048101839052602401610840565b5f806004831015611cb757505f905080610d83565b306001600160a01b03861603611cda57610d3e30611cd586866112cd565b611a7e565b5f5f5f611ce78787611d65565b92509250925082158015611cff5750611cff30610bb4565b15611d12575f5f94509450505050610d83565b5f5f611d1e848b610da2565b9150915081611d37575f5f965096505050505050610d83565b611d4d8363ffffffff168263ffffffff16611c47565b63ffffffff8116159b909a5098505050505050505050565b5f80806004841015611d7e57505f915081905080611f44565b5f611d8986866112cd565b90506001600160e01b031981166310a6aa3760e31b1480611dba57506001600160e01b031981166330cae18760e01b145b80611dd557506001600160e01b0319811663294b14a960e11b145b80611df057506001600160e01b03198116635326cae760e11b145b80611e0b57506001600160e01b0319811663d22b598960e01b145b15611e205760015f5f93509350935050611f44565b6001600160e01b0319811663063fc60f60e21b1480611e4f57506001600160e01b0319811663167bd39560e01b145b80611e6a57506001600160e01b031981166308d6122d60e01b145b15611ea9575f611e7e60246004888a612721565b810190611e8b91906123b8565b90505f611e97826109fa565b600196505f95509350611f4492505050565b6001600160e01b0319811663012e238d60e51b1480611ed857506001600160e01b03198116635be958b160e11b145b15611f30575f611eec60246004888a612721565b810190611ef991906121f4565b90506001611f22826001600160401b039081165f90815260016020819052604090912001541690565b5f9450945094505050611f44565b5f611f3b3083610a39565b5f935093509350505b9250925092565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f611f99866001600160701b03166111ed565b90505f611fd48563ffffffff168763ffffffff168463ffffffff1611611fbf575f611fc9565b611fc9888561285a565b63ffffffff16611c47565b90508063ffffffff16611fe5611b7d565b611fef91906127c1565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f611b876407915ecc006120ea565b5f808069ffffffffffffffffffff602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156120775782828261207b565b815f5f5b9550955095505050509250925092565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c81169084168111156120c6578282826120ca565b815f5f5b9250925092509250925092565b5f5f5f835160208501865af49392505050565b5f65ffffffffffff82111561211c576040516306dfcc6560e41b81526030600482015260248101839052604401610840565b5090565b6001600160a01b0381168114612134575f5ffd5b50565b5f5f83601f840112612147575f5ffd5b5081356001600160401b0381111561215d575f5ffd5b6020830191508360208260051b8501011115610e1f575f5ffd5b80356001600160401b038116811461218d575f5ffd5b919050565b5f5f5f5f606085870312156121a5575f5ffd5b84356121b081612120565b935060208501356001600160401b038111156121ca575f5ffd5b6121d687828801612137565b90945092506121e9905060408601612177565b905092959194509250565b5f60208284031215612204575f5ffd5b6108f582612177565b5f5f6040838503121561221e575f5ffd5b823561222981612120565b91506020830135801515811461223d575f5ffd5b809150509250929050565b5f5f60408385031215612259575f5ffd5b823561226481612120565b9150602083013561223d81612120565b5f5f83601f840112612284575f5ffd5b5081356001600160401b0381111561229a575f5ffd5b602083019150836020828501011115610e1f575f5ffd5b5f5f5f604084860312156122c3575f5ffd5b83356122ce81612120565b925060208401356001600160401b038111156122e8575f5ffd5b6122f486828701612274565b9497909650939450505050565b803563ffffffff8116811461218d575f5ffd5b5f5f5f60608486031215612326575f5ffd5b61232f84612177565b9250602084013561233f81612120565b915061234d60408501612301565b90509250925092565b5f5f60408385031215612367575f5ffd5b61226483612177565b5f5f60408385031215612381575f5ffd5b61238a83612177565b915061239860208401612177565b90509250929050565b5f602082840312156123b1575f5ffd5b5035919050565b5f602082840312156123c8575f5ffd5b81356108f581612120565b6001600160e01b031981168114612134575f5ffd5b5f5f604083850312156123f9575f5ffd5b823561240481612120565b9150602083013561223d816123d3565b5f5f5f60408486031215612426575f5ffd5b6122ce84612177565b5f5f60408385031215612440575f5ffd5b61244983612177565b915061239860208401612301565b5f5f5f5f6060858703121561246a575f5ffd5b843561247581612120565b9350602085013561248581612120565b925060408501356001600160401b0381111561249f575f5ffd5b6124ab87828801612274565b95989497509550505050565b5f5f602083850312156124c8575f5ffd5b82356001600160401b038111156124dd575f5ffd5b6124e985828601612137565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561256d57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f8301168801019650505060208201915060208401935060018101905061251b565b50929695505050505050565b5f5f5f6060848603121561258b575f5ffd5b833561259681612120565b925060208401356125a681612120565b915060408401356125b6816123d3565b809150509250925092565b5f5f604083850312156125d2575f5ffd5b823561244981612120565b5f5f5f5f606085870312156125f0575f5ffd5b84356125fb81612120565b935060208501356001600160401b03811115612615575f5ffd5b61262187828801612274565b909450925050604085013565ffffffffffff8116811461263f575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561266e575f5ffd5b81356108f5816123d3565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6126b4602083018486612679565b949350505050565b5f602082840312156126cc575f5ffd5b81516108f5816123d3565b6001600160a01b038581168252841660208201526060604082018190525f906127039083018486612679565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f5f8585111561272f575f5ffd5b8386111561273b575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e19843603018112612771575f5ffd5b8301803591506001600160401b0382111561278a575f5ffd5b602001915036819003821315610e1f575f5ffd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b65ffffffffffff81811683821601908111156107525761075261270d565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f906128199083018486612679565b979650505050505050565b80356001600160e01b03198116906004841015611a77576001600160e01b031960049490940360031b84901b1690921692915050565b63ffffffff82811682821603908111156107525761075261270d56fea2646970667358221220f20b442fa5ef89544bc9330c8ac9c2b7a5af99e381a3ceca3d062a124e75026364736f6c634300081e0033",
1179
1173
  "linkReferences": {},
1180
- "deployedLinkReferences": {}
1181
- }
1174
+ "deployedLinkReferences": {},
1175
+ "immutableReferences": {},
1176
+ "inputSourceName": "project/contracts/dependencies/AccessManager.sol",
1177
+ "buildInfoId": "solc-0_8_30-95f43f1788cfd8898b8023be4a1aea1d69744865"
1178
+ }