10 txs
25 calls
constructor
constructor(address arcadiaFactory, address positionManager, address permit2, address poolManager, address weth)
functions
accountInfo
viewfunction accountInfo(address account) view returns (uint64 maxClaimFee, uint64 maxSwapFee, uint64 upperSqrtPriceDeviation, uint64 lowerSqrtPriceDeviation, uint64 minLiquidityRatio)
accountToInitiator
viewfunction accountToInitiator(address owner, address account) view returns (address initiator)
ARCADIA_FACTORY
viewfunction ARCADIA_FACTORY() view returns (address)
isPoolBalanced
purefunction isPoolBalanced(uint256 sqrtPrice, tuple cache) pure returns (bool isBalanced)
isPositionManager
viewfunction isPositionManager(address positionManager) view returns (bool)
metaData
viewfunction metaData(address account) view returns (bytes data)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
compound
nonpayablefunction compound(address account_, tuple initiatorParams)
executeAction
nonpayablefunction executeAction(bytes actionTargetData) returns (tuple depositData)
setAccountInfo
nonpayablefunction setAccountInfo(address account_, address initiator, uint256 maxClaimFee, uint256 maxSwapFee, uint256 maxTolerance, uint256 minLiquidityRatio, bytes metaData_)
unlockCallback
payablefunction unlockCallback(bytes data) payable returns (bytes results)
events
AccountInfoSet
event AccountInfoSet(address indexed account, address indexed initiator)
Compound
event Compound(address indexed account, address indexed positionManager, uint256 id)
FeePaid
event FeePaid(address indexed account, address indexed receiver, address indexed asset, uint256 amount)
YieldClaimed
event YieldClaimed(address indexed account, address indexed asset, uint256 amount)
errors
InsufficientLiquidity
error InsufficientLiquidity()
InvalidInitiator
error InvalidInitiator()
InvalidPool
error InvalidPool()
InvalidPositionManager
error InvalidPositionManager()
InvalidRouter
error InvalidRouter()
InvalidValue
error InvalidValue()
NotAnAccount
error NotAnAccount()
OnlyAccount
error OnlyAccount()
OnlyAccountOwner
error OnlyAccountOwner()
OnlyPoolManager
error OnlyPoolManager()
Reentered
error Reentered()
UnbalancedPool
error UnbalancedPool()
creation bytecode
0x610120604052348015610010575f5ffd5b5060405161612438038061612483398101604081905261002f91610073565b6001600160a01b0394851660805292841660a05290831660c052821660e05216610100526100d4565b80516001600160a01b038116811461006e575f5ffd5b919050565b5f5f5f5f5f60a08688031215610087575f5ffd5b61009086610058565b945061009e60208701610058565b93506100ac60408701610058565b92506100ba60608701610058565b91506100c860808701610058565b90509295509295909350565b60805160a05160c05160e05161010051615f426101e25f395f818161123701528181611288015281816124880152818161251701528181612d3b01528181612d9301528181613f9a01528181613fbd015261410f01525f81816109f701528181610a4a01528181611661015281816116c80152818161176f015281816117bd01528181611871015281816118cd0152818161191b015281816119b201528181611a6d01528181611ced01528181611dc901528181613b600152613d7a01525f818161431f015261439f01525f818160f90152818161118d01528181611baa01528181611c4c0152818161211101528181612bce015261436401525f818161021901526104220152615f425ff3fe60806040526004361061009d575f3560e01c80637d5ad9cd116100625780637d5ad9cd146101e95780638cffa2771461020857806391dd73461461023b578063a129568d1461024e578063a7310b581461027a578063a89d6dd414610312575f5ffd5b80630686ddd9146100a85780630a73e391146100dd5780631204f52514610139578063150b7a02146101905780633d692da1146101c8575f5ffd5b366100a457005b5f5ffd5b3480156100b3575f5ffd5b506100c76100c2366004614f09565b610331565b6040516100d49190614f52565b60405180910390f35b3480156100e8575f5ffd5b506101296100f7366004614f09565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b60405190151581526020016100d4565b348015610144575f5ffd5b50610178610153366004614f64565b600360209081525f92835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020016100d4565b34801561019b575f5ffd5b506101af6101aa366004614fdf565b6103c8565b6040516001600160e01b031990911681526020016100d4565b3480156101d3575f5ffd5b506101e76101e236600461504c565b6103da565b005b3480156101f4575f5ffd5b506101e76102033660046150d4565b610754565b348015610213575f5ffd5b506101787f000000000000000000000000000000000000000000000000000000000000000081565b6100c761024936600461511c565b6109ea565b348015610259575f5ffd5b5061026d61026836600461511c565b610b17565b6040516100d4919061522b565b348015610285575f5ffd5b506102d8610294366004614f09565b600160208190525f918252604090912080549101546001600160401b0380831692600160401b8104821692600160801b8204831692600160c01b9092048216911685565b604080516001600160401b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0016100d4565b34801561031d575f5ffd5b5061012961032c3660046152ee565b6110c8565b60026020525f9081526040902080546103499061537e565b80601f01602080910402602001604051908101604052809291908181526020018280546103759061537e565b80156103c05780601f10610397576101008083540402835291602001916103c0565b820191905f5260205f20905b8154815290600101906020018083116103a357829003601f168201915b505050505081565b630a85bd0160e11b5b95945050505050565b5f546001600160a01b0316156104035760405163b5dfd9e560e01b815260040160405180910390fd5b604051630972932760e21b81526001600160a01b0389811660048301527f000000000000000000000000000000000000000000000000000000000000000016906325ca4c9c90602401602060405180830381865afa158015610467573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048b91906153c3565b6104a857604051630ea8370b60e41b815260040160405180910390fd5b5f886001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156104e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050a91906153de565b9050336001600160a01b03821614610535576040516312272fd360e11b815260040160405180910390fd5b670de0b6b3a76400008711806105525750670de0b6b3a764000086115b806105645750670de0b6b3a764000085115b806105765750670de0b6b3a764000084115b1561059457604051632a9ffab760e21b815260040160405180910390fd5b6001600160a01b038181165f9081526003602090815260408083208d8516845282529182902080546001600160a01b031916938c1693909317909255805160a0810182526001600160401b038a81168252891692810192909252810161061c61060588670de0b6b3a764000061540d565b61061790670de0b6b3a7640000615420565b6110e4565b6001600160401b0316815260200161063f61060588670de0b6b3a7640000615437565b6001600160401b0390811682528681166020928301526001600160a01b038c165f9081526001808452604080832086518154888801518985015160608b01519389166fffffffffffffffffffffffffffffffff1990931692909217600160401b91891691909102176001600160801b0316600160801b918816919091026001600160c01b031617600160c01b9187169190910217815560809096015195909101805467ffffffffffffffff1916959093169490941790915560029091522061070883858361548e565b50876001600160a01b0316896001600160a01b03167febc70f7c8d6a67b19e15e968cb908d21719e8ff9a778a71171fba931a618d05260405160405180910390a3505050505050505050565b5f546001600160a01b03161561077d5760405163b5dfd9e560e01b815260040160405180910390fd5b336001600160a01b031660035f846001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156107c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107eb91906153de565b6001600160a01b03908116825260208083019390935260409182015f90812087831682529093529120541614610834576040516317fb43e560e31b815260040160405180910390fd5b6108446100f76020830183614f09565b6108615760405163ed5f09f160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038416178155808061088d606085016040860161555d565b6001600160801b031611806108b957505f6108ae608085016060860161555d565b6001600160801b0316115b156108f2576108ec6108ce6020850185614f09565b6108de604086016020870161558c565b6001600160601b0316611188565b90925090505b5f6109776109036020860186614f09565b610913604087016020880161558c565b6001600160601b0316858561092e60608a0160408b0161555d565b6001600160801b031661094760808b0160608c0161555d565b6001600160801b0316338b604051602001610963929190615624565b6040516020818303038152906040526112b2565b60405162b9252f60e41b81529091506001600160a01b03861690630b9252f0906109a79030908590600401615705565b5f604051808303815f87803b1580156109be575f5ffd5b505af11580156109d0573d5f5f3e3d5ffd5b50505f80546001600160a01b031916905550505050505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a355760405163f655705d60e01b815260040160405180910390fd5b5f80610a4384860186615746565b915091505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3cd914c83856040518363ffffffff1660e01b8152600401610a9692919061585e565b6020604051808303815f875af1158015610ab2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad691906158a8565b905080604051602001610aeb91815260200190565b6040516020818303038152906040529350610b0e81835f0151846020015161162e565b50505092915050565b610b426040518060800160405280606081526020016060815260200160608152602001606081525090565b5f546001600160a01b03163314610b6c5760405163f3f6425d60e01b815260040160405180910390fd5b335f908152600160208181526040808420815160a08101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104851693820193909352600160c01b90920483166060830152909201541660808201529080610bdb85870187615937565b8051855160a0830151939550919350916001600160401b0391821691161180610c1d575083602001516001600160401b03168260c001516001600160401b0316115b15610c3b57604051632a9ffab760e21b815260040160405180910390fd5b5f610c538284602001516001600160601b0316611b17565b90505f816101200151516001600160401b03811115610c7457610c7461523d565b604051908082528060200260200182016040528015610c9d578160200160208202803683370190505b50905083604001516001600160801b0316815f81518110610cc057610cc0615a27565b60200260200101818152505083606001516001600160801b031681600181518110610ced57610ced615a27565b6020026020010181815250505f81516001600160401b03811115610d1357610d1361523d565b604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b5090505f610d4f88858860800151611e12565b9050610d60846101000151826110c8565b610d7d57604051633a8bf65960e01b815260040160405180910390fd5b610d97838387878a60a001516001600160401b0316611ed9565b610da283868661243a565b5f610e7189608001516001600160401b0316866040015162ffffff168960c001516001600160401b031688610100015186604001516001600160a01b031687606001516001600160a01b0316895f81518110610e0057610e00615a27565b60200260200101518b5f81518110610e1a57610e1a615a27565b6020026020010151610e2c9190615437565b8a600181518110610e3f57610e3f615a27565b60200260200101518c600181518110610e5a57610e5a615a27565b6020026020010151610e6c9190615437565b6125a7565b805190915015610eae578060200151835f81518110610e9257610e92615a27565b60200260200101818151610ea6919061540d565b905250610ede565b806020015183600181518110610ec657610ec6615a27565b60200260200101818151610eda919061540d565b9052505b610eec8484898885876126b3565b610ef5856127c0565b6001600160a01b03166101008601819052610f1090836110c8565b610f2d57604051633a8bf65960e01b815260040160405180910390fd5b5f5f825f0151610f9557845f81518110610f4957610f49615a27565b6020026020010151865f81518110610f6357610f63615a27565b6020026020010151610f759190615437565b86600181518110610f8857610f88615a27565b6020026020010151610fef565b855f81518110610fa757610fa7615a27565b602002602001015185600181518110610fc257610fc2615a27565b602002602001015187600181518110610fdd57610fdd615a27565b6020026020010151610fef9190615437565b91509150611000868989858561286f565b82604001518760e001516001600160801b031610156110325760405163bb55fd2760e01b815260040160405180910390fd5b61103d868989612d02565b5f61104b8b88888c8c612e1f565b90506110638989602001518a61012001518a856130c5565b9c50886001600160a01b0316336001600160a01b03167f6c7e7d4cb83a668aef31739dd35dc3fc3d5f31d62b69e438b7b24d35b40dcc638a602001516040516110ae91815260200190565b60405180910390a350505050505050505050505092915050565b80515f90831180156110dd5750816020015183105b9392505050565b60b581600160881b81106110fd5760409190911b9060801c5b690100000000000000000081106111195760209190911b9060401c5b6501000000000081106111315760109190911b9060201c5b630100000081106111475760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ba03aad856040518263ffffffff1660e01b81526004016111d991815260200190565b60c060405180830381865afa1580156111f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112189190615a3b565b5080516020820151909450925090506001600160a01b0383166112aa577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036112865760405162820f3560e61b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000092505b509250929050565b6060600184156112ca57806112c681615acc565b9150505b83156112de57806112da81615acc565b9150505b5f816001600160401b038111156112f7576112f761523d565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f826001600160401b0381111561133c5761133c61523d565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f836001600160401b038111156113815761138161523d565b6040519080825280602002602001820160405280156113aa578160200160208202803683370190505b5090505f846001600160401b038111156113c6576113c661523d565b6040519080825280602002602001820160405280156113ef578160200160208202803683370190505b5090508c845f8151811061140557611405615a27565b60200260200101906001600160a01b031690816001600160a01b0316815250508b835f8151811061143857611438615a27565b6020026020010181815250506001825f8151811061145857611458615a27565b6020026020010181815250506002815f8151811061147857611478615a27565b602090810291909101015260018915611503578b8560018151811061149f5761149f615a27565b60200260200101906001600160a01b031690816001600160a01b03168152505089836001815181106114d3576114d3615a27565b6020026020010181815250506001826001815181106114f4576114f4615a27565b60209081029190910101525060025b881561157c578a85828151811061151c5761151c615a27565b60200260200101906001600160a01b031690816001600160a01b0316815250508883828151811061154f5761154f615a27565b602002602001018181525050600182828151811061156f5761156f615a27565b6020026020010181815250505b5f604051806080016040528087815260200186815260200185815260200184815250905060606115cd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6115ef6040518060600160405280606081526020015f81526020015f81525090565b838282858f604051602001611608959493929190615ae4565b6040516020818303038152906040529a5050505050505050505050979650505050505050565b5f6116398460801d90565b600f0b121561183e57604051632961046560e21b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b1580156116a2575f5ffd5b505af11580156116b4573d5f5f3e3d5ffd5b505050506001600160a01b03821661176a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46116ff8560801d90565b61170890615baf565b6001600160801b03166040518263ffffffff1660e01b815260040160206040518083038185885af115801561173f573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061176491906158a8565b5061183e565b6117bb7f00000000000000000000000000000000000000000000000000000000000000006117988560801d90565b6117a190615baf565b6001600160a01b03851691906001600160801b03166133b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611818573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c91906158a8565b505b5f61184984600f0b90565b600f0b121561199c57604051632961046560e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b1580156118b2575f5ffd5b505af11580156118c4573d5f5f3e3d5ffd5b505050506119197f00000000000000000000000000000000000000000000000000000000000000006118f685600f0b90565b6118ff90615baf565b6001600160a01b03841691906001600160801b03166133b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611976573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199a91906158a8565b505b5f6119a78460801d90565b600f0b1315611a57577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630b0d9c0983306119eb8760801d90565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064015f604051808303815f87803b158015611a40575f5ffd5b505af1158015611a52573d5f5f3e3d5ffd5b505050505b5f611a6284600f0b90565b600f0b1315611b12577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630b0d9c098230611aa687600f0b90565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064015f604051808303815f87803b158015611afb575f5ffd5b505af1158015611b0d573d5f5f3e3d5ffd5b505050505b505050565b60408051610140810182525f808252602080830182905282840182905260608084018390526080840183905260a0840183905260c0840183905260e084018390526101008401929092526101208301829052835160028082529281018552929390830190803683370190505061012082015260208101829052604051637ba03aad60e01b8152600481018390525f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637ba03aad9060240160c060405180830381865afa158015611bf7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c1b9190615a3b565b91509150611c2c8160081c60020b90565b60020b60c0840152611c418160201c60020b90565b60020b60a08401525f7f0000000000000000000000000000000000000000000000000000000000000000611c788360081c60020b90565b611c858460201c60020b90565b60405160609390931b6bffffffffffffffffffffffff1916602084015260e891821b6034840152901b6037820152603a8101869052605a01604051602081830303815290604052805190602001209050611d14611ce38460a0902090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083613450565b6001600160801b031660e085015260808301516001600160a01b03168452825161012085015180515f90611d4a57611d4a615a27565b6001600160a01b0390921660209283029190910182015283015161012085015180516001908110611d7d57611d7d615a27565b6001600160a01b039092166020928302919091019091015260408084015162ffffff169085015260608084015160020b90850152611def611dbf8460a0902090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906134c6565b505060020b60808601526001600160a01b03166101008501525091949350505050565b604080516080810182525f8082526020820181905291810182905260608101919091526040518060800160405280611e6a86606001516001600160401b0316670de0b6b3a7640000866135789092919063ffffffff16565b8152602001611e9986604001516001600160401b0316670de0b6b3a7640000866135789092919063ffffffff16565b8152602001611eab8560c00151613593565b6001600160a01b03168152602001611ec68560a00151613593565b6001600160a01b03169052949350505050565b5f8261012001515f81518110611ef157611ef1615a27565b602002602001015190505f836101200151600181518110611f1457611f14615a27565b602002602001015190505f6001600160a01b03168461012001515f81518110611f3f57611f3f615a27565b60200260200101516001600160a01b031603611f75575f875f81518110611f6857611f68615a27565b6020026020010181815250505b6040805160028082528183019092525f91602082018180368337019050509050600160f81b815f81518110611fac57611fac615a27565b60200101906001600160f81b03191690815f1a905350601160f81b81600181518110611fda57611fda615a27565b60200101906001600160f81b03191690815f1a905350604080516002808252606082019092525f91816020015b60608152602001906001900390816120075790505060208088015160408051928301919091525f908201819052606082018190526080820181905260a08083015260c082015290915060e001604051602081830303815290604052815f8151811061207457612074615a27565b602090810291909101810191909152604080516001600160a01b038088169382019390935291851690820152306060820152608001604051602081830303815290604052816001815181106120cb576120cb615a27565b60200260200101819052505f82826040516020016120ea929190615bdc565b60408051601f198184030181529082905263dd46508f60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dd46508f906121489084904290600401615c51565b5f604051808303815f87803b15801561215f575f5ffd5b505af1158015612171573d5f5f3e3d5ffd5b505050505f612188866001600160a01b031661384b565b90505f8861012001516001815181106121a3576121a3615a27565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156121f1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221591906158a8565b905061225088670de0b6b3a76400008e5f8151811061223657612236615a27565b6020026020010151856122499190615437565b9190613578565b8b5f8151811061226257612262615a27565b60200260200101818151612276919061540d565b915081815250506122b088670de0b6b3a76400008e60018151811061229d5761229d615a27565b6020026020010151846122499190615437565b8b6001815181106122c3576122c3615a27565b602002602001018181516122d7919061540d565b90525061012089015180515f906122f0576122f0615a27565b60200260200101516001600160a01b0316336001600160a01b03167ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd78e5f8151811061233e5761233e615a27565b6020026020010151856123519190615437565b60405190815260200160405180910390a388610120015160018151811061237a5761237a615a27565b60200260200101516001600160a01b0316336001600160a01b03167ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd78e6001815181106123c9576123c9615a27565b6020026020010151846123dc9190615437565b60405190815260200160405180910390a3818c5f8151811061240057612400615a27565b602002602001018181525050808c60018151811061242057612420615a27565b602002602001018181525050505050505050505050505050565b5f6001600160a01b03168161012001515f8151811061245b5761245b615a27565b60200260200101516001600160a01b031603611b12576040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f991906158a8565b905080156125a157604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612560575f5ffd5b505af1158015612572573d5f5f3e3d5ffd5b5050505080845f8151811061258957612589615a27565b6020026020010181815161259d919061540d565b9052505b50505050565b6125d66040518060a001604052805f151581526020015f81526020015f81526020015f81526020015f81525090565b64e8d4a51000880287015f80806125f18a8a8a8a8a896138d2565b9250925092505f5f61263b8c8c8c886126135761260e878e61540d565b61261d565b61261d888e615437565b896126315761262c898e615437565b6139f3565b61262c888e61540d565b6001600160801b031690506126638f670de0b6b3a7640000836135789092919063ffffffff16565b91505f905061267b848e670de0b6b3a7640000613578565b6040805160a08101825296151587526020870182905286019290925250909103606083015260808201529a9950505050505050505050565b6060820151156127b8578360e00151515f036127a5575f612781835f0151856040015162ffffff166126e487613ab2565b876101000151866040015187606001518c5f8151811061270657612706615a27565b60200260200101518e5f8151811061272057612720615a27565b60200260200101516127329190615437565b8d60018151811061274557612745615a27565b60200260200101518f60018151811061276057612760615a27565b60200260200101516127729190615437565b8b606001518c60800151613b86565b9050805f0361279057506127b8565b61279f8785855f015184613c4f565b506127b8565b6127b88684845f01518760e00151613f3c565b505050505050565b5f5f6040518060a001604052808461012001515f815181106127e4576127e4615a27565b60200260200101516001600160a01b0316815260200184610120015160018151811061281257612812615a27565b60200260200101516001600160a01b03168152602001846040015162ffffff168152602001846060015160020b8152602001845f01516001600160a01b03168152509050612864611dbf8260a0902090565b509195945050505050565b5f5f6001600160a01b03168461012001515f8151811061289157612891615a27565b60200260200101516001600160a01b0316149050806128d1576128d18461012001515f815181106128c4576128c4615a27565b60200260200101516142d8565b6128ec8461012001516001815181106128c4576128c4615a27565b6129168461010001516129028660c00151613593565b61290f8760a00151613593565b86866139f3565b6001600160801b031660e085015261012084015180515f9190829061293d5761293d615a27565b602002602001015190505f85610120015160018151811061296057612960615a27565b602002602001015190505f60036001600160401b038111156129845761298461523d565b6040519080825280601f01601f1916602001820160405280156129ae576020820181803683370190505b5090505f60f81b815f815181106129c7576129c7615a27565b60200101906001600160f81b03191690815f1a905350600d60f81b816001815181106129f5576129f5615a27565b60200101906001600160f81b03191690815f1a905350601460f81b81600281518110612a2357612a23615a27565b60200101906001600160f81b03191690815f1a905350604080516003808252608082019092525f91816020015b6060815260200190600190039081612a50579050506020808a015160e0808c015160408051948501939093526001600160801b039081169284019290925260608301829052608083019190915260a0808301525f60c083015291925001604051602081830303815290604052815f81518110612ace57612ace615a27565b60200260200101819052508383604051602001612b019291906001600160a01b0392831681529116602082015260400190565b60405160208183030381529060405281600181518110612b2357612b23615a27565b60200260200101819052508330604051602001612b569291906001600160a01b0392831681529116602082015260400190565b60405160208183030381529060405281600281518110612b7857612b78615a27565b60200260200101819052505f85612b8f575f612b91565b875b90505f8383604051602001612ba7929190615bdc565b60408051601f198184030181529082905263dd46508f60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dd46508f908490612c079085904290600401615c51565b5f604051808303818588803b158015612c1e575f5ffd5b505af1158015612c30573d5f5f3e3d5ffd5b5050505050612c47866001600160a01b031661384b565b8c5f81518110612c5957612c59615a27565b602002602001018181525050896101200151600181518110612c7d57612c7d615a27565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612ccb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cef91906158a8565b8c60018151811061242057612420615a27565b5f6001600160a01b03168161012001515f81518110612d2357612d23615a27565b60200260200101516001600160a01b031603611b12577f00000000000000000000000000000000000000000000000000000000000000008161012001515f81518110612d7157612d71615a27565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0845f81518110612dd257612dd2615a27565b60200260200101516040518263ffffffff1660e01b81526004015f604051808303818588803b158015612e03575f5ffd5b505af1158015612e15573d5f5f3e3d5ffd5b5050505050505050565b602081015160405163095ea7b360e01b815233600482015260248101919091525f906001600160a01b0384169063095ea7b3906044015f604051808303815f87803b158015612e6c575f5ffd5b505af1158015612e7e573d5f5f3e3d5ffd5b505050505f600191505f5b86518110156130ba578361012001518181518110612ea957612ea9615a27565b60200260200101519150858181518110612ec557612ec5615a27565b6020026020010151878281518110612edf57612edf615a27565b60200260200101511115612f9257858181518110612eff57612eff615a27565b6020026020010151878281518110612f1957612f19615a27565b6020026020010151612f2b9190615437565b878281518110612f3d57612f3d615a27565b602002602001018181525050612f8033888381518110612f5f57612f5f615a27565b6020026020010151846001600160a01b03166143fa9092919063ffffffff16565b82612f8a81615acc565b935050612fea565b868181518110612fa457612fa4615a27565b6020026020010151868281518110612fbe57612fbe615a27565b6020026020010181815250505f878281518110612fdd57612fdd615a27565b6020026020010181815250505b5f868281518110612ffd57612ffd615a27565b60200260200101511115613042576130428887838151811061302157613021615a27565b6020026020010151846001600160a01b031661446f9092919063ffffffff16565b816001600160a01b0316886001600160a01b0316336001600160a01b03167f1b37fcc57f4b6029ca7b3a70af0104811f67c72fe73e8043575f03a01e05663189858151811061309357613093615a27565b60200260200101516040516130aa91815260200190565b60405180910390a4600101612e89565b505095945050505050565b6130f06040518060800160405280606081526020016060815260200160608152602001606081525090565b5f826001600160401b038111156131095761310961523d565b604051908082528060200260200182016040528015613132578160200160208202803683370190505b5090505f836001600160401b0381111561314e5761314e61523d565b604051908082528060200260200182016040528015613177578160200160208202803683370190505b5090505f846001600160401b038111156131935761319361523d565b6040519080825280602002602001820160405280156131bc578160200160208202803683370190505b5090505f856001600160401b038111156131d8576131d861523d565b604051908082528060200260200182016040528015613201578160200160208202803683370190505b50905089845f8151811061321757613217615a27565b60200260200101906001600160a01b031690816001600160a01b03168152505088835f8151811061324a5761324a615a27565b6020026020010181815250506001825f8151811061326a5761326a615a27565b6020026020010181815250506002815f8151811061328a5761328a615a27565b60200260200101818152505060018611156133895760015f5b8851811015613386575f8982815181106132bf576132bf615a27565b6020026020010151111561337e578981815181106132df576132df615a27565b60200260200101518683815181106132f9576132f9615a27565b60200260200101906001600160a01b031690816001600160a01b03168152505088818151811061332b5761332b615a27565b602002602001015184838151811061334557613345615a27565b602002602001018181525050600183838151811061336557613365615a27565b60209081029190910101528161337a81615acc565b9250505b6001016132a3565b50505b6040805160808101825294855260208501939093529183015260608201529695505050505050565b5f6001600160a01b0384166133e6575f5f5f5f85875af19050806133e1576133e1835f633d2cec6f60e21b6144ec565b6125a1565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806125a1576125a18463a9059cbb60e01b633c9fd93960e21b6144ec565b5f5f61345c8484614564565b604051631e2eaeaf60e01b8152600481018290529091506001600160a01b03861690631e2eaeaf90602401602060405180830381865afa1580156134a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d191906158a8565b5f5f5f5f5f6134d4866145b4565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa15801561351c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061354091906158a8565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f825f19048411830215820261358c575f5ffd5b5091020490565b60020b5f60ff82901d80830118620d89e88111156135bc576135bc6345c3193d60e11b846145f0565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b1860028216156135f8576ffff97272373d413259a46990580e213a0260801c5b6004821615613617576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613636576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613655576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613674576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613693576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156136b2576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156136d2576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156136f2576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613712576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613732576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613752576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613772576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613792576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156137b2576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156137d3576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156137f3576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613812576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561382f576b048a170391f7dc42444e8fa20260801c5b5f84131561383b575f19045b63ffffffff0160201c9392505050565b5f6001600160a01b038216613861575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156138a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138c791906158a8565b92915050565b919050565b5f5f5f8689106138f757600192508591506138f089600188876145ff565b90506139e7565b87891161390d578491506138f0895f87876145ff565b5f6139198a8a8a61465b565b90505f6139288b60018a6146a3565b90505f613935828961540d565b90505f61394b89670de0b6b3a764000084613578565b9050838110156139a057600196505f613970858a670de0b6b3a7640000819003613578565b670de0b6b3a76400000190506139898286038483613578565b9550506139998d6001878b6146f7565b95506139e2565b5f9650866139b7858a670de0b6b3a7640000613578565b670de0b6b3a76400000390506139d08583038483613578565b9650506139df8d5f888b6145ff565b94505b505050505b96509650969350505050565b5f836001600160a01b0316856001600160a01b03161115613a12579293925b846001600160a01b0316866001600160a01b031611613a4557613a3e613a39868686614751565b6147aa565b90506103d1565b836001600160a01b0316866001600160a01b03161015613a9a575f613a6b878686614751565b90505f613a798789866147bf565b9050613a91818310613a8b57816147aa565b826147aa565b925050506103d1565b613aa8613a398686856147bf565b9695505050505050565b5f5f6040518060a001604052808461012001515f81518110613ad657613ad6615a27565b60200260200101516001600160a01b03168152602001846101200151600181518110613b0457613b04615a27565b60200260200101516001600160a01b03168152602001846040015162ffffff168152602001846060015160020b8152602001845f01516001600160a01b031681525090506110dd613b568260a0902090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906147f8565b5f8080805b6064811015613c3a57613ba28e8e8e8e8a8a614811565b9250886001600160a01b0316836001600160a01b031610613bd357613bc98d8d8d8b6148ba565b9350505050613c41565b896001600160a01b0316836001600160a01b031611613bf857613bc98d8d8d8a6148f6565b613c058e8e8e8e87614927565b9096509450613c1a8e8b8b8b8b8b8b8a6149a1565b909750955091508115613c3257849350505050613c41565b600101613b8b565b5083925050505b9a9950505050505050505050565b5f6040518060600160405280841515815260200183815260200184613c9257613c8d600173fffd8963efd1fc6a506488495d951d5263988d26615c72565b613ca2565b613ca26401000276a36001615c91565b6001600160a01b03168152506040518060a001604052808661012001515f81518110613cd057613cd0615a27565b60200260200101516001600160a01b03168152602001866101200151600181518110613cfe57613cfe615a27565b60200260200101516001600160a01b03168152602001866040015162ffffff168152602001866060015160020b8152602001865f01516001600160a01b0316815250604051602001613d51929190615cb0565b60408051601f19818403018152908290526348c8949160e01b825291505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c8949190613daf908590600401614f52565b5f604051808303815f875af1158015613dca573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613df19190810190615d32565b90505f81806020019051810190613e0891906158a8565b905084613e4557613e198160801d90565b600f0b875f81518110613e2e57613e2e615a27565b6020026020010151613e40919061540d565b613e7f565b613e4f8160801d90565b600f0b613e5b90615d63565b875f81518110613e6d57613e6d615a27565b6020026020010151613e7f9190615437565b875f81518110613e9157613e91615a27565b60200260200101818152505084613ee257613eac81600f0b90565b600f0b613eb890615d63565b87600181518110613ecb57613ecb615a27565b6020026020010151613edd9190615437565b613f14565b613eec81600f0b90565b600f0b87600181518110613f0257613f02615a27565b6020026020010151613f14919061540d565b87600181518110613f2757613f27615a27565b60200260200101818152505050505050505050565b5f5f5f83806020019051810190613f539190615d7d565b9250925092505f8661012001515f81518110613f7157613f71615a27565b602090810291909101015190506001600160a01b03811615868015613f935750805b1561402c577f000000000000000000000000000000000000000000000000000000000000000091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004015f604051808303818588803b158015614014575f5ffd5b505af1158015614026573d5f5f3e3d5ffd5b50505050505b61406d85858961405b578a610120015160018151811061404e5761404e615a27565b602002602001015161405d565b845b6001600160a01b031691906143fa565b5f5f866001600160a01b0316856040516140879190615dd2565b5f604051808303815f865af19150503d805f81146140c0576040519150601f19603f3d011682016040523d82523d5f602084013e6140c5565b606091505b50915091508181906140f35760405162461bcd60e51b81526004016140ea9190614f52565b60405180910390fd5b5082156141d4576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015614164573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061418891906158a8565b6040518263ffffffff1660e01b81526004016141a691815260200190565b5f604051808303815f87803b1580156141bd575f5ffd5b505af11580156141cf573d5f5f3e3d5ffd5b505050505b6142048a61012001515f815181106141ee576141ee615a27565b60200260200101516001600160a01b031661384b565b8b5f8151811061421657614216615a27565b60200260200101818152505089610120015160018151811061423a5761423a615a27565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015614288573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142ac91906158a8565b8b6001815181106142bf576142bf615a27565b6020026020010181815250505050505050505050505050565b6001600160a01b0381165f9081526004602052604090205460ff166143f7576001600160a01b0381165f818152600460205260409020805460ff19166001179055614345907f00000000000000000000000000000000000000000000000000000000000000005f196143fa565b6040516387517c4560e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820181905265ffffffffffff60648301527f000000000000000000000000000000000000000000000000000000000000000016906387517c45906084015f604051808303815f87803b1580156143e0575f5ffd5b505af11580156143f2573d5f5f3e3d5ffd5b505050505b50565b816014528060345263095ea7b360601b5f5260205f604460105f875af13d1560015f51141716614466575f60345263095ea7b360601b5f525f38604460105f875af1508060345260205f604460105f875af13d1560015f5114171661446657633e3f8f735f526004601cfd5b5f603452505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806125a15760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016140ea565b6040516390bfb86560e01b8082526001600160a01b03851660048301526001600160e01b031984166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201526001600160e01b031984168260c4018201528160e40181fd5b5f5f61456f846145b4565b90505f61457d60068361540d565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f906145d3908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b815f528060020b60045260245ffd5b5f6001600160801b03851115614613575f5ffd5b5f61462b670de0b6b3a7640000848103908690613578565b9050846146495761464481600160c01b6002890a614b06565b613aa8565b613aa8816002880a600160c01b614b06565b5f6001600160801b0384111561466f575f5ffd5b8284035f836002870a8161468557614685615de8565b0460028702869003039050613aa882670de0b6b3a764000083613578565b5f826146d1576146cc826146bc6002600160601b615edf565b6146c7600288615edf565b614b06565b6146ef565b6146ef826146e0600287615edf565b6146c76002600160601b615edf565b949350505050565b5f6001600160801b0385111561470b575f5ffd5b5f8461472857614723846002880a600160c01b614b06565b61473a565b61473a84600160c01b6002890a614b06565b9050613aa881670de0b6b3a7640000858103613578565b5f826001600160a01b0316846001600160a01b03161115614770579192915b5f614792856001600160a01b0316856001600160a01b0316600160601b614b06565b90506103d183828787036001600160a01b0316614b06565b806001600160801b03811681146138cd575f5ffd5b5f826001600160a01b0316846001600160a01b031611156147de579192915b6146ef82600160601b8686036001600160a01b0316614b06565b5f5f614803836145b4565b90505f61345c60038361540d565b5f8061482484620f424089810390613578565b90505f5f89156148625761483b8789856001614ba2565b6001600160a01b031691506148528789875f614c91565b6001600160a01b03169050614892565b61486e8789875f614ba2565b6001600160a01b031691506148868789856001614c91565b6001600160a01b031690505b896148af576148aa8183016002808206151591040190565b613c41565b600282820104613c41565b5f806148cd83620f424088810390614d6f565b90505f6148dd8587846001614ba2565b90506148eb8186885f614d92565b979650505050505050565b5f8061490983620f424088810390614d6f565b90505f6149198587846001614c91565b90506148eb8582885f614dde565b5f5f8615614965575f61493d8486886001614dde565b905061494f81620f4240898103614d6f565b925061495d8486885f614d92565b915050614997565b5f6149738585886001614d92565b905061498581620f4240898103614d6f565b92506149938585885f614dde565b9150505b9550959350505050565b5f5f5f5f5f8c156149dc576149c6868c8a8d116149be575f614751565b8a8d03614751565b91506149d58c87898c016147bf565b9050614a08565b6149e9868c898d01614751565b9150614a058c878a8c116149fd575f6147bf565b8a8c036147bf565b90505b5f818310614a2857614a2382670de0b6b3a764000085613578565b614a3b565b614a3b83670de0b6b3a764000084613578565b670de0b6b3a7640000039050620f4240811082841015614aa5575f614a6b8f8a614a64886147aa565b6001614d92565b90508f614a7d57808c039a508a614a9e565b8b8111614a9657614a918a6009600a613578565b614a9a565b8b81035b9950895b5050614af1565b5f614abb898f614ab4876147aa565b6001614dde565b90508f614ae7578c8111614adb57614ad68a6009600a613578565b614adf565b8c81035b995089614aee565b808d039a508a5b50505b9e989d50969b50969950505050505050505050565b5f838302815f1985870982811083820303915050808411614b25575f5ffd5b805f03614b37575082900490506110dd565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f825f03614bb15750836146ef565b600160601b600160e01b03606085901b168215614c4b576001600160a01b03861684810290858281614be557614be5615de8565b0403614c1557818101828110614c1357614c0983896001600160a01b031683614e96565b93505050506146ef565b505b50614c438185614c2e6001600160a01b038a1683615eed565b614c38919061540d565b808204910615150190565b9150506146ef565b6001600160a01b038616848102908582041481831116614c725763f5c787f15f526004601cfd5b808203614c09614c8c846001600160a01b038b1684614e96565b614ec6565b5f8115614cf4575f6001600160a01b03841115614cc557614cc084600160601b876001600160801b0316614b06565b614cdc565b614cdc6001600160801b038616606086901b615eed565b9050614c43614c8c826001600160a01b03891661540d565b5f6001600160a01b03841115614d2157614d1c84600160601b876001600160801b0316614e96565b614d3e565b614d3e606085901b6001600160801b038716808204910615150190565b9050806001600160a01b03871611614d5d57634323a5555f526004601cfd5b6001600160a01b0386160390506146ef565b5f825f190484118302158202614d83575f5ffd5b50910281810615159190040190565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516614dc5818484614b06565b9350845f83858409111684019350505050949350505050565b5f836001600160a01b0316856001600160a01b03161115614dfd579293925b6001600160a01b038516614e175762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b038686031683614e6a57866001600160a01b0316614e578383896001600160a01b0316614b06565b81614e6457614e64615de8565b046148eb565b6148eb614e818383896001600160a01b0316614e96565b886001600160a01b0316808204910615150190565b5f614ea2848484614b06565b90508180614eb257614eb2615de8565b838509156110dd57600101806110dd575f5ffd5b806001600160a01b03811681146138cd576138cd6393dafdf160e01b805f5260045ffd5b6001600160a01b03811681146143f7575f5ffd5b80356138cd81614eea565b5f60208284031215614f19575f5ffd5b81356110dd81614eea565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6110dd6020830184614f24565b5f5f60408385031215614f75575f5ffd5b8235614f8081614eea565b91506020830135614f9081614eea565b809150509250929050565b5f5f83601f840112614fab575f5ffd5b5081356001600160401b03811115614fc1575f5ffd5b602083019150836020828501011115614fd8575f5ffd5b9250929050565b5f5f5f5f5f60808688031215614ff3575f5ffd5b8535614ffe81614eea565b9450602086013561500e81614eea565b93506040860135925060608601356001600160401b0381111561502f575f5ffd5b61503b88828901614f9b565b969995985093965092949392505050565b5f5f5f5f5f5f5f5f60e0898b031215615063575f5ffd5b883561506e81614eea565b9750602089013561507e81614eea565b965060408901359550606089013594506080890135935060a0890135925060c08901356001600160401b038111156150b4575f5ffd5b6150c08b828c01614f9b565b999c989b5096995094979396929594505050565b5f5f604083850312156150e5575f5ffd5b82356150f081614eea565b915060208301356001600160401b0381111561510a575f5ffd5b83016101008186031215614f90575f5ffd5b5f5f6020838503121561512d575f5ffd5b82356001600160401b03811115615142575f5ffd5b61514e85828601614f9b565b90969095509350505050565b5f8151808452602084019350602083015f5b8281101561518a57815186526020958601959091019060010161516c565b5093949350505050565b8051608080845281519084018190525f9160200190829060a08601905b808310156151dc5783516001600160a01b0316825260209384019360019390930192909101906151b1565b506020850151925085810360208701526151f6818461515a565b9250505060408301518482036040860152615211828261515a565b915050606083015184820360608601526103d1828261515a565b602081525f6110dd6020830184615194565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156152735761527361523d565b60405290565b60405160a081016001600160401b03811182821017156152735761527361523d565b60405161010081016001600160401b03811182821017156152735761527361523d565b604051601f8201601f191681016001600160401b03811182821017156152e6576152e661523d565b604052919050565b5f5f82840360a0811215615300575f5ffd5b833592506080601f1982011215615315575f5ffd5b50604051608081016001600160401b03811182821017156153385761533861523d565b604090815260208581013583529085013590820152606084013561535b81614eea565b6040820152608084013561536e81614eea565b6060820152919491935090915050565b600181811c9082168061539257607f821691505b6020821081036153b057634e487b7160e01b5f52602260045260245ffd5b50919050565b80151581146143f7575f5ffd5b5f602082840312156153d3575f5ffd5b81516110dd816153b6565b5f602082840312156153ee575f5ffd5b81516110dd81614eea565b634e487b7160e01b5f52601160045260245ffd5b808201808211156138c7576138c76153f9565b80820281158282048414176138c7576138c76153f9565b818103818111156138c7576138c76153f9565b601f821115611b1257805f5260205f20601f840160051c8101602085101561546f5750805b601f840160051c820191505b818110156143f2575f815560010161547b565b6001600160401b038311156154a5576154a561523d565b6154b9836154b3835461537e565b8361544a565b5f601f8411600181146154ea575f85156154d35750838201355b5f19600387901b1c1916600186901b1783556143f2565b5f83815260208120601f198716915b8281101561551957868501358255602094850194600190920191016154f9565b5086821015615535575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80356001600160801b03811681146138cd575f5ffd5b5f6020828403121561556d575f5ffd5b6110dd82615547565b80356001600160601b03811681146138cd575f5ffd5b5f6020828403121561559c575f5ffd5b6110dd82615576565b80356001600160401b03811681146138cd575f5ffd5b5f5f8335601e198436030181126155d0575f5ffd5b83016020810192503590506001600160401b038111156155ee575f5ffd5b803603821315614fd8575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0383168152604060208201525f823561564381614eea565b6001600160a01b0316604083015261565d60208401615576565b6001600160601b0316606083015261567760408401615547565b6001600160801b0316608083015261569160608401615547565b6001600160801b03811660a084015250608083013560c08301526156b760a084016155a5565b6001600160401b031660e08301526156d160c084016155a5565b6001600160401b03166101008301526156ed60e08401846155bb565b610100610120850152613aa8610140850182846155fc565b6001600160a01b03831681526040602082018190525f906146ef90830184614f24565b62ffffff811681146143f7575f5ffd5b8060020b81146143f7575f5ffd5b5f5f828403610100811215615759575f5ffd5b6060811215615766575f5ffd5b61576e615251565b8435615779816153b6565b815260208581013590820152604085013561579381614eea565b6040820152925060a0605f19820112156157ab575f5ffd5b506157b4615279565b60608401356157c281614eea565b815260808401356157d281614eea565b602082015260a08401356157e581615728565b604082015260c08401356157f881615738565b606082015260e084013561580b81614eea565b6080820152919491935090915050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b615868818461581b565b8151151560a0820152602082015160c082015260408201516001600160a01b031660e082015261012061010082018190525f908201526101400192915050565b5f602082840312156158b8575f5ffd5b5051919050565b5f6001600160401b038211156158d7576158d761523d565b50601f01601f191660200190565b5f82601f8301126158f4575f5ffd5b8135615907615902826158bf565b6152be565b81815284602083860101111561591b575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215615948575f5ffd5b823561595381614eea565b915060208301356001600160401b0381111561596d575f5ffd5b8301610100818603121561597f575f5ffd5b61598761529b565b61599082614efe565b815261599e60208301615576565b60208201526159af60408301615547565b60408201526159c060608301615547565b6060820152608082810135908201526159db60a083016155a5565b60a08201526159ec60c083016155a5565b60c082015260e08201356001600160401b03811115615a09575f5ffd5b615a15878285016158e5565b60e08301525080925050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f5f82840360c0811215615a4d575f5ffd5b60a0811215615a5a575f5ffd5b50615a63615279565b8351615a6e81614eea565b81526020840151615a7e81614eea565b60208201526040840151615a9181615728565b60408201526060840151615aa481615738565b60608201526080840151615ab781614eea565b608082015260a0939093015192949293505050565b5f60018201615add57615add6153f9565b5060010190565b60a081525f615af660a0830188615194565b8281036020840152615b088188615194565b8381036040850152865160608083528151908301819052919250602001905f9060808401905b80831015615b6557835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190615b2e565b5060208901516020850152604089015160408501528581036060870152615b8c8189614f24565b93505050508281036080840152615ba38185614f24565b98975050505050505050565b5f81600f0b6f7fffffffffffffffffffffffffffffff198103615bd457615bd46153f9565b5f0392915050565b604081525f615bee6040830185614f24565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015615c4357601f19868403018552615c2d838351614f24565b6020958601959093509190910190600101615c11565b509098975050505050505050565b604081525f615c636040830185614f24565b90508260208301529392505050565b6001600160a01b0382811682821603908111156138c7576138c76153f9565b6001600160a01b0381811683821601908111156138c7576138c76153f9565b825115158152602080840151908201526040808401516001600160a01b03169082015261010081016110dd606083018461581b565b5f82601f830112615cf4575f5ffd5b8151615d02615902826158bf565b818152846020838601011115615d16575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215615d42575f5ffd5b81516001600160401b03811115615d57575f5ffd5b6146ef84828501615ce5565b5f600160ff1b8201615d7757615d776153f9565b505f0390565b5f5f5f60608486031215615d8f575f5ffd5b8351615d9a81614eea565b6020850151604086015191945092506001600160401b03811115615dbc575f5ffd5b615dc886828701615ce5565b9150509250925092565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b6001815b6001841115615e3757808504811115615e1b57615e1b6153f9565b6001841615615e2957908102905b60019390931c928002615e00565b935093915050565b5f82615e4d575060016138c7565b81615e5957505f6138c7565b8160018114615e6f5760028114615e7957615e95565b60019150506138c7565b60ff841115615e8a57615e8a6153f9565b50506001821b6138c7565b5060208310610133831016604e8410600b8410161715615eb8575081810a6138c7565b615ec45f198484615dfc565b805f1904821115615ed757615ed76153f9565b029392505050565b5f6110dd60ff841683615e3f565b5f82615f0757634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220f894a0490bbf1f2f1b007e577bf172117c59aa2126b1b2ccb6c450db0526013b64736f6c634300081b0033000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e590000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b0000000000000000000000004200000000000000000000000000000000000006