2 txs
3 calls
constructor
constructor(address vault, uint32 pauseWindowDuration, string factoryVersion, string poolVersion)
functions
getActionId
viewfunction getActionId(bytes4 selector) view returns (bytes32)
getAuthorizer
viewfunction getAuthorizer() view returns (address)
getDefaultLiquidityManagement
purefunction getDefaultLiquidityManagement() pure returns (tuple liquidityManagement)
getDefaultPoolHooksContract
purefunction getDefaultPoolHooksContract() pure returns (address)
getDeploymentAddress
viewfunction getDeploymentAddress(bytes constructorArgs, bytes32 salt) view returns (address)
getHooks
viewfunction getHooks() view returns (address[] hooks)
getNewPoolPauseWindowEndTime
viewfunction getNewPoolPauseWindowEndTime() view returns (uint32)
getOriginalPauseWindowEndTime
viewfunction getOriginalPauseWindowEndTime() view returns (uint32)
getPauseWindowDuration
viewfunction getPauseWindowDuration() view returns (uint32)
getPoolCount
viewfunction getPoolCount() view returns (uint256)
getPools
viewfunction getPools() view returns (address[])
getPoolsInRange
viewfunction getPoolsInRange(uint256 start, uint256 count) view returns (address[] pools)
getPoolVersion
viewfunction getPoolVersion() view returns (string)
getVault
viewfunction getVault() view returns (address)
isDisabled
viewfunction isDisabled() view returns (bool)
isPoolFromFactory
viewfunction isPoolFromFactory(address pool) view returns (bool)
owner
viewfunction owner() view returns (address)
version
viewfunction version() view returns (string)
create
nonpayablefunction create(string name, string symbol, tuple[] tokens, uint256[] normalizedWeights, address poolHooksContract, bool enableDonation, bool disableUnbalancedLiquidity, bytes32 salt) returns (address pool)
createHook
nonpayablefunction createHook() returns (address hook)
disable
nonpayablefunction disable()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
FactoryDisabled
event FactoryDisabled()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolCreated
event PoolCreated(address indexed pool)
errors
Create2EmptyBytecode
error Create2EmptyBytecode()
Create2FailedDeployment
error Create2FailedDeployment()
Create2InsufficientBalance
error Create2InsufficientBalance(uint256 balance, uint256 needed)
Disabled
error Disabled()
HookNotRegistered
error HookNotRegistered()
IndexOutOfBounds
error IndexOutOfBounds()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PoolPauseWindowDurationOverflow
error PoolPauseWindowDurationOverflow()
SenderNotAllowed
error SenderNotAllowed()
StandardPoolWithCreator
error StandardPoolWithCreator()
creation bytecode
0x610100604052348015610010575f80fd5b506040516183ca3803806183ca83398101604081905261002f91610227565b33828585604051806020016100439061017d565b601f1982820381018352601f90910116604052306080526001600160a01b03831660a052815f61007963ffffffff8316426102c5565b905063ffffffff8111156100a0576040516368755a1160e01b815260040160405180910390fd5b63ffffffff91821660c0521660e05260036100bb828261036e565b505050506100ce8161011c60201b60201c565b506001600160a01b0381166100fc57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6101058161012c565b506008610112828261036e565b5050505050610428565b6004610128828261036e565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61454680613e8483390190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126101ad575f80fd5b81516001600160401b038111156101c6576101c661018a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101f4576101f461018a565b60405281815283820160200185101561020b575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f806080858703121561023a575f80fd5b84516001600160a01b0381168114610250575f80fd5b602086015190945063ffffffff81168114610269575f80fd5b60408601519093506001600160401b03811115610284575f80fd5b6102908782880161019e565b606087015190935090506001600160401b038111156102ad575f80fd5b6102b98782880161019e565b91505092959194509250565b808201808211156102e457634e487b7160e01b5f52601160045260245ffd5b92915050565b600181811c908216806102fe57607f821691505b60208210810361031c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561036957805f5260205f20601f840160051c810160208510156103475750805b601f840160051c820191505b81811015610366575f8155600101610353565b50505b505050565b81516001600160401b038111156103875761038761018a565b61039b8161039584546102ea565b84610322565b6020601f8211600181146103cd575f83156103b65750848201515b5f19600385901b1c1916600184901b178455610366565b5f84815260208120601f198516915b828110156103fc57878501518255602094850194600190920191016103dc565b508482101561041957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e0516139ff6104855f395f81816103510152818161098101526109b401525f61028f01525f81816102e70152818161073701528181610911015281816109d90152610d4601525f6106bb01526139ff5ff3fe608060405234801561000f575f80fd5b5060043610610184575f3560e01c806378da80cb116100dd578063d45fc7f011610088578063e9d56e1911610063578063e9d56e191461034f578063ec88806114610375578063f2fde38b1461037b575f80fd5b8063d45fc7f01461032c578063db035ebc1461033f578063e23572b514610347575f80fd5b80638da5cb5b116100b85780638da5cb5b1461030b5780638eec5d701461031c578063aaabadc514610324575f80fd5b806378da80cb1461028d578063851c1bb3146102c45780638d928af8146102e5575f80fd5b806354fd4d501161013d578063673a2a1f11610118578063673a2a1f146102725780636c57f5a91461027a578063715018a614610285575f80fd5b806354fd4d50146102275780635cd2525e1461022f5780636634b75314610237575f80fd5b80633f819b6f1161016d5780633f819b6f146101c757806344f6fec7146101dc57806353a72f7e14610207575f80fd5b8063193ad50f146101885780632f2770db146101bd575b5f80fd5b604080516080810182525f80825260208201819052818301819052606082015290516101b49190611012565b60405180910390f35b6101c561038e565b005b6101cf6103d5565b6040516101b49190611073565b6101ef6101ea36600461114c565b610465565b6040516001600160a01b0390911681526020016101b4565b61021a6102153660046111a1565b6104b7565b6040516101b491906111c1565b6101cf6105d9565b61021a6105e8565b610262610245366004611230565b6001600160a01b03165f9081526020819052604090205460ff1690565b60405190151581526020016101b4565b61021a610647565b60025460ff16610262565b6101c56106a5565b7f00000000000000000000000000000000000000000000000000000000000000005b60405163ffffffff90911681526020016101b4565b6102d76102d236600461124b565b6106b8565b6040519081526020016101b4565b7f00000000000000000000000000000000000000000000000000000000000000006101ef565b6005546001600160a01b03166101ef565b6001546102d7565b6101ef610734565b6101ef61033a366004611408565b6107ba565b6102af61097e565b6101ef6109d6565b7f00000000000000000000000000000000000000000000000000000000000000006102af565b5f6101ef565b6101c5610389366004611230565b610b12565b610396610b6d565b61039e610bdc565b6002805460ff191660011790556040517f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d50905f90a1565b6060600880546103e4906114fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610410906114fd565b801561045b5780601f106104325761010080835404028352916020019161045b565b820191905f5260205f20905b81548152906001019060200180831161043e57829003601f168201915b5050505050905090565b5f8060038460405160200161047b92919061154c565b60408051601f19818403018152919052805160208201209091505f61049f85610c19565b90506104ab8183610c3c565b93505050505b92915050565b6001546060908084106104f6576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105018486611607565b90508181111561051857610515858361161a565b93505b8367ffffffffffffffff81111561053157610531611085565b60405190808252806020026020018201604052801561055a578160200160208202803683370190505b5092505f5b848110156105d05760016105738288611607565b815481106105835761058361162d565b905f5260205f20015f9054906101000a90046001600160a01b03168482815181106105b0576105b061162d565b6001600160a01b039092166020928302919091019091015260010161055f565b50505092915050565b6060600480546103e4906114fd565b6060600780548060200260200160405190810160405280929190818152602001828054801561045b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610620575050505050905090565b6060600180548060200260200160405190810160405280929190818152602001828054801561045b57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610620575050505050905090565b6106ad610c4f565b6106b65f610c95565b565b5f7f0000000000000000000000000000000000000000000000000000000000000000826040516020016107179291909182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b604051602081830303815290604052805190602001209050919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aaabadc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610791573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b59190611641565b905090565b6001600160a01b0384165f9081526006602052604081205460ff1661080b576040517f2a1b540700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606080820183525f80835260208084018290526005546001600160a01b03168486015284516080808201875281830184905281870193909352891515818501528815158152855160a0810187528f81529182018e90528c51958201959095529182018a90526008805493949361095993928301919061088d906114fd565b80601f01602080910402602001604051908101604052809291908181526020018280546108b9906114fd565b80156109045780601f106108db57610100808354040283529160200191610904565b820191905f5260205f20905b8154815290600101906020018083116108e757829003601f168201915b50505050508152506109337f000000000000000000000000000000000000000000000000000000000000000090565b60405160200161094492919061165c565b60405160208183030381529060405285610cf3565b9250610970838a6509184e72a0005f868c87610d44565b505098975050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642106109b157505f90565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f7f0000000000000000000000000000000000000000000000000000000000000000604051610a0490611005565b6001600160a01b039091168152602001604051809103905ff080158015610a2d573d5f803e3d5ffd5b506040517ff2fde38b0000000000000000000000000000000000000000000000000000000081523360048201529091506001600160a01b0382169063f2fde38b906024015f604051808303815f87803b158015610a88575f80fd5b505af1158015610a9a573d5f803e3d5ffd5b5050506001600160a01b0382165f818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805473ffffffffffffffffffffffffffffffffffffffff191690911790555090565b610b1a610c4f565b6001600160a01b038116610b61576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610b6a81610c95565b50565b5f610b9a5f357fffffffff00000000000000000000000000000000000000000000000000000000166106b8565b9050610ba68133610ddb565b610b6a576040517f23dada5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460ff16156106b6576040517f75884cda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513360208201524691810191909152606081018290525f90608001610717565b5f610c48838330610e74565b9392505050565b6005546001600160a01b031633146106b6576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610b58565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80600384604051602001610d0992919061154c565b60405160208183030381529060405290505f610d2484610c19565b9050610d315f8284610e9d565b9250610d3c83610f66565b505092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eeec802f888888610d7e61097e565b898989896040518963ffffffff1660e01b8152600401610da598979695949392919061171d565b5f604051808303815f87803b158015610dbc575f80fd5b505af1158015610dce573d5f803e3d5ffd5b5050505050505050505050565b5f610de4610734565b6040517f9be2a884000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b0384811660248301523060448301529190911690639be2a88490606401602060405180830381865afa158015610e50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c489190611855565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f83471015610ee1576040517fe4bbecac00000000000000000000000000000000000000000000000000000000815247600482015260248101859052604401610b58565b81515f03610f1b576040517f4ca249dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282516020840186f590506001600160a01b038116610c48576040517f741752c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f6e610bdc565b6001600160a01b0381165f81815260208190526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff191684179055517f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a250565b6121598061187183390190565b815115158152602080830151151590820152604080830151151590820152606080830151151590820152608081016104b1565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c486020830184611045565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156110bc576110bc611085565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156110eb576110eb611085565b604052919050565b5f8067ffffffffffffffff84111561110d5761110d611085565b50601f8301601f1916602001611122816110c2565b915050828152838383011115611136575f80fd5b828260208301375f602084830101529392505050565b5f806040838503121561115d575f80fd5b823567ffffffffffffffff811115611173575f80fd5b8301601f81018513611183575f80fd5b611192858235602084016110f3565b95602094909401359450505050565b5f80604083850312156111b2575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156112015783516001600160a01b03168352602093840193909201916001016111da565b509095945050505050565b6001600160a01b0381168114610b6a575f80fd5b803561122b8161120c565b919050565b5f60208284031215611240575f80fd5b8135610c488161120c565b5f6020828403121561125b575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c48575f80fd5b5f82601f830112611299575f80fd5b610c48838335602085016110f3565b5f67ffffffffffffffff8211156112c1576112c1611085565b5060051b60200190565b8015158114610b6a575f80fd5b803561122b816112cb565b5f82601f8301126112f2575f80fd5b8135611305611300826112a8565b6110c2565b8082825260208201915060208360071b860101925085831115611326575f80fd5b602085015b838110156113a35760808188031215611342575f80fd5b61134a611099565b81356113558161120c565b8152602082013560028110611368575f80fd5b6020820152604082013561137b8161120c565b6040820152606082013561138e816112cb565b6060820152835260209092019160800161132b565b5095945050505050565b5f82601f8301126113bc575f80fd5b81356113ca611300826112a8565b8082825260208201915060208360051b8601019250858311156113eb575f80fd5b602085015b838110156113a35780358352602092830192016113f0565b5f805f805f805f80610100898b031215611420575f80fd5b883567ffffffffffffffff811115611436575f80fd5b6114428b828c0161128a565b985050602089013567ffffffffffffffff81111561145e575f80fd5b61146a8b828c0161128a565b975050604089013567ffffffffffffffff811115611486575f80fd5b6114928b828c016112e3565b965050606089013567ffffffffffffffff8111156114ae575f80fd5b6114ba8b828c016113ad565b9550506114c960808a01611220565b93506114d760a08a016112d8565b92506114e560c08a016112d8565b979a969950949793969295919450919260e001359150565b600181811c9082168061151157607f821691505b60208210810361152f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b5f8084545f8160011c9050600182168061156757607f821691505b60208210810361158557634e487b7160e01b5f52602260045260245ffd5b80801561159957600181146115ae576115dc565b60ff19841687528215158302870194506115dc565b5f898152602090205f5b848110156115d4578154898201526001909101906020016115b8565b505082870194505b505050506115ea8185611535565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104b1576104b16115f3565b818103818111156104b1576104b16115f3565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611651575f80fd5b8151610c488161120c565b604081525f835160a0604084015261167760e0840182611045565b90506020850151603f198483030160608501526116948282611045565b604087015160808601526060870151858203603f190160a08701528051808352602091820194505f93509101905b808310156116e557835182526020820191506020840193506001830192506116c2565b506080870151858203603f190160c087015292506117038184611045565b9350505050610c4860208301846001600160a01b03169052565b5f6101a082016001600160a01b038b1683526101a06020840152808a518083526101c08501915060208c0192505f5b818110156117c25783516001600160a01b03815116845260208101516002811061178457634e487b7160e01b5f52602160045260245ffd5b806020860152506001600160a01b0360408201511660408501526060810151151560608501525060808301925060208401935060018101905061174c565b5050604084018a905263ffffffff8916606085015291506117e09050565b941515608082015283516001600160a01b0390811660a0830152602080860151821660c0840152604095860151821660e0840152931661010082015281511515610120820152918101511515610140830152918201511515610160820152606090910151151561018090910152949350505050565b5f60208284031215611865575f80fd5b8151610c48816112cb56fe60a060405234801561000f575f80fd5b5060405161215938038061215983398101604081905261002e916100bf565b6001600160a01b038116608052338061006057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61006981610070565b50506100ec565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cf575f80fd5b81516001600160a01b03811681146100e5575f80fd5b9392505050565b6080516120556101045f395f61077901526120555ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c80635211fa77116100ad578063a0e8f5ac1161007d578063ba5f9f4011610063578063ba5f9f40146102ae578063d77153a7146102bc578063f2fde38b14610315575f80fd5b8063a0e8f5ac1461028a578063af905d151461029d575f80fd5b80635211fa771461022e578063715018a6146102415780638da5cb5b14610249578063976907cc1461026d575f80fd5b80632754888d116100e85780632754888d146101be57806338be241d146101e957806345421ec7146101ff5780634e0f5cc814610219575f80fd5b80630b89f182146101195780631699573b1461014157806318b6eb551461017f5780631c149e28146101ab575b5f80fd5b61012c610127366004611639565b610328565b60405190151581526020015b60405180910390f35b61017161014f366004611769565b600260209081525f938452604080852082529284528284209052825290205481565b604051908152602001610138565b61019461018d36600461179b565b505f908190565b604080519215158352602083019190915201610138565b61012c6101b93660046118a4565b610371565b6101db6101cc366004611917565b5f839850989650505050505050565b604051610138929190611a0a565b61012c6101f7366004611a59565b5f9392505050565b61012c61020d366004611ad4565b5f979650505050505050565b61022c610227366004611b9e565b610379565b005b61012c61023c366004611bc9565b6103d7565b61022c6104e2565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610138565b6101db61027b366004611c18565b5f849850989650505050505050565b610194610298366004611cc7565b6104f5565b6001546001600160a01b0316610255565b61012c61020d366004611d1d565b60408051610140810182525f8082526020820181905281830181905260a0820181905260c0820181905260e082018190526101008201819052610120820152600160808201819052606082015290516101389190611da4565b61022c610323366004611b9e565b610713565b5f61033161076e565b6040516001600160a01b0385169030907f9318967d1c69e5c4f5307aaa6e5525ed338991e9cff92b8e28b1ba7d253b8c15905f90a3506001949350505050565b5f5b92915050565b6103816107d2565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f3fcc43a9c520420634377f73f96e3cb0d3f5091c096cfa58567fab2e85dbb608905f90a250565b5f6103e061076e565b6001546001600160a01b03166103fc60c0850160a08601611b9e565b6001600160a01b03161461043c576040517fe5d185cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382165f908152600260209081526040808320606087013584528252808320608087013584529091529020544390036104a8576040517fb1137c4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b03165f908152600260209081526040808320606085013584528252808320608090940135835292905220439055600190565b6104ea6107d2565b6104f35f610817565b565b5f806104ff61076e565b5f846001600160a01b031663f89f27ed6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561053b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105629190810190611e6d565b90505f6105726020880188611f08565b600181111561058357610583611ef4565b036106115761060a6105986040880188611f23565b88606001358181106105ac576105ac611f70565b90506020020135610600838960800135815181106105cc576105cc611f70565b6020026020010151848a60600135815181106105ea576105ea611f70565b602002602001015161087390919063ffffffff16565b886020013561089b565b9150610696565b6106936106216040880188611f23565b886080013581811061063557610635611f70565b905060200201356106898389606001358151811061065557610655611f70565b6020026020010151848a608001358151811061067357610673611f70565b602002602001015161092090919063ffffffff16565b886020013561093b565b91505b5f856001600160a01b031663ce20ece76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190611f84565b905080831015610705578092505b600193505050935093915050565b61071b6107d2565b6001600160a01b038116610762576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61076b81610817565b50565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104f3576040517f089676d5000000000000000000000000000000000000000000000000000000008152336004820152602401610759565b5f546001600160a01b031633146104f3576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610759565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f80610887670de0b6b3a764000085611faf565b90506108938382611fda565b949350505050565b5f806108cf846108c96108af866002611faf565b6108b99089611ff9565b6108c3878a611ff9565b90610920565b90610998565b90505f6108ea856108c96108e3878a611ff9565b8990610920565b905061091661090e6108fc838561200c565b84610907888b611ff9565b9190610a4b565b869086610a4b565b9695505050505050565b5f61093483670de0b6b3a764000084610a4b565b9392505050565b5f80610963846108c961094f866002611faf565b610959908961200c565b6108c3878a61200c565b90505f610977856108c96108e3878a61200c565b905061091661098e670de0b6b3a76400008461200c565b6108c3838561200c565b5f670de0b6b3a764000082036109af575081610373565b6109c2670de0b6b3a76400006002611faf565b82036109d9576109d28384610aa9565b9050610373565b6109ec670de0b6b3a76400006004611faf565b8203610a11575f6109fd8485610aa9565b9050610a098182610aa9565b915050610373565b5f610a1c8484610ad5565b90505f610a2b82612710610aa9565b610a36906001611ff9565b9050610a428183611ff9565b92505050610373565b5f815f03610a85576040517f0a0c22c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a908486611faf565b9050600183600183030401811515029150509392505050565b5f80610ab58385611faf565b90506001670de0b6b3a76400006001830304018115150291505092915050565b5f815f03610aec5750670de0b6b3a7640000610373565b825f03610afa57505f610373565b60ff83901c15610b36576040517f022701e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82610b6a68056bc75e2d631000007f4000000000000000000000000000000000000000000000000000000000000000611fda565b8310610ba2576040517fd831731100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f670c7d713b49da000083138015610bc25750670f43fc2c04ee000083125b15610bf8575f610bd184610c73565b9050670de0b6b3a764000080820784020583670de0b6b3a764000083050201915050610c06565b81610c0284610d99565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff198112801590610c34575068070c1cc73b00c800008113155b610c6a576040517fa2f9f7e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109168161114b565b670de0b6b3a7640000025f806ec097ce7bc90715b34b9f1000000000808401906ec097ce7bc90715b34b9f0fffffffff1985010281610cb457610cb4611fc6565b0590505f6ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b5f80670de0b6b3a7640000831215610dd157826ec097ce7bc90715b34b9f100000000081610dc957610dc9611fc6565b059250600190505b5f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c00000000000008412610e2157770195e54c5dd42177f53a27172fa9ec630262827000000000840593506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e0000008412610e59576b1425982cf597cd205cef7380840593506803782dace9d9000000015b606493840293026e01855144814a7ff805980ff00840008412610ea1576e01855144814a7ff805980ff008400068056bc75e2d63100000850205935068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008412610edc576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000085020593506856bc75e2d631000000015b693f1fce3da636ea5cf8508412610f1357693f1fce3da636ea5cf85068056bc75e2d631000008502059350682b5e3af16b18800000015b690127fa27722cc06cc5e28412610f4a57690127fa27722cc06cc5e268056bc75e2d6310000085020593506815af1d78b58c400000015b68280e60114edb805d038412610f7f5768280e60114edb805d0368056bc75e2d631000008502059350680ad78ebc5ac6200000015b680ebc5fb417461211108412610faa57680ebc5fb4174612111068056bc75e2d631000009485020593015b6808f00f760a4b2db55d8412610fdf576808f00f760a4b2db55d68056bc75e2d6310000085020593506802b5e3af16b1880000015b6806f5f17757889379378412611014576806f5f177578893793768056bc75e2d63100000850205935068015af1d78b58c40000015b6806248f33704b2866038412611048576806248f33704b28660368056bc75e2d63100000850205935067ad78ebc5ac620000015b6805c548670b9510e7ac841261107c576805c548670b9510e7ac68056bc75e2d6310000085020593506756bc75e2d6310000015b5f68056bc75e2d63100000850168056bc75e2d6310000080870302816110a4576110a4611fc6565b0590505f68056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b8205016002025f60648683010590508661113a578061113e565b805f035b9998505050505050505050565b5f680238fd42c5cf03ffff19821215801561116f575068070c1cc73b00c800008213155b6111a5576040517fd4794efd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808312156111b857825f039250600190505b5f6806f05b59d3b200000084126111f757506806f05b59d3b1ffffff1990920191770195e54c5dd42177f53a27172fa9ec63026282700000000061122d565b6803782dace9d9000000841261122957506803782dace9d8ffffff19909201916b1425982cf597cd205cef738061122d565b5060015b6064939093029268056bc75e2d6310000068ad78ebc5ac62000000851261127d5768ad78ebc5ac61ffffff199094019368056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000085126112b9576856bc75e2d630ffffff199094019368056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000085126112f357682b5e3af16b187fffff199094019368056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000851261132d576815af1d78b58c3fffff199094019368056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000851261136657680ad78ebc5ac61fffff199094019368056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000851261139f5768056bc75e2d630fffff199094019368056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b188000085126113d8576802b5e3af16b187ffff199094019368056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000085126114115768015af1d78b58c3ffff199094019368056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008581019086906002908280020505918201919050600368056bc75e2d631000008883020505918201919050600468056bc75e2d631000008883020505918201919050600568056bc75e2d631000008883020505918201919050600668056bc75e2d631000008883020505918201919050600768056bc75e2d631000008883020505918201919050600868056bc75e2d631000008883020505918201919050600968056bc75e2d631000008883020505918201919050600a68056bc75e2d631000008883020505918201919050600b68056bc75e2d631000008883020505918201919050600c68056bc75e2d6310000088830205059182019190505f606468056bc75e2d63100000858502058602059050856115365780611556565b806ec097ce7bc90715b34b9f10000000008161155457611554611fc6565b055b98975050505050505050565b6001600160a01b038116811461076b575f80fd5b803561158181611562565b919050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156115bd576115bd611586565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156115ec576115ec611586565b604052919050565b5f67ffffffffffffffff82111561160d5761160d611586565b5060051b60200190565b6002811061076b575f80fd5b5f60808284031215611633575f80fd5b50919050565b5f805f8060e0858703121561164c575f80fd5b843561165781611562565b9350602085013561166781611562565b9250604085013567ffffffffffffffff811115611682575f80fd5b8501601f81018713611692575f80fd5b80356116a56116a0826115f4565b6115c3565b8082825260208201915060208360071b8501019250898311156116c6575f80fd5b6020840193505b8284101561174a576080848b0312156116e4575f80fd5b6116ec61159a565b84356116f781611562565b8152602085013561170781611617565b6020820152604085013561171a81611562565b604082015260608501358015158114611731575f80fd5b60608201528252608093909301926020909101906116cd565b8095505050505061175e8660608701611623565b905092959194509250565b5f805f6060848603121561177b575f80fd5b833561178681611562565b95602085013595506040909401359392505050565b5f602082840312156117ab575f80fd5b813567ffffffffffffffff8111156117c1575f80fd5b82016101808185031215610934575f80fd5b5f82601f8301126117e2575f80fd5b81356117f06116a0826115f4565b8082825260208201915060208360051b860101925085831115611811575f80fd5b602085015b8381101561182e578035835260209283019201611816565b5095945050505050565b5f82601f830112611847575f80fd5b813567ffffffffffffffff81111561186157611861611586565b611874601f8201601f19166020016115c3565b818152846020838601011115611888575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156118b5575f80fd5b823567ffffffffffffffff8111156118cb575f80fd5b6118d7858286016117d3565b925050602083013567ffffffffffffffff8111156118f3575f80fd5b6118ff85828601611838565b9150509250929050565b803560048110611581575f80fd5b5f805f805f805f80610100898b03121561192f575f80fd5b61193889611576565b975061194660208a01611576565b965061195460408a01611909565b955060608901359450608089013567ffffffffffffffff811115611976575f80fd5b6119828b828c016117d3565b94505060a089013567ffffffffffffffff81111561199e575f80fd5b6119aa8b828c016117d3565b93505060c089013567ffffffffffffffff8111156119c6575f80fd5b6119d28b828c016117d3565b92505060e089013567ffffffffffffffff8111156119ee575f80fd5b6119fa8b828c01611838565b9150509295985092959890939650565b5f604082018415158352604060208401528084518083526060850191506020860192505f5b81811015611a4d578351835260209384019390920191600101611a2f565b50909695505050505050565b5f805f60608486031215611a6b575f80fd5b833567ffffffffffffffff811115611a81575f80fd5b611a8d868287016117d3565b93505060208401359150604084013567ffffffffffffffff811115611ab0575f80fd5b611abc86828701611838565b9150509250925092565b803560058110611581575f80fd5b5f805f805f805f60e0888a031215611aea575f80fd5b8735611af581611562565b9650611b0360208901611576565b9550611b1160408901611ac6565b9450606088013567ffffffffffffffff811115611b2c575f80fd5b611b388a828b016117d3565b9450506080880135925060a088013567ffffffffffffffff811115611b5b575f80fd5b611b678a828b016117d3565b92505060c088013567ffffffffffffffff811115611b83575f80fd5b611b8f8a828b01611838565b91505092959891949750929550565b5f60208284031215611bae575f80fd5b813561093481611562565b5f60e08284031215611633575f80fd5b5f8060408385031215611bda575f80fd5b823567ffffffffffffffff811115611bf0575f80fd5b611bfc85828601611bb9565b9250506020830135611c0d81611562565b809150509250929050565b5f805f805f805f80610100898b031215611c30575f80fd5b611c3989611576565b9750611c4760208a01611576565b9650611c5560408a01611ac6565b9550606089013567ffffffffffffffff811115611c70575f80fd5b611c7c8b828c016117d3565b955050608089013567ffffffffffffffff811115611c98575f80fd5b611ca48b828c016117d3565b94505060a0890135925060c089013567ffffffffffffffff8111156119c6575f80fd5b5f805f60608486031215611cd9575f80fd5b833567ffffffffffffffff811115611cef575f80fd5b611cfb86828701611bb9565b9350506020840135611d0c81611562565b929592945050506040919091013590565b5f805f805f805f60e0888a031215611d33575f80fd5b8735611d3e81611562565b9650611d4c60208901611576565b9550611d5a60408901611909565b945060608801359350608088013567ffffffffffffffff811115611d7c575f80fd5b611d888a828b016117d3565b93505060a088013567ffffffffffffffff811115611b5b575f80fd5b81511515815261014081016020830151611dc2602084018215159052565b506040830151611dd6604084018215159052565b506060830151611dea606084018215159052565b506080830151611dfe608084018215159052565b5060a0830151611e1260a084018215159052565b5060c0830151611e2660c084018215159052565b5060e0830151611e3a60e084018215159052565b50610100830151611e5061010084018215159052565b50610120830151611e6661012084018215159052565b5092915050565b5f60208284031215611e7d575f80fd5b815167ffffffffffffffff811115611e93575f80fd5b8201601f81018413611ea3575f80fd5b8051611eb16116a0826115f4565b8082825260208201915060208360051b850101925086831115611ed2575f80fd5b6020840193505b82841015610916578351825260209384019390910190611ed9565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611f18575f80fd5b813561093481611617565b5f808335601e19843603018112611f38575f80fd5b83018035915067ffffffffffffffff821115611f52575f80fd5b6020019150600581901b3603821315611f69575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611f94575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761037357610373611f9b565b634e487b7160e01b5f52601260045260245ffd5b5f82611ff457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561037357610373611f9b565b8181038181111561037357610373611f9b56fea264697066735822122027806c7879cc9b420d311580c2188d41ccef9f253774cfabb5054b7706a7e59264736f6c634300081a0033a264697066735822122030227e6b42170e62f9744ca7e6b31a6e3cfa3d0046b9730a18f0eecf5ce7cbc464736f6c634300081a00336102c0604052348015610010575f80fd5b5060405161454638038061454683398101604081905261002f916104dd565b81608001518182845f015185602001518282604051806040016040528060018152602001603160f81b81525061006e5f836102c460201b90919060201c565b6101205261007d8160016102c4565b61014052815160208084019190912060e052815190820120610100524660a05261010960e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b031661016052600361012b8382610665565b5060046101388282610665565b505050506001600160a01b031661018052610152816102f6565b5060408201516101a081905260608301515161016e9190610306565b5f805b6101a0518160ff161015610293575f84606001518260ff16815181106101995761019961071f565b60200260200101519050662386f26fc100008110156101cb5760405163bd39358360e01b815260040160405180910390fd5b6101d58184610747565b92508160ff165f036101ec576101c0819052610282565b8160ff16600103610202576101e0819052610282565b8160ff1660020361021857610200819052610282565b8160ff1660030361022e57610220819052610282565b8160ff1660040361024457610240819052610282565b8160ff1660050361025a57610260819052610282565b8160ff1660060361027057610280819052610282565b8160ff16600703610282576102a08190525b5061028c8161075a565b9050610171565b50670de0b6b3a764000081146102bc57604051631ce788a760e11b815260040160405180910390fd5b5050506107d0565b5f6020835110156102df576102d883610326565b90506102f0565b816102ea8482610665565b5060ff90505b92915050565b60056103028282610665565b5050565b8082146103025760405163aaad13f760e01b815260040160405180910390fd5b5f80829050601f81511115610359578260405163305a27a960e01b81526004016103509190610778565b60405180910390fd5b8051610364826107ad565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156103a2576103a261036c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103d0576103d061036c565b604052919050565b5f82601f8301126103e7575f80fd5b81516001600160401b038111156104005761040061036c565b610413601f8201601f19166020016103a8565b818152846020838601011115610427575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f82601f830112610452575f80fd5b81516001600160401b0381111561046b5761046b61036c565b8060051b61047b602082016103a8565b91825260208185018101929081019086841115610496575f80fd5b6020860192505b838310156104b857825182526020928301929091019061049d565b9695505050505050565b80516001600160a01b03811681146104d8575f80fd5b919050565b5f80604083850312156104ee575f80fd5b82516001600160401b03811115610503575f80fd5b830160a08186031215610514575f80fd5b61051c610380565b81516001600160401b03811115610531575f80fd5b61053d878285016103d8565b82525060208201516001600160401b03811115610558575f80fd5b610564878285016103d8565b6020830152506040828101519082015260608201516001600160401b0381111561058c575f80fd5b61059887828501610443565b60608301525060808201516001600160401b038111156105b6575f80fd5b6105c2878285016103d8565b60808301525092506105d89050602084016104c2565b90509250929050565b600181811c908216806105f557607f821691505b60208210810361061357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561066057805f5260205f20601f840160051c8101602085101561063e5750805b601f840160051c820191505b8181101561065d575f815560010161064a565b50505b505050565b81516001600160401b0381111561067e5761067e61036c565b6106928161068c84546105e1565b84610619565b6020601f8211600181146106c4575f83156106ad5750848201515b5f19600385901b1c1916600184901b17845561065d565b5f84815260208120601f198516915b828110156106f357878501518255602094850194600190920191016106d3565b508482101561071057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156102f0576102f0610733565b5f60ff821660ff810361076f5761076f610733565b60010192915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610613575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051613c016109455f395f81816116ba0152611b5001525f818161168b0152611b0701525f818161165c0152611abe01525f818161162d0152611a7501525f81816115fe0152611a2c01525f81816115cf01526119e301525f81816115a0015261199a01525f8181611571015261195b01525f6118f401525f8181610c4501528181610e0001528181610eb201528181610f43015261127001525f81816104600152818161061d015281816106fb015281816107c1015281816108d40152818161095e01528181610ab901528181610db70152818161100c0152818161109601528181611124015281816111be0152818161142b015281816114ea015261176c01525f611d0b01525f611cdf01525f6118a001525f61187801525f6117d301525f6117fd01525f6118270152613c015ff3fe608060405234801561000f575f80fd5b506004361061024f575f3560e01c806372c981861161013d578063abb1dc44116100b8578063ce20ece711610088578063d505accf1161006e578063d505accf14610531578063dd62ed3e14610544578063f89f27ed14610557575f80fd5b8063ce20ece71461051d578063d335b0cf14610529575f80fd5b8063abb1dc44146104cd578063b156aa0a146104e5578063b677fa56146104fa578063c0bc6f3314610508575f80fd5b80638d928af81161010d578063984de9e8116100f3578063984de9e814610492578063a9059cbb146104a5578063aa6ca808146104b8575f80fd5b80638d928af81461045357806395d89b411461048a575f80fd5b806372c98186146103f55780637ecebe001461040857806381fa807c1461041b57806384b0196e14610438575f80fd5b8063313ce567116101cd5780635687f2b81161019d578063654cf15d11610183578063654cf15d146103cc578063679aefce146103da57806370a08231146103e2575f80fd5b80635687f2b81461039f578063627cdcb9146103b2575f80fd5b8063313ce5671461036b5780633644e5151461037a57806353b79bd71461038257806354fd4d5014610397575f80fd5b806318160ddd1161022257806323de66511161020857806323de665114610321578063273c1adf1461033657806330adf81f14610344575f80fd5b806318160ddd1461030657806323b872dd1461030e575f80fd5b806301ffc9a71461025357806306fdde03146102bd578063095ea7b3146102d257806316a0b3e0146102e5575b5f80fd5b6102a8610261366004612e78565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6102c561055f565b6040516102b49190612ee5565b6102a86102e0366004612f16565b6105ef565b6102f86102f3366004613082565b610696565b6040519081526020016102b4565b6102f86106cb565b6102a861031c3660046130cc565b610772565b61033461032f3660046130cc565b610838565b005b6729a2241af62c00006102f8565b6102f87f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b604051601281526020016102b4565b6102f8610892565b61038a61089b565b6040516102b49190613144565b6102c56109e7565b6103346103ad3660046130cc565b6109f6565b610334335f90815260026020526040902080546001019055565b67016345785d8a00006102f8565b6102f8610a46565b6102f86103f03660046131db565b610a79565b6102f8610403366004613279565b610b24565b6102f86104163660046131db565b610c05565b610423610c22565b604080519283526020830191909152016102b4565b610440610cc4565b6040516102b49796959493929190613350565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016102b4565b6102c5610d22565b6102f86104a03660046133cb565b610d31565b6102a86104b3366004612f16565b610d70565b6104c0610de8565b6040516102b49190613453565b6104d5610e73565b6040516102b49493929190613479565b6104ed610f2b565b6040516102b4919061353a565b6709b6e64a8ec600006102f8565b610510610fb6565b6040516102b4919061354c565b6509184e72a0006102f8565b6102f8611259565b61033461053f3660046135ca565b6112a7565b6102f861055236600461363b565b6114a2565b6104ed61155c565b60606003805461056e90613667565b80601f016020809104026020016040519081016040528092919081815260200182805461059a90613667565b80156105e55780601f106105bc576101008083540402835291602001916105e5565b820191905f5260205f20905b8154815290600101906020018083116105c857829003601f168201915b5050505050905090565b60405163e1f21c6760e01b81523360048201526001600160a01b038381166024830152604482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063e1f21c67906064015b6020604051808303815f875af1158015610666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068a91906136ae565b50600190505b92915050565b5f6106c38484815181106106ac576106ac6136c7565b60200260200101516106bd85611566565b84611710565b949350505050565b6040517fe4dc2aa40000000000000000000000000000000000000000000000000000000081523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e4dc2aa4906024015b602060405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d91906136db565b905090565b6040517f15dacbea0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0384811660248301528381166044830152606482018390525f917f0000000000000000000000000000000000000000000000000000000000000000909116906315dacbea906084016020604051808303815f875af1158015610809573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082d91906136ae565b506001949350505050565b610840611761565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161088591815260200190565b60405180910390a3505050565b5f61076d6117c7565b6108bf60405180606001604052806060815260200160608152602001606081525090565b60405163ca4f280360e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca4f2803906024015f60405180830381865afa158015610920573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109479190810190613756565b8152604051633f1b0def60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637e361bde906024015f60405180830381865afa1580156109aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109d191908101906137e3565b5060208201526109df6118f0565b604082015290565b60606005805461056e90613667565b6109fe611761565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161088591815260200190565b50565b5f6040517f18e79a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382811660248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec90604401602060405180830381865afa158015610b00573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069091906136db565b5f610b2d611761565b5f8260400151836060015181518110610b4857610b486136c7565b602002602001015190505f8360400151846080015181518110610b6d57610b6d6136c7565b602002602001015190505f6001811115610b8957610b89613465565b84516001811115610b9c57610b9c613465565b03610bd6575f610bcb83610bb38760600151611566565b84610bc18960800151611566565b8960200151611b94565b9350610c0092505050565b5f610bcb83610be88760600151611566565b84610bf68960800151611566565b8960200151611c3c565b919050565b6001600160a01b0381165f90815260026020526040812054610690565b60405163f29486a160e01b81523060048201525f90819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f29486a1906024016101a060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906138ed565b90508060400151925080606001519150509091565b5f6060805f805f6060610cd5611cd8565b610cdd611d04565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60606004805461056e90613667565b5f612e7081836001811115610d4857610d48613465565b14610d5557611d31610d59565b611dd85b90506106c3610d666118f0565b858363ffffffff16565b6040517fbeabacc80000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038381166024830152604482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063beabacc89060640161064a565b60405163ca4f280360e01b81523060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca4f2803906024015f60405180830381865afa158015610e4c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261076d9190810190613756565b6040517f67e0e0760000000000000000000000000000000000000000000000000000000081523060048201526060908190819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906367e0e076906024015f60405180830381865afa158015610ef6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f1d91908101906139a6565b935093509350935090919293565b6040516329ae7ec560e11b81523060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063535cfd8a906024015f60405180830381865afa158015610f8f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261076d9190810190613b01565b610ff76040518060e0016040528060608152602001606081526020015f81526020015f81526020015f151581526020015f151581526020015f151581525090565b6040516329ae7ec560e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063535cfd8a906024015f60405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261107f9190810190613b01565b8152604051633f1b0def60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637e361bde906024015f60405180830381865afa1580156110e2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261110991908101906137e3565b60208301525060405163b45090f960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b45090f990602401602060405180830381865afa158015611171573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119591906136db565b60408201526111a26106cb565b606082015260405163f29486a160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f29486a1906024016101a060405180830381865afa15801561120c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123091906138ed565b60e081015115156080840152610100810151151560a08401526101200151151560c08301525090565b60405163b45090f960e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b45090f99060240161072e565b834211156112e9576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886113348c6001600160a01b03165f90815260026020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61138e82611e45565b90505f61139d82878787611e8c565b9050896001600160a01b0316816001600160a01b0316146113fd576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b1660248201526044016112e0565b60405163e1f21c6760e01b81526001600160a01b038b811660048301528a81166024830152604482018a90527f0000000000000000000000000000000000000000000000000000000000000000169063e1f21c67906064016020604051808303815f875af1158015611471573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149591906136ae565b5050505050505050505050565b6040517f927da1050000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015282811660448301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063927da10590606401602060405180830381865afa158015611531573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155591906136db565b9392505050565b606061076d6118f0565b5f815f0361159557507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001036115c457507f0000000000000000000000000000000000000000000000000000000000000000919050565b816002036115f357507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160030361162257507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160040361165157507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160050361168057507f0000000000000000000000000000000000000000000000000000000000000000919050565b816006036116af57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816007036116de57507f0000000000000000000000000000000000000000000000000000000000000000919050565b6040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612e706001831161172457611eb8611728565b611ed85b90505f61174b611744670de0b6b3a7640000878563ffffffff16565b8590611eec565b90506117578682611f9f565b9695505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117c5576040517f089676d50000000000000000000000000000000000000000000000000000000081523360048201526024016112e0565b565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561181f57507f000000000000000000000000000000000000000000000000000000000000000046145b1561184957507f000000000000000000000000000000000000000000000000000000000000000090565b61076d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60607f00000000000000000000000000000000000000000000000000000000000000005f8167ffffffffffffffff81111561192d5761192d612f40565b604051908082528060200260200182016040528015611956578160200160208202803683370190505b5090507f0000000000000000000000000000000000000000000000000000000000000000815f8151811061198c5761198c6136c7565b6020026020010181815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106119cc576119cc6136c7565b6020026020010181815250506002821115610690577f000000000000000000000000000000000000000000000000000000000000000081600281518110611a1557611a156136c7565b6020026020010181815250506003821115610690577f000000000000000000000000000000000000000000000000000000000000000081600381518110611a5e57611a5e6136c7565b6020026020010181815250506004821115610690577f000000000000000000000000000000000000000000000000000000000000000081600481518110611aa757611aa76136c7565b6020026020010181815250506005821115610690577f000000000000000000000000000000000000000000000000000000000000000081600581518110611af057611af06136c7565b6020026020010181815250506006821115610690577f000000000000000000000000000000000000000000000000000000000000000081600681518110611b3957611b396136c7565b6020026020010181815250506007821115610690577f000000000000000000000000000000000000000000000000000000000000000081600781518110611b8257611b826136c7565b60200260200101818152505092915050565b5f611ba786670429d069189e0000611fcb565b821115611be0576040517f340a453300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611beb8388613b47565b90505f611bf88883611ed8565b90505f611c058887611eb8565b90505f611c128383611eec565b9050611c2e670de0b6b3a7640000828103908310028990611fcb565b9a9950505050505050505050565b5f611c4f84670429d069189e0000611fcb565b821115611c88576040517f64590b9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611c9d611c968487613b5a565b8690611ed8565b90505f611caa8588611ed8565b90505f611cb78383611eec565b90505f611ccc670de0b6b3a764000083613b5a565b9050611c2e8a82611f9f565b606061076d7f00000000000000000000000000000000000000000000000000000000000000005f611feb565b606061076d7f00000000000000000000000000000000000000000000000000000000000000006001611feb565b670de0b6b3a76400005f5b8351811015611d9e57611d94611d8d858381518110611d5d57611d5d6136c7565b6020026020010151858481518110611d7757611d776136c7565b602002602001015161208d90919063ffffffff16565b8390611fcb565b9150600101611d3c565b50805f03610690576040517f2654368900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a76400005f5b8351811015611d9e57611e3b611e34858381518110611e0457611e046136c7565b6020026020010151858481518110611e1e57611e1e6136c7565b6020026020010151611eec90919063ffffffff16565b8390611f9f565b9150600101611de3565b5f610690611e516117c7565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f80611e9c88888888612139565b925092509250611eac8282612201565b50909695505050505050565b5f80611ecc670de0b6b3a764000085613b6d565b90506106c38382613b98565b5f61155583670de0b6b3a764000084612308565b5f670de0b6b3a76400008203611f03575081610690565b611f16670de0b6b3a76400006002613b6d565b8203611f2d57611f268384611f9f565b9050610690565b611f40670de0b6b3a76400006004613b6d565b8203611f65575f611f518485611f9f565b9050611f5d8182611f9f565b915050610690565b5f611f708484612366565b90505f611f7f82612710611f9f565b611f8a906001613b47565b9050611f968183613b47565b92505050610690565b5f80611fab8385613b6d565b90506001670de0b6b3a76400006001830304018115150291505092915050565b5f80611fd78385613b6d565b90506106c3670de0b6b3a764000082613b98565b606060ff8314611ffe57611f2683612504565b81805461200a90613667565b80601f016020809104026020016040519081016040528092919081815260200182805461203690613667565b80156120815780601f1061205857610100808354040283529160200191612081565b820191905f5260205f20905b81548152906001019060200180831161206457829003601f168201915b50505050509050610690565b5f670de0b6b3a764000082036120a4575081610690565b6120b7670de0b6b3a76400006002613b6d565b82036120c757611f268384611fcb565b6120da670de0b6b3a76400006004613b6d565b82036120f7575f6120eb8485611fcb565b9050611f5d8182611fcb565b5f6121028484612366565b90505f61211182612710611f9f565b61211c906001613b47565b905080821015612130575f92505050610690565b90039050610690565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561217257505f915060039050826121f7565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156121c3573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166121ee57505f9250600191508290506121f7565b92505f91508190505b9450945094915050565b5f82600381111561221457612214613465565b0361221d575050565b600182600381111561223157612231613465565b03612268576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561227c5761227c613465565b036122b6576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016112e0565b60038260038111156122ca576122ca613465565b03612304576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016112e0565b5050565b5f815f03612342576040517f0a0c22c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61234d8486613b6d565b9050600183600183030401811515029150509392505050565b5f815f0361237d5750670de0b6b3a7640000610690565b825f0361238b57505f610690565b60ff83901c156123c7576040517f022701e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826123fb68056bc75e2d631000007f4000000000000000000000000000000000000000000000000000000000000000613b98565b8310612433576040517fd831731100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f670c7d713b49da0000831380156124535750670f43fc2c04ee000083125b15612489575f61246284612541565b9050670de0b6b3a764000080820784020583670de0b6b3a764000083050201915050612497565b8161249384612667565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff1981128015906124c5575068070c1cc73b00c800008113155b6124fb576040517fa2f9f7e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61175781612a19565b60605f61251083612e30565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b670de0b6b3a7640000025f806ec097ce7bc90715b34b9f1000000000808401906ec097ce7bc90715b34b9f0fffffffff198501028161258257612582613b84565b0590505f6ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b5f80670de0b6b3a764000083121561269f57826ec097ce7bc90715b34b9f10000000008161269757612697613b84565b059250600190505b5f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000084126126ef57770195e54c5dd42177f53a27172fa9ec630262827000000000840593506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e0000008412612727576b1425982cf597cd205cef7380840593506803782dace9d9000000015b606493840293026e01855144814a7ff805980ff0084000841261276f576e01855144814a7ff805980ff008400068056bc75e2d63100000850205935068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a70084126127aa576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000085020593506856bc75e2d631000000015b693f1fce3da636ea5cf85084126127e157693f1fce3da636ea5cf85068056bc75e2d631000008502059350682b5e3af16b18800000015b690127fa27722cc06cc5e2841261281857690127fa27722cc06cc5e268056bc75e2d6310000085020593506815af1d78b58c400000015b68280e60114edb805d03841261284d5768280e60114edb805d0368056bc75e2d631000008502059350680ad78ebc5ac6200000015b680ebc5fb41746121110841261287857680ebc5fb4174612111068056bc75e2d631000009485020593015b6808f00f760a4b2db55d84126128ad576808f00f760a4b2db55d68056bc75e2d6310000085020593506802b5e3af16b1880000015b6806f5f177578893793784126128e2576806f5f177578893793768056bc75e2d63100000850205935068015af1d78b58c40000015b6806248f33704b2866038412612916576806248f33704b28660368056bc75e2d63100000850205935067ad78ebc5ac620000015b6805c548670b9510e7ac841261294a576805c548670b9510e7ac68056bc75e2d6310000085020593506756bc75e2d6310000015b5f68056bc75e2d63100000850168056bc75e2d63100000808703028161297257612972613b84565b0590505f68056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b8205016002025f606486830105905086612a085780612a0c565b805f035b9998505050505050505050565b5f680238fd42c5cf03ffff198212158015612a3d575068070c1cc73b00c800008213155b612a73576040517fd4794efd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80831215612a8657825f039250600190505b5f6806f05b59d3b20000008412612ac557506806f05b59d3b1ffffff1990920191770195e54c5dd42177f53a27172fa9ec630262827000000000612afb565b6803782dace9d90000008412612af757506803782dace9d8ffffff19909201916b1425982cf597cd205cef7380612afb565b5060015b6064939093029268056bc75e2d6310000068ad78ebc5ac620000008512612b4b5768ad78ebc5ac61ffffff199094019368056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008512612b87576856bc75e2d630ffffff199094019368056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008512612bc157682b5e3af16b187fffff199094019368056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008512612bfb576815af1d78b58c3fffff199094019368056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008512612c3457680ad78ebc5ac61fffff199094019368056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008512612c6d5768056bc75e2d630fffff199094019368056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008512612ca6576802b5e3af16b187ffff199094019368056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008512612cdf5768015af1d78b58c3ffff199094019368056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008581019086906002908280020505918201919050600368056bc75e2d631000008883020505918201919050600468056bc75e2d631000008883020505918201919050600568056bc75e2d631000008883020505918201919050600668056bc75e2d631000008883020505918201919050600768056bc75e2d631000008883020505918201919050600868056bc75e2d631000008883020505918201919050600968056bc75e2d631000008883020505918201919050600a68056bc75e2d631000008883020505918201919050600b68056bc75e2d631000008883020505918201919050600c68056bc75e2d6310000088830205059182019190505f606468056bc75e2d6310000085850205860205905085612e045780612e24565b806ec097ce7bc90715b34b9f100000000081612e2257612e22613b84565b055b98975050505050505050565b5f60ff8216601f811115610690576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c5613bb7565b5f60208284031215612e88575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611555575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115556020830184612eb7565b6001600160a01b0381168114610a43575f80fd5b8035610c0081612ef7565b5f8060408385031215612f27575f80fd5b8235612f3281612ef7565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e0810167ffffffffffffffff81118282101715612f7757612f77612f40565b60405290565b604051610140810167ffffffffffffffff81118282101715612f7757612f77612f40565b6040516060810167ffffffffffffffff81118282101715612f7757612f77612f40565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fed57612fed612f40565b604052919050565b5f67ffffffffffffffff82111561300e5761300e612f40565b5060051b60200190565b5f82601f830112613027575f80fd5b813561303a61303582612ff5565b612fc4565b8082825260208201915060208360051b86010192508583111561305b575f80fd5b602085015b83811015613078578035835260209283019201613060565b5095945050505050565b5f805f60608486031215613094575f80fd5b833567ffffffffffffffff8111156130aa575f80fd5b6130b686828701613018565b9660208601359650604090950135949350505050565b5f805f606084860312156130de575f80fd5b83356130e981612ef7565b925060208401356130f981612ef7565b929592945050506040919091013590565b5f8151808452602084019350602083015f5b8281101561313a57815186526020958601959091019060010161311c565b5093949350505050565b602080825282516060838301528051608084018190525f929190910190829060a08501905b808310156131955783516001600160a01b03168252602082019150602084019350600183019250613169565b506020860151858203601f1901604087015292506131b3818461310a565b925050506040840151601f198483030160608501526131d2828261310a565b95945050505050565b5f602082840312156131eb575f80fd5b813561155581612ef7565b60028110610a43575f80fd5b8035610c00816131f6565b5f82601f83011261321c575f80fd5b813567ffffffffffffffff81111561323657613236612f40565b613249601f8201601f1916602001612fc4565b81815284602083860101111561325d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215613289575f80fd5b813567ffffffffffffffff81111561329f575f80fd5b820160e081850312156132b0575f80fd5b6132b8612f54565b6132c182613202565b815260208281013590820152604082013567ffffffffffffffff8111156132e6575f80fd5b6132f286828501613018565b604083015250606082810135908201526080808301359082015261331860a08301612f0b565b60a082015260c082013567ffffffffffffffff811115613336575f80fd5b6133428682850161320d565b60c083015250949350505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61338a60e0830189612eb7565b828103604084015261339c8189612eb7565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152611c2e818561310a565b5f80604083850312156133dc575f80fd5b823567ffffffffffffffff8111156133f2575f80fd5b6133fe85828601613018565b925050602083013561340f816131f6565b809150509250929050565b5f8151808452602084019350602083015f5b8281101561313a5781516001600160a01b031686526020958601959091019060010161342c565b602081525f611555602083018461341a565b634e487b7160e01b5f52602160045260245ffd5b608081525f61348b608083018761341a565b82810360208401528086518083526020830191506020880192505f5b818110156135065783518051600281106134cf57634e487b7160e01b5f52602160045260245ffd5b84526020818101516001600160a01b03168186015260409182015115159185019190915293909301926060909201916001016134a7565b5050838103604085015261351a818761310a565b915050828103606084015261352f818561310a565b979650505050505050565b602081525f611555602083018461310a565b602081525f825160e0602084015261356861010084018261310a565b90506020840151601f19848303016040850152613585828261310a565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c084015260c0840151151560e08401528091505092915050565b5f805f805f805f60e0888a0312156135e0575f80fd5b87356135eb81612ef7565b965060208801356135fb81612ef7565b95506040880135945060608801359350608088013560ff8116811461361e575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561364c575f80fd5b823561365781612ef7565b9150602083013561340f81612ef7565b600181811c9082168061367b57607f821691505b60208210810361369957634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114610c00575f80fd5b5f602082840312156136be575f80fd5b6115558261369f565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156136eb575f80fd5b5051919050565b5f82601f830112613701575f80fd5b815161370f61303582612ff5565b8082825260208201915060208360051b860101925085831115613730575f80fd5b602085015b8381101561307857805161374881612ef7565b835260209283019201613735565b5f60208284031215613766575f80fd5b815167ffffffffffffffff81111561377c575f80fd5b6106c3848285016136f2565b5f82601f830112613797575f80fd5b81516137a561303582612ff5565b8082825260208201915060208360051b8601019250858311156137c6575f80fd5b602085015b838110156130785780518352602092830192016137cb565b5f80604083850312156137f4575f80fd5b825167ffffffffffffffff81111561380a575f80fd5b61381685828601613788565b925050602083015167ffffffffffffffff811115613832575f80fd5b61383e85828601613788565b9150509250929050565b5f60808284031215613858575f80fd5b6040516080810167ffffffffffffffff8111828210171561387b5761387b612f40565b60405290508061388a8361369f565b81526138986020840161369f565b60208201526138a96040840161369f565b60408201526138ba6060840161369f565b60608201525092915050565b805164ffffffffff81168114610c00575f80fd5b805163ffffffff81168114610c00575f80fd5b5f6101a08284031280156138ff575f80fd5b50613908612f7d565b6139128484613848565b81526080830151602082015260a0830151604082015260c0830151606082015261393e60e084016138c6565b608082015261395061010084016138da565b60a0820152613962610120840161369f565b60c0820152613974610140840161369f565b60e0820152613986610160840161369f565b610100820152613999610180840161369f565b6101208201529392505050565b5f805f80608085870312156139b9575f80fd5b845167ffffffffffffffff8111156139cf575f80fd5b6139db878288016136f2565b945050602085015167ffffffffffffffff8111156139f7575f80fd5b8501601f81018713613a07575f80fd5b8051613a1561303582612ff5565b80828252602082019150602060608402850101925089831115613a36575f80fd5b6020840193505b82841015613aa1576060848b031215613a54575f80fd5b613a5c612fa1565b8451613a67816131f6565b81526020850151613a7781612ef7565b6020820152613a886040860161369f565b6040820152825260609390930192602090910190613a3d565b80965050505050604085015167ffffffffffffffff811115613ac1575f80fd5b613acd87828801613788565b925050606085015167ffffffffffffffff811115613ae9575f80fd5b613af587828801613788565b91505092959194509250565b5f60208284031215613b11575f80fd5b815167ffffffffffffffff811115613b27575f80fd5b6106c384828501613788565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561069057610690613b33565b8181038181111561069057610690613b33565b808202811582820484141761069057610690613b33565b634e487b7160e01b5f52601260045260245ffd5b5f82613bb257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfea26469706673582212200f3a88fc3053c58c4e31808c9a7aa761c8e10bcf9a90e1d235cd127469484d1f64736f6c634300081a0033000000000000000000000000ba1333333333a1ba1108e8412f11850a5c319ba90000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000005e7b226e616d65223a22416b726f6e5765696768746564506f6f6c466163746f7279222c2276657273696f6e223a312c226465706c6f796d656e74223a2232303235303230342d76332d616b726f6e2d77656967687465642d706f6f6c227d000000000000000000000000000000000000000000000000000000000000000000577b226e616d65223a22416b726f6e5765696768746564506f6f6c222c2276657273696f6e223a312c226465706c6f796d656e74223a2232303235303230342d76332d616b726f6e2d77656967687465642d706f6f6c227d000000000000000000