608060405234801561000f575f80fd5b5060058054600160481b600160a81b03191674013c6800018b820000ed4e0000000000000000000017905561005f336effe8b47b3e2130213b802212439497146100595733610064565b32610064565b61013d565b61006d8161007e565b61007b8163800000006100d6565b50565b638b78c6d81980541561009857630dc149f05f526004601cfd5b6001600160a01b03909116801560ff1b8117909155805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6100e2828260016100e6565b5050565b638b78c6d8600c52825f526020600c20805483811783610107575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b612aec8061014a5f395ff3fe608060405260043610610458575f3560e01c806370a0823111610241578063aeb84f2411610134578063d85349f7116100b3578063f8e2567911610078578063f8e2567914610d3c578063fbcd215914610d5b578063fee81cf414610d7a578063ff28736114610dab578063ff87a5f514610dbf575f80fd5b8063d85349f714610cb3578063dc91c88f14610cd6578063e985e9c514610cf5578063f04e283e14610d16578063f2fde38b14610d29575f80fd5b8063b88d4fde116100f9578063b88d4fde14610c24578063c597578814610c37578063c87b56dd14610c56578063ccc7397414610c75578063cf70698a14610c94575f80fd5b8063aeb84f2414610b8d578063b19c3ca314610bac578063b1f047dd14610bc6578063b50fd68114610bf1578063b69e064314610c10575f80fd5b80638da5cb5b116101c0578063983525bf11610185578063983525bf14610acc578063a22cb46514610aeb578063a6caeb4b14610b05578063a7e76d4814610b42578063ae9e38ae14610b62575f80fd5b80638da5cb5b14610a3d578063905e344114610a5557806394a7c3ef14610a7757806395d89b4114610a995780639636d88114610aad575f80fd5b806384a1931f1161020657806384a1931f1461097f578063861145cd146109a2578063893a5372146109c15780638c13a453146109e75780638d65402314610a06575f80fd5b806370a0823114610902578063711039a614610921578063715018a61461094057806375b238fc1461094857806377b04c8f1461095c575f80fd5b806329a4927a116103595780634c5cd306116102d857806355f804b31161029d57806355f804b3146108715780635a446215146108905780635d12928b146108af5780635e3318f8146108c35780636352211e146108e3575f80fd5b80634c5cd306146107ed57806350a534c714610801578063514e62fc1461082057806353ff9fcb1461085557806354d1f13d14610869575f80fd5b8063397bfe551161031e578063397bfe5514610769578063398e6cb71461078857806342842e0e146107a757806347f7d14a146107ba5780634a4ee7b1146107da575f80fd5b806329a4927a146106c35780632de94807146106e2578063302ad53a14610713578063354b7f941461072a57806336fe3cb81461074a575f80fd5b806318160ddd116103e55780631cd64df4116103aa5780631cd64df41461064357806320cae9081461067857806323b872dd1461068c578063254800d41461069a57806325692962146106bb575f80fd5b806318160ddd146105c3578063183a4f6e146105ea57806318da2d98146105fd5780631a966d70146106115780631c10893f14610630575f80fd5b806308c0c05f1161042b57806308c0c05f14610524578063095ea7b31461053a57806309d2851a1461054d57806310a96a011461056c5780631514617e1461058b575f80fd5b806301ffc9a71461045c57806306fdde03146104ad5780630709df45146104ce578063081812fc14610505575b5f80fd5b348015610467575f80fd5b5061049861047636600461253b565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156104b8575f80fd5b506104c1610dde565b6040516104a49190612562565b3480156104d9575f80fd5b506104ed6104e83660046125ad565b610e6e565b6040516001600160a01b0390911681526020016104a4565b348015610510575f80fd5b506104ed61051f3660046125c6565b505f90565b34801561052f575f80fd5b50610538610e7e565b005b6105386105483660046125dd565b610eb5565b348015610558575f80fd5b50610538610567366004612618565b610ed2565b348015610577575f80fd5b506104ed610586366004612678565b610f6f565b348015610596575f80fd5b506005546105ae90600160681b900463ffffffff1681565b60405163ffffffff90911681526020016104a4565b3480156105ce575f80fd5b506004546001600160401b03165b6040519081526020016104a4565b6105386105f83660046125c6565b61101b565b348015610608575f80fd5b50610538611028565b34801561061c575f80fd5b506104ed61062b3660046125ad565b611049565b61053861063e3660046125dd565b61108f565b34801561064e575f80fd5b5061049861065d3660046125dd565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610683575f80fd5b506105386110a1565b6105386105483660046126c6565b3480156106a5575f80fd5b506005546105ae90610100900463ffffffff1681565b6105386110c7565b3480156106ce575f80fd5b506104ed6106dd366004612678565b611113565b3480156106ed575f80fd5b506105dc6106fc3660046125ad565b638b78c6d8600c9081525f91909152602090205490565b34801561071e575f80fd5b506105dc638000000081565b348015610735575f80fd5b5060045461049890600160e81b900460ff1681565b348015610755575f80fd5b506105dc6107643660046125ad565b611186565b348015610774575f80fd5b506105386107833660046125ad565b6111cb565b348015610793575f80fd5b506104ed6107a23660046125c6565b611233565b6105386107b53660046126c6565b61123e565b3480156107c5575f80fd5b5060045461049890600160e01b900460ff1681565b6105386107e83660046125dd565b61126a565b3480156107f8575f80fd5b5061053861127c565b34801561080c575f80fd5b506105dc61081b3660046125ad565b61129d565b34801561082b575f80fd5b5061049861083a3660046125dd565b638b78c6d8600c9081525f9290925260209091205416151590565b348015610860575f80fd5b50610538611304565b6105386113cb565b34801561087c575f80fd5b5061053861088b36600461273c565b611404565b34801561089b575f80fd5b506105386108aa36600461277a565b611425565b3480156108ba575f80fd5b506104ed611456565b3480156108ce575f80fd5b5060045461049890600160f01b900460ff1681565b3480156108ee575f80fd5b506104ed6108fd3660046125c6565b611465565b34801561090d575f80fd5b506105dc61091c3660046125ad565b611488565b34801561092c575f80fd5b5061053861093b366004612618565b6114c0565b610538611557565b348015610953575f80fd5b506105dc600181565b348015610967575f80fd5b506005546105ae90600160881b900463ffffffff1681565b34801561098a575f80fd5b506005546105ae90600160281b900463ffffffff1681565b3480156109ad575f80fd5b506105dc6109bc3660046125ad565b61156a565b3480156109cc575f80fd5b506004546104ed90600160401b90046001600160a01b031681565b3480156109f2575f80fd5b506104ed610a013660046125c6565b6115c2565b348015610a11575f80fd5b50600454610a25906001600160401b031681565b6040516001600160401b0390911681526020016104a4565b348015610a48575f80fd5b50638b78c6d819546104ed565b348015610a60575f80fd5b506104ed6eca73a6df4c58b84c5b4b847fe8ff3981565b348015610a82575f80fd5b506104ed6ec26fabfe894d13233d5ec73f61cc7281565b348015610aa4575f80fd5b506104c16115d4565b348015610ab8575f80fd5b50610538610ac7366004612618565b6115e3565b348015610ad7575f80fd5b506104ed610ae63660046125dd565b61167a565b348015610af6575f80fd5b506105386105483660046127ef565b348015610b10575f80fd5b50610498610b1f3660046125c6565b5f818152673ec412a9852d173d60c11b601c52602090208101015460a01c151590565b348015610b4d575f80fd5b5060045461049890600160f81b900460ff1681565b348015610b6d575f80fd5b50600554610b7b9060ff1681565b60405160ff90911681526020016104a4565b348015610b98575f80fd5b506104ed610ba7366004612820565b61170b565b348015610bb7575f80fd5b50610538610548366004612852565b348015610bd1575f80fd5b506105dc610be03660046125ad565b60066020525f908152604090205481565b348015610bfc575f80fd5b506104ed610c0b3660046125c6565b611717565b348015610c1b575f80fd5b50610538611722565b610538610c3236600461286b565b611745565b348015610c42575f80fd5b506104ed610c513660046125ad565b61179f565b348015610c61575f80fd5b506104c1610c703660046125c6565b6117e0565b348015610c80575f80fd5b50610538610c8f3660046125dd565b61195b565b348015610c9f575f80fd5b506104ed610cae366004612820565b6119d6565b348015610cbe575f80fd5b506005546105ae90600160481b900463ffffffff1681565b348015610ce1575f80fd5b50610538610cf03660046128d4565b6119e2565b348015610d00575f80fd5b50610498610d0f36600461291b565b5f92915050565b610538610d243660046125ad565b611aab565b610538610d373660046125ad565b611ae5565b348015610d47575f80fd5b506105dc610d563660046125ad565b611b0b565b348015610d66575f80fd5b506104ed610d753660046125dd565b611b66565b348015610d85575f80fd5b506105dc610d943660046125ad565b63389a75e1600c9081525f91909152602090205490565b348015610db6575f80fd5b50610538611bbf565b348015610dca575f80fd5b50610538610dd93660046125ad565b611c92565b606060018054610ded90612943565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1990612943565b8015610e645780601f10610e3b57610100808354040283529160200191610e64565b820191905f5260205f20905b815481529060010190602001808311610e4757829003601f168201915b5050505050905090565b5f610e7882611cc2565b92915050565b6001610e8981611ce2565b610e91611d13565b506005805468ffffffffffffffffff191690556004805462ffffff60e01b19169055565b60405163a4420a9560e01b815260040160405180910390fd5b5050565b6001610edd81611ce2565b600454600160e01b900460ff1615610f08576040516303cb96db60e21b815260040160405180910390fd5b63ffffffff82161580610f2457506301e1338063ffffffff8316115b15610f4257604051632b39f6cb60e01b815260040160405180910390fd5b506005805463ffffffff909216600160481b026cffffffff00000000000000000019909216919091179055565b5f68929eee149b4bd212685c15610f8d5763ab143c065f526004601cfd5b3068929eee149b4bd212685d610fa233610e6e565b90506001600160a01b038116610fcb5760405163425ef92760e01b815260040160405180910390fd5b5f5b82811015610fff57610ff7826ec26fabfe894d13233d5ec73f61cc7287600585901b880135611d7c565b600101610fcd565b50611008611da0565b5f68929eee149b4bd212685d9392505050565b6110253382611e27565b50565b600161103381611ce2565b506004805460ff60f01b1916600160f01b179055565b5f68929eee149b4bd212685c156110675763ab143c065f526004601cfd5b3068929eee149b4bd212685d61107c82611e32565b90505f68929eee149b4bd212685d919050565b611097611f16565b610ece8282611f30565b60016110ac81611ce2565b506004805460ff60e81b1916600160e81b179055565b505050565b5f6202a3006001600160401b03164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f68929eee149b4bd212685c156111315763ab143c065f526004601cfd5b3068929eee149b4bd212685d61114684611e32565b90505f5b8281101561117c57611174826ec26fabfe894d13233d5ec73f61cc7233600585901b880135611f3c565b60010161114a565b5061100884611f7d565b5f8061119183611fdc565b90505f61119d82611feb565b9050836001600160a01b03166111b282610e6e565b6001600160a01b0316036111c4578192505b5050919050565b60016111d681611ce2565b600454600160f81b900460ff1615611201576040516303cb96db60e21b815260040160405180910390fd5b50600480546001600160a01b03909216600160401b0268010000000000000000600160e01b0319909216919091179055565b5f610e78338361167a565b611249838383610eb5565b813b156110c2576110c283838360405180602001604052805f815250612012565b611272611f16565b610ece8282611e27565b600161128781611ce2565b506004805460ff60e01b1916600160e01b179055565b5f806112a883610e6e565b90506001600160a01b0381166112c057505f92915050565b670de0b6b3a76400006112e26ec26fabfe894d13233d5ec73f61cc7283612093565b026112fc6eca73a6df4c58b84c5b4b847fe8ff3983612093565b039392505050565b600161130f81611ce2565b60055460ff161561133357604051636752fae160e11b815260040160405180910390fd5b6005545f9061134f90600160481b900463ffffffff1642612975565b6005805463ffffffff8084166101000264ffffffffff19909216919091176001179182905591925061138a91600160681b9091041682612975565b6005805468ffffffff00000000001916600160281b63ffffffff939093169290920291909117905550506004805461ffff60e01b191661010160e01b179055565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b638000000061141281611ce2565b600361141f8385836129fd565b50505050565b638000000061143381611ce2565b60016114408587836129fd565b50600261144e8385836129fd565b505050505050565b5f61146033611049565b905090565b5f61146f82611feb565b9050806114835763ceea21b65f526004601cfd5b919050565b5f8161149b57638f4eb6045f526004601cfd5b673ec412a9852d173d60c11b601c52815f5263ffffffff601c600c2054169050919050565b60016114cb81611ce2565b600454600160f01b900460ff16156114f6576040516303cb96db60e21b815260040160405180910390fd5b63ffffffff8216158061151257506301e1338063ffffffff8316115b1561153057604051632b39f6cb60e01b815260040160405180910390fd5b506005805463ffffffff909216600160881b0263ffffffff60881b19909216919091179055565b61155f611f16565b6115685f6120bd565b565b5f8061157583610e6e565b90506001600160a01b03811661158d57505f92915050565b6115bb6115a96eca73a6df4c58b84c5b4b847fe8ff3983612093565b6115b285611b0b565b80821191030290565b9392505050565b5f610e786115cf83611feb565b611cc2565b606060028054610ded90612943565b60016115ee81611ce2565b600454600160e81b900460ff1615611619576040516303cb96db60e21b815260040160405180910390fd5b63ffffffff8216158061163557506301e1338063ffffffff8316115b1561165357604051632b39f6cb60e01b815260040160405180910390fd5b506005805463ffffffff909216600160681b0263ffffffff60681b19909216919091179055565b5f68929eee149b4bd212685c156116985763ab143c065f526004601cfd5b3068929eee149b4bd212685d6116ad33610e6e565b90506001600160a01b0381166116d65760405163425ef92760e01b815260040160405180910390fd5b6116f1816eca73a6df4c58b84c5b4b847fe8ff398585612103565b6116f9611da0565b5f68929eee149b4bd212685d92915050565b5f6115bb338484610f6f565b5f610e783383611b66565b600161172d81611ce2565b50600480546001600160f81b0316600160f81b179055565b611750858585610eb5565b833b156117985761179885858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201292505050565b5050505050565b5f806117aa83611fdc565b90505f6117b682611feb565b9050836001600160a01b03166117cb82610e6e565b6001600160a01b0316036111c4579392505050565b6060611809825f818152673ec412a9852d173d60c11b601c52602090208101015460601b151590565b6118265760405163677510db60e11b815260040160405180910390fd5b5f546001600160a01b0316801561188a57604051915063c87b56dd5f52826020525f806024601c845afa61185c573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e815160208301015f81526020810160405250611955565b6003805461189790612943565b159050611955576115bb600380546118ae90612943565b80601f01602080910402602001604051908101604052809291908181526020018280546118da90612943565b80156119255780601f106118fc57610100808354040283529160200191611925565b820191905f5260205f20905b81548152906001019060200180831161190857829003601f168201915b5050505050604051806040016040528060048152602001637b69647d60e01b81525061195086612127565b612169565b50919050565b600161196681611ce2565b61196e611d13565b600160601b82106119ba5760405162461bcd60e51b81526020600482015260116024820152703030b6b7bab73a30103a37b7903134b39760791b60448201526064015b60405180910390fd5b506001600160a01b039091165f90815260066020526040902055565b5f6115bb338484611113565b60016119ed81611ce2565b6119f5611d13565b611a00836001612975565b63ffffffff168263ffffffff161015611a5b5760405162461bcd60e51b815260206004820152601d60248201527f60656e6460206d757374206265203e3d20607374617274202b2031602e00000060448201526064016119b1565b506005805460ff9490941664ffffffffff199094169390931761010063ffffffff938416021768ffffffff00000000001916600160281b91909216021790556004805462ffffff60e01b19169055565b611ab3611f16565b63389a75e1600c52805f526020600c208054421115611ad957636f5e88185f526004601cfd5b5f9055611025816120bd565b611aed611f16565b8060601b611b0257637448fbae5f526004601cfd5b611025816120bd565b6005545f9060ff161561148357506001600160a01b0381165f9081526006602052604090205460055463ffffffff600160281b82048116916101009004164281116111c4578082034280841190840302840204949350505050565b5f68929eee149b4bd212685c15611b845763ab143c065f526004601cfd5b3068929eee149b4bd212685d611b9983611e32565b9050611bb6816eca73a6df4c58b84c5b4b847fe8ff393385611f3c565b6116f983611f7d565b6001611bca81611ce2565b60055460ff16600114611bf057604051636752fae160e11b815260040160405180910390fd5b600554610100900463ffffffff164210611c1d576040516372de7acd60e01b815260040160405180910390fd5b6005805463ffffffff428181166101000264ffffffffff199093169290921760021792839055611c5592600160881b90041690612975565b6005805463ffffffff92909216600160281b0268ffffffff000000000019909216919091179055506004805460ff60f01b1916600160f01b179055565b6380000000611ca081611ce2565b505f80546001600160a01b0319166001600160a01b0392909216919091179055565b673ec412a9852d173d60c11b601c9081525f91909152600c205460201c90565b638b78c6d81954331461102557638b78c6d8600c52335f52806020600c205416611025576382b429005f526004601cfd5b466142681480611d2557504662aa36a7145b6115685760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f6e205365706f6c6961202f20486f6c65736b7920746573746e656044820152613a1760f11b60648201526084016119b1565b61141f84846323b872dd876001600160a01b0316866001600160a01b031686612289565b5f611daa33610e6e565b60055490915060ff16611de257611dd06eca73a6df4c58b84c5b4b847fe8ff3982612093565b335f9081526006602052604090205550565b5f611dec33611b0b565b905080611e086eca73a6df4c58b84c5b4b847fe8ff3984612093565b1015610ece57604051631909a90560e01b815260040160405180910390fd5b610ece82825f6122f0565b5f611e3c82611cc2565b90506001600160a01b03811615611e5257919050565b600454600160401b90046001600160a01b031680611e8357604051630873153160e11b815260040160405180910390fd5b600480546001600160401b038082166001011667ffffffffffffffff199091168117909155611eb384825f612347565b611ec0825f4630856123d9565b9250826001600160a01b031681856001600160a01b03167f019b61d9140f8784f4eed1e66569335630452af2d974ceb13d3e706c0786729660405160405180910390a46111c484846001600160a01b031661244b565b638b78c6d819543314611568576382b429005f526004601cfd5b610ece828260016122f0565b60405181606052846040528260601b602c526323b872dd60601b600c5260205f6064601c5f885af1611f70573d5f823e3d81fd5b5f60605260405250505050565b60055460ff161580611f9b5750600554610100900463ffffffff1642105b1561102557611fc16eca73a6df4c58b84c5b4b847fe8ff39611fbc83610e6e565b612093565b6001600160a01b0382165f9081526006602052604090205550565b5f6020608d5f843c50505f5190565b5f818152673ec412a9852d173d60c11b601c5260209020810101546001600160a01b031690565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015612059578060c08401826020870160045afa505b60208360a48301601c86015f8a5af161207a573d1561207a573d5f843e3d83fd5b508060e01b82511461144e5763d1a57ed65f526004601cfd5b5f816014526370a0823160601b5f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217905550565b61141f848463a9059cbb856001600160a01b0316856001600160a01b03165f612289565b60606080604051019050602081016040525f8152805f19835b928101926030600a8206018453600a900480612140575050819003601f19909101908152919050565b60608351835183516020870196506020860195506020850194506020604051019350828701838311612239576001838203015f602085106121a957508388205b601f851660200360031b89515b8b51818118831c6122205783156121f05783888e20146121f057808a5260019c8d019c90990198848d106121ea5750612234565b506121b6565b5f5b8b8101518b8201526020018781106121f257509b87019b98860198871561222057848d106121ea5750612234565b895260019b8c019b90980197838c106121b6575b505050505b84935060206040510194508781038585030192505b8088101561226957875184526020978801979093019261224e565b50505f818401908152602001604052601f19909201918252509392505050565b604051856014820152635194544760601b81525f6034820152608060548201525f60748201528460988201528360b88201528260d88201528160f8820152606460948201525f38610124601084015f8b5af16122e7573d5f823e3d81fd5b50505050505050565b638b78c6d8600c52825f526020600c20805483811783612311575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b6123525f8484612477565b8260601b60601c9250815f52673ec412a9852d173d60c11b601c52828160a01b1760205f208301830155825f52601c600c20600181540163ffffffff811685026123ab5767ea553b3401336cea851560021b526004601cfd5b905581835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8138a4505050565b5f6040518660148201528560348201528460548201528360601b60601c6074820152826094820152638a54c52f60601b815260205f60a4601084015f6f6551c19487814612e58fe068137757585af1601f3d111661243e576320188a595f526004601cfd5b50505f5195945050505050565b673ec412a9852d173d60c11b601c52815f52601c600c2080548060201c831860201b8118825550505050565b61248082611cc2565b6001600160e01b0316156124a75760405163759be05b60e11b815260040160405180910390fd5b6001600160a01b038316156110c2575f818152673ec412a9852d173d60c11b601c5260208120820182015460a01c90036124f45760405163768a0e2b60e01b815260040160405180910390fd5b5f818152673ec412a9852d173d60c11b601c52602090208101810180546001600160a01b031981161890556125318261252c85611cc2565b61244b565b6110c2835f61244b565b5f6020828403121561254b575f80fd5b81356001600160e01b0319811681146115bb575f80fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611483575f80fd5b5f602082840312156125bd575f80fd5b6115bb82612597565b5f602082840312156125d6575f80fd5b5035919050565b5f80604083850312156125ee575f80fd5b6125f783612597565b946020939093013593505050565b803563ffffffff81168114611483575f80fd5b5f60208284031215612628575f80fd5b6115bb82612605565b5f8083601f840112612641575f80fd5b5081356001600160401b03811115612657575f80fd5b6020830191508360208260051b8501011115612671575f80fd5b9250929050565b5f805f6040848603121561268a575f80fd5b61269384612597565b925060208401356001600160401b038111156126ad575f80fd5b6126b986828701612631565b9497909650939450505050565b5f805f606084860312156126d8575f80fd5b6126e184612597565b92506126ef60208501612597565b9150604084013590509250925092565b5f8083601f84011261270f575f80fd5b5081356001600160401b03811115612725575f80fd5b602083019150836020828501011115612671575f80fd5b5f806020838503121561274d575f80fd5b82356001600160401b03811115612762575f80fd5b61276e858286016126ff565b90969095509350505050565b5f805f806040858703121561278d575f80fd5b84356001600160401b03808211156127a3575f80fd5b6127af888389016126ff565b909650945060208701359150808211156127c7575f80fd5b506127d4878288016126ff565b95989497509550505050565b80358015158114611483575f80fd5b5f8060408385031215612800575f80fd5b61280983612597565b9150612817602084016127e0565b90509250929050565b5f8060208385031215612831575f80fd5b82356001600160401b03811115612846575f80fd5b61276e85828601612631565b5f60208284031215612862575f80fd5b6115bb826127e0565b5f805f805f6080868803121561287f575f80fd5b61288886612597565b945061289660208701612597565b93506040860135925060608601356001600160401b038111156128b7575f80fd5b6128c3888289016126ff565b969995985093965092949392505050565b5f805f606084860312156128e6575f80fd5b833560ff811681146128f6575f80fd5b925061290460208501612605565b915061291260408501612605565b90509250925092565b5f806040838503121561292c575f80fd5b61293583612597565b915061281760208401612597565b600181811c9082168061295757607f821691505b60208210810361195557634e487b7160e01b5f52602260045260245ffd5b63ffffffff81811683821601908082111561299e57634e487b7160e01b5f52601160045260245ffd5b5092915050565b634e487b7160e01b5f52604160045260245ffd5b601f8211156110c257805f5260205f20601f840160051c810160208510156129de5750805b601f840160051c820191505b81811015611798575f81556001016129ea565b6001600160401b03831115612a1457612a146129a5565b612a2883612a228354612943565b836129b9565b5f601f841160018114612a59575f8515612a425750838201355b5f19600387901b1c1916600186901b178355611798565b5f83815260208120601f198716915b82811015612a885786850135825560209485019460019092019101612a68565b5086821015612aa4575f1960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220857689aad5785c1ee0a9832a6296f14ee5a069cd4d76d34ec8ef6c1c4911312d64736f6c63430008190033