solc-0.8.36-doubleshift20 0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640 optimized-low-runs

23642 bytes

608060405234801561000f575f5ffd5b506004361061013c575f3560e01c80630dfe168114610140578063128acb081461017d5780631a686502146101a55780631ad8b03b146101d0578063252c09d7146101fc57806332148f67146102495780633850c7bd1461025e5780633c8a7d8d146103025780634614131914610315578063490e6cbc1461032c5780634f1eb3d81461033f578063514ea4bf146103525780635339c296146103d257806370cf754a146103f15780638206a4d11461041857806385b667291461042b578063883bdbfd1461043e578063a34123a71461045f578063a38807f214610472578063c45a0155146104b3578063d0c93a7c146104da578063d21220a714610514578063ddca3f431461053b578063f305839914610576578063f30dba931461057f578063f637731d14610652575b5f5ffd5b6101677f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b60405161017491906151c7565b60405180910390f35b61019061018b36600461523c565b610665565b60408051928352602083019190915201610174565b6004546101b8906001600160801b031681565b6040516001600160801b039091168152602001610174565b6003546101ee906001600160801b0380821691600160801b90041682565b6040516101749291906152bb565b61020f61020a3660046152d5565b61118b565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091169183019190915215156060820152608001610174565b61025c6102573660046152ec565b6111cf565b005b5f546102b1906001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b604080516001600160a01b03909816885260029690960b602088015261ffff94851695870195909552918316606086015291909116608084015260ff1660a0830152151560c082015260e001610174565b610190610310366004615334565b6112a8565b61031e60025481565b604051908152602001610174565b61025c61033a36600461537e565b6114e0565b6101ee61034d3660046153e2565b61192c565b61039c6103603660046152d5565b60076020525f908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a001610174565b61031e6103e0366004615445565b60066020525f908152604090205481565b6101b87f0000000000000000000000000000000000005e8b2285f864419ac400be90719681565b61025c610426366004615475565b611b67565b6101ee6104393660046154a6565b611d24565b61045161044c3660046154e8565b612010565b604051610174929190615557565b61019061046d3660046155e3565b612096565b61048561048036600461560c565b612217565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1690820152606001610174565b6101677f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98481565b6105017f000000000000000000000000000000000000000000000000000000000000000a81565b60405160029190910b8152602001610174565b6101677f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6105627f00000000000000000000000000000000000000000000000000000000000001f481565b60405162ffffff9091168152602001610174565b61031e60015481565b6105f661058d366004615634565b60056020525f908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b604080516001600160801b039099168952600f9790970b602089015295870194909452606086019290925260060b60808501526001600160a01b031660a084015263ffffffff1660c0830152151560e082015261010001610174565b61025c61066036600461564d565b61244d565b5f5f61066f612584565b855f036106a85760405162461bcd60e51b8152602060048201526002602482015261415360f01b60448201526064015b60405180910390fd5b6040805160e0810182525f546001600160a01b0381168252600160a01b810460020b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c0820181905261073f5760405162461bcd60e51b815260040161069f90615668565b876107825780516001600160a01b0390811690871611801561077d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b6107ac565b80516001600160a01b039081169087161080156107ac57506401000276a36001600160a01b038716115b6107de5760405162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015260640161069f565b5f805460ff60f01b191681556040805160c08101909152808a61080c5760048460a0015160ff16901c61081d565b60108460a0015161081d9190615699565b60ff1681526004546001600160801b031660208201526040014263ffffffff1681526020015f60060b81526020015f60601b60601c81526020015f151581525090505f5f891390505f6040518060e001604052808b81526020015f8152602001855f015160601b60601c8152602001856020015160020b81526020018c6108a6576002546108aa565b6001545b81525f6020808301919091528501516001600160801b031660409091015290505b8051158015906108eb575060408101516001600160a01b038a8116911614155b15610d1d576040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260408201516001600160a01b03168152606082015161096b906006907f000000000000000000000000000000000000000000000000000000000000000a8f6125ba565b1515604083015260020b60208201819052620d89e719131561099657620d89e71960208201526109ca565b6109a3620d89e7196156ce565b60020b816020015160020b13156109ca576109c1620d89e7196156ce565b60020b60208201525b6109d7816020015161276f565b6001600160a01b031660608201526040820151610a5c908d610a0b5760608301516001600160a01b03808e16911611610a1f565b60608301516001600160a01b03808e169116105b610a2d578260600151610a2f565b8b5b60c085015185517f00000000000000000000000000000000000000000000000000000000000001f4612b7d565b60c085015260a084015260808301526001600160a01b031660408301528215610ad457610a9b8160c001518260800151610a9691906156ee565b612d8c565b82518390610aaa908390615701565b90525060a0810151610aca90610abf90612d8c565b602084015190612da0565b6020830152610b20565b610ae18160a00151612d8c565b82518390610af0908390615727565b90525060c08101516080820151610b1a91610b0f91610a9691906156ee565b602084015190612dc4565b60208301525b835160ff1615610b7a575f845f015160ff168260c00151610b41919061574e565b9050808260c001818151610b559190615761565b90525060a083018051829190610b6c908390615774565b6001600160801b0316905250505b60c08201516001600160801b031615610bbf57610baa8160c00151600160801b8460c0015160801b60801c612de2565b82608001818151610bbb91906156ee565b9052505b606081015160408301516001600160a01b03918216911603610ce857806040015115610cbb578360a00151610c3e57610c2084604001515f8760200151886040015188602001518a606001516008612f53909695949392919063ffffffff16565b6001600160a01b0316608086015260060b6060850152600160a08501525b5f610c8982602001518e610c5457600154610c5a565b84608001515b8f610c69578560800151610c6d565b6002545b608089015160608a015160408b0151600595949392919061313e565b90508c15610c9d57610c9a81615793565b90505b610cab8360c001518261324c565b6001600160801b031660c0840152505b8b610cca578060200151610cdb565b60018160200151610cdb91906157ac565b60020b6060830152610d17565b805160408301516001600160a01b03908116911614610d1757610d0e826040015161330b565b60020b60608301525b506108cb565b836020015160020b816060015160020b14610de5575f5f610d6a86604001518660400151886020015188602001518a606001518b60800151600861363e909695949392919063ffffffff16565b604085015160608601515f805463ffffffff60b81b1916600160c81b61ffff9586160261ffff60b81b191617600160b81b9590941694909402929092176001600160b81b031916600160a01b62ffffff909316929092026001600160a01b031916919091176001600160a01b0390911617905550610e099050565b60408101515f80546001600160a01b0319166001600160a01b039092169190911790555b60c081015160208401516001600160801b03908116911614610e4a5760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a15610eb157608081015160015560a08101516001600160801b031615610eac5760a0810151600380545f90610e8a9084906001600160801b0316615774565b92506101000a8154816001600160801b03021916908360801b60801c02179055505b610f15565b608081015160025560a08101516001600160801b031615610f155760a081015160038054601090610ef3908490600160801b90046001600160801b0316615774565b92506101000a8154816001600160801b03021916908360801b60801c02179055505b8115158b151514610f365760208101518151610f31908c615701565b610f48565b8051610f42908b615701565b81602001515b90965094508a15611026575f851215610f8e57610f8e7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28d610f89886157d1565b6137bd565b5f610f976138b8565b60405163fa461e3360e01b8152909150339063fa461e3390610fc3908a908a908e908e90600401615813565b5f604051808303815f87803b158015610fda575f5ffd5b505af1158015610fec573d5f5f3e3d5ffd5b50505050610ff86138b8565b61100282896139ad565b11156110205760405162461bcd60e51b815260040161069f9061583c565b506110f0565b5f86121561105c5761105c7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488d610f89896157d1565b5f6110656139c6565b60405163fa461e3360e01b8152909150339063fa461e3390611091908a908a908e908e90600401615813565b5f604051808303815f87803b1580156110a8575f5ffd5b505af11580156110ba573d5f5f3e3d5ffd5b505050506110c66139c6565b6110d082886139ad565b11156110ee5760405162461bcd60e51b815260040161069f9061583c565b505b60408082015160c083015160608481015184518b8152602081018b90526001600160a01b03948516958101959095526001600160801b039092169084015260020b60808301528d169033907fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679060a00160405180910390a350505f805460ff60f01b1916600160f01b17905550919890975095505050505050565b60088161ffff811061119b575f80fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b5f54600160f01b900460ff166111f75760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b1916905561120b612584565b5f8054600160d81b900461ffff169061122660088385613a09565b5f805461ffff808416600160d81b810261ffff60d81b1990931692909217909255919250831614611291576040805161ffff8085168252831660208201527fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a91015b60405180910390a15b50505f805460ff60f01b1916600160f01b17905550565b5f80548190600160f01b900460ff166112d35760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b191690556001600160801b0385166112f1575f5ffd5b5f5f61133860405180608001604052808c60601b60601c81526020018b60020b81526020018a60020b815260200161132e8a60801b60801c613a98565b600f0b9052613aad565b92509250508193508092505f5f5f861115611358576113556138b8565b91505b8415611369576113666139c6565b90505b60405163d348799760e01b8152339063d34879979061139290899089908d908d90600401615813565b5f604051808303815f87803b1580156113a9575f5ffd5b505af11580156113bb573d5f5f3e3d5ffd5b505050505f86111561140c576113cf6138b8565b6113d983886139ad565b111561140c5760405162461bcd60e51b815260206004820152600260248201526104d360f41b604482015260640161069f565b84156114575761141a6139c6565b61142482876139ad565b11156114575760405162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015260640161069f565b604080513381526001600160801b038b1660208201529081018790526060810186905260028b810b91908d900b906001600160a01b038f16907f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde9060800160405180910390a450505f805460ff60f01b1916600160f01b17905550919890975095505050505050565b5f54600160f01b900460ff166115085760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b1916905561151c612584565b6004546001600160801b0316806115595760405162461bcd60e51b81526020600482015260016024820152601360fa1b604482015260640161069f565b5f61158d867f00000000000000000000000000000000000000000000000000000000000001f462ffffff16620f4240613cdd565b90505f6115c3867f00000000000000000000000000000000000000000000000000000000000001f462ffffff16620f4240613cdd565b90505f6115ce6138b8565b90505f6115d96139c6565b9050881561160c5761160c7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488b8b6137bd565b871561163d5761163d7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b8a6137bd565b604051630e9cbafb60e41b8152339063e9cbafb09061166690879087908c908c90600401615813565b5f604051808303815f87803b15801561167d575f5ffd5b505af115801561168f573d5f5f3e3d5ffd5b505050505f61169c6138b8565b90505f6116a76139c6565b9050816116b485886139ad565b11156116e75760405162461bcd60e51b8152602060048201526002602482015261046360f41b604482015260640161069f565b806116f284876139ad565b11156117255760405162461bcd60e51b8152602060048201526002602482015261463160f01b604482015260640161069f565b5f6117308584615761565b90505f61173d8584615761565b90508115611807575f805461175e90601090600160e81b900460ff16615699565b90505f60ff82161561177c5761177760ff83168561574e565b61177e565b5f5b90506001600160801b038116156117ce57600380548291905f906117ac9084906001600160801b0316615774565b92506101000a8154816001600160801b03021916908360801b60801c02179055505b6117ef6117db8286615761565b600160801b6001600160801b038e16612de2565b60015f8282546117ff91906156ee565b909155505050505b80156118b5575f8054600160e81b900460041c600f169081156118365761183160ff83168461574e565b611838565b5f5b90506001600160801b03811615611890576003805482919060109061186e908490600160801b90046001600160801b0316615774565b92506101000a8154816001600160801b03021916908360801b60801c02179055505b61189d6117db8285615761565b60025f8282546118ad91906156ee565b909155505050505b604080518e8152602081018e9052908101839052606081018290526001600160a01b038f169033907fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6339060800160405180910390a350505f805460ff60f01b1916600160f01b179055505050505050505050505050565b5f80548190600160f01b900460ff166119575760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b191681556119706007338989613d22565b60038101549091506001600160801b039081169086161161199157846119a0565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b9091048116908516116119c857836119de565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611a60576003810180548491905f90611a0e9084906001600160801b0316615859565b92506101000a8154816001600160801b03021916908360801b60801c0217905550611a607f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48898560801b60801c6137bd565b6001600160801b03821615611ae857600381018054839190601090611a96908490600160801b90046001600160801b0316615859565b92506101000a8154816001600160801b03021916908360801b60801c0217905550611ae87f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2898460801b60801c6137bd565b604080516001600160a01b038a1681526001600160801b0385811660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4505f805460ff60f01b1916600160f01b17905590969095509350505050565b5f54600160f01b900460ff16611b8f5760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9841691638da5cb5b9160048083019260209291908290030181865afa158015611bfe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c229190615878565b6001600160a01b03163314611c35575f5ffd5b60ff82161580611c58575060048260ff1610158015611c585750600a8260ff1611155b8015611c82575060ff81161580611c82575060048160ff1610158015611c825750600a8160ff1611155b611c8a575f5ffd5b5f54600160e81b900460ff16611ca8600483901b610ff01684615893565b5f805460ff92909216600160e81b0260ff60e81b199092169190911790557f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133611cf2601083615699565b6040805160ff9283168152600f600486901c166020820152868316918101919091529084166060820152608001611288565b5f80548190600160f01b900460ff16611d4f5760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9841691638da5cb5b9160048083019260209291908290030181865afa158015611dbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de29190615878565b6001600160a01b03163314611df5575f5ffd5b6003546001600160801b0390811690851611611e115783611e1e565b6003546001600160801b03165b6003549092506001600160801b03600160801b909104811690841611611e445782611e58565b600354600160801b90046001600160801b03165b90506001600160801b03821615611efc576003546001600160801b0390811690831603611e8d5781611e89816158ac565b9250505b600380548391905f90611eaa9084906001600160801b0316615859565b92506101000a8154816001600160801b03021916908360801b60801c0217905550611efc7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48868460801b60801c6137bd565b6001600160801b03811615611fad576003546001600160801b03600160801b909104811690821603611f365780611f32816158ac565b9150505b60038054829190601090611f5b908490600160801b90046001600160801b0316615859565b92506101000a8154816001600160801b03021916908360801b60801c0217905550611fad7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2868360801b60801c6137bd565b6040516001600160a01b0386169033907f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b15190611fec90869086906152bb565b60405180910390a35f805460ff60f01b1916600160f01b1790559094909350915050565b60608061201b612584565b61208a428585808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416613d79565b915091505b9250929050565b5f80548190600160f01b900460ff166120c15760405162461bcd60e51b815260040161069f90615668565b5f805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b9181019190915281908190612115906060810161210c6001600160801b038a16613a98565b61132e90615793565b92509250925081612125906157d1565b9450612130816157d1565b93505f85118061213f57505f84115b156121a157600383015461215d9086906001600160801b0316615774565b600384015461217d908690600160801b90046001600160801b0316615774565b6001600160801b039182169116600160801b026001600160801b0319161760038401555b604080516001600160801b038816815260208101879052908101859052600288810b91908a900b9033907f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c9060600160405180910390a450505f805460ff60f01b1916600160f01b179055509094909350915050565b5f5f5f612222612584565b61222c8585613ebf565b600285810b5f908152600560205260408082209287900b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061228a575f5ffd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806122ca575f5ffd5b50506040805160e0810182525f546001600160a01b0381168252600160a01b8104600290810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e900b131590506123875761236186886158cd565b61236b85876158fa565b6123758486615919565b99509950995050505050505050612446565b8a60020b816020015160020b12156124285760208101516040820151600454606084015142935f9384936123cf9360089388938793919290916001600160801b031690612f53565b9092509050886123df8b846158cd565b6123e991906158cd565b876123f48a846158fa565b6123fe91906158fa565b866124098987615919565b6124139190615919565b9c509c509c5050505050505050505050612446565b61243287876158cd565b61243c86866158fa565b6123758585615919565b9250925092565b5f546001600160a01b03161561248a5760405162461bcd60e51b8152602060048201526002602482015261414960f01b604482015260640161069f565b5f6124948261330b565b604080516080808201835263ffffffff42168083525f602080850182905284860182905260016060958601819052600160f81b909317600855855160e0810187526001600160a01b038a16808252600289900b82840181905282890185905296820185905294810184905260a0810183905260c00183905281546001600160b81b0319168417600160a01b62ffffff89160217600160b81b600160f81b0319166501000001000160c81b1790915584519283528201929092528251939450909283927f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95928290030190a150505050565b306001600160a01b037f00000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f564016146125b8575f5ffd5b565b5f80806125c78587615935565b90505f8660020b1280156125e657506125e0858761596d565b60020b15155b156125f957806125f58161598e565b9150505b83156126a3575f5f61260a83613f84565b90925090505f600160ff831681901b906126249082615761565b61262e91906156ee565b600184900b5f90815260208c90526040902054811680151596509091508561266d578861265e60ff8516876157ac565b61266891906159a6565b612698565b8861267782613fa0565b61268190856159c5565b61268e9060ff16876157ac565b61269891906159a6565b965050505050612765565b5f806126b86126b38460016159de565b613f84565b90925090505f6126cf600160ff841681901b615761565b600184900b5f90815260208c90526040902054901990811680151596509091508561272757886127008460ff6159c5565b60ff1661270e8760016159de565b61271891906159de565b61272291906159a6565b61275e565b888361273283614088565b61273c91906159c5565b60ff1661274a8760016159de565b61275491906159de565b61275e91906159a6565b9650505050505b5094509492505050565b5f5f5f8360020b12612784578260020b612791565b8260020b612791906157d1565b90506127a0620d89e7196156ce565b60020b8111156127d65760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640161069f565b5f816001165f036127eb57600160801b6127fd565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161561283257608061282d826ffff97272373d413259a46990580e213a615a03565b901c90505b600482161561285c576080612857826ffff2e50f5f656932ef12357cf3c7fdcc615a03565b901c90505b6008821615612886576080612881826fffe5caca7e10e4e61c3624eaa0941cd0615a03565b901c90505b60108216156128b05760806128ab826fffcb9843d60f6159c9db58835c926644615a03565b901c90505b60208216156128da5760806128d5826fff973b41fa98c081472e6896dfb254c0615a03565b901c90505b60408216156129045760806128ff826fff2ea16466c96a3843ec78b326b52861615a03565b901c90505b608082161561292e576080612929826ffe5dee046a99a2a811c461f1969c3053615a03565b901c90505b610100821615612959576080612954826ffcbe86c7900a88aedcffc83b479aa3a4615a03565b901c90505b61020082161561298457608061297f826ff987a7253ac413176f2b074cf7815e54615a03565b901c90505b6104008216156129af5760806129aa826ff3392b0822b70005940c7a398e4b70f3615a03565b901c90505b6108008216156129da5760806129d5826fe7159475a2c29b7443b29c7fa6e889d9615a03565b901c90505b611000821615612a05576080612a00826fd097f3bdfd2022b8845ad8f792aa5825615a03565b901c90505b612000821615612a30576080612a2b826fa9f746462d870fdf8a65dc1f90e061e5615a03565b901c90505b614000821615612a5b576080612a56826f70d869a156d2a1b890bb3df62baf32f7615a03565b901c90505b618000821615612a86576080612a81826f31be135f97d08fd981231505542fcfa6615a03565b901c90505b62010000821615612ab2576080612aad826f09aa508b5b7a84e1c677de54f3e99bc9615a03565b901c90505b62020000821615612add576080612ad8826e5d6af8dedb81196699c329225ee604615a03565b901c90505b62040000821615612b07576080612b02826d2216e584f5fa1ea926041bedfe98615a03565b901c90505b62080000821615612b2f576080612b2a826b048a170391f7dc42444e8fa2615a03565b901c90505b5f8460020b1315612b4857612b45815f1961574e565b90505b612b56600160201b82615a1a565b15612b62576001612b64565b5f5b612b759060ff16602083901c6156ee565b949350505050565b5f8080806001600160a01b03808916908a161015818712801590612c07575f612bbb89612bad8a620f4240615a2d565b62ffffff16620f4240612de2565b905082612bd457612bcf8c8c8c60016141b0565b612be1565b612be18b8d8c6001614227565b9550858110612bf2578a9650612c01565b612bfe8c8b83866142d6565b96505b50612c59565b81612c1d57612c188b8b8b5f614227565b612c29565b612c298a8c8b5f6141b0565b935083612c35896157d1565b10612c4257899550612c59565b612c568b8a612c508b6157d1565b8561431a565b95505b6001600160a01b038a8116908716148215612cbb57808015612c785750815b612c8e57612c89878d8c6001614227565b612c90565b855b9550808015612c9d575081155b612cb257612cad878d8c5f6141b0565b612cb4565b845b9450612d04565b808015612cc55750815b612cdb57612cd68c888c60016141b0565b612cdd565b855b9550808015612cea575081155b612cff57612cfa8c888c5f614227565b612d01565b845b94505b81158015612d195750612d16896157d1565b85115b15612d2a57612d27896157d1565b94505b818015612d4357506001600160a01b03878116908c1614155b15612d5957612d52868a615761565b9350612d7d565b612d7a8662ffffff8a16612d708b620f4240615a2d565b62ffffff16613cdd565b93505b50505095509550955095915050565b5f600160ff1b8210612d9c575f5ffd5b5090565b5f8082121583612db08482615701565b925082131514612dbe575f5ffd5b92915050565b5f8082121583612dd48482615727565b925082121514612dbe575f5ffd5b5f80805f19858709858702925082811083820303915050805f03612e16575f8411612e0b575f5ffd5b508290049050612f4c565b808411612e21575f5ffd5b5f848688098084039381119092039190505f85612e40811960016156ee565b16958690049593849004935f819003046001019050612e5f8184615a03565b909317925f612e6f876003615a03565b6002189050612e7e8188615a03565b612e89906002615761565b612e939082615a03565b9050612e9f8188615a03565b612eaa906002615761565b612eb49082615a03565b9050612ec08188615a03565b612ecb906002615761565b612ed59082615a03565b9050612ee18188615a03565b612eec906002615761565b612ef69082615a03565b9050612f028188615a03565b612f0d906002615761565b612f179082615a03565b9050612f238188615a03565b612f2e906002615761565b612f389082615a03565b9050612f448186615a03565b955050505050505b9392505050565b5f5f8663ffffffff165f03612ff9575f898661ffff1661ffff8110612f7a57612f7a615a48565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a1614612fe557612fe2818a898861435c565b90505b806020015181604001519250925050613132565b5f613004888a615919565b90505f5f6130178c8c858c8c8c8c61441a565b91509150815f015163ffffffff168363ffffffff1603613047578160200151826040015194509450505050613132565b805f015163ffffffff168363ffffffff1603613073578060200151816040015194509450505050613132565b815181515f9161308291615919565b83519091505f906130939086615919565b90508063ffffffff168263ffffffff16856020015185602001516130b791906158cd565b6130c19190615a5c565b6130cb9190615a8f565b84602001516130da9190615aae565b8263ffffffff168263ffffffff16866040015186604001516130fc91906158fa565b61310f91906001600160a01b0316615a03565b613119919061574e565b85604001516131289190615adb565b9650965050505050505b97509795505050505050565b600286900b5f908152602088905260408120600181015461315f9088615761565b600182015560028101546131739087615761565b6002820155600381015461319790600160381b90046001600160a01b0316866158fa565b6003820180546001600160a01b0392909216600160381b02600160381b600160d81b031990921691909117908190556131d39060060b856158cd565b60038201805466ffffffffffffff191666ffffffffffffff92909216919091179081905561320e90600160d81b900463ffffffff1684615919565b60038201805463ffffffff92909216600160d81b0263ffffffff60d81b1990921691909117905554600160801b9004600f0b98975050505050505050565b5f5f82600f0b12156132b8576001600160801b03831661326b83615793565b6132759085615859565b91506001600160801b038216106132b35760405162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015260640161069f565b612dbe565b6001600160801b0383166132cc8385615774565b91506001600160801b0382161015612dbe5760405162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015260640161069f565b5f6401000276a36001600160a01b03831610801590613346575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6133765760405162461bcd60e51b81526020600482015260016024820152602960f91b604482015260640161069f565b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061340f57613405607f82615761565b83901c9150613420565b61341a81607f615761565b83901b91505b5f604061342e608084615701565b901b9050828302607f1c92508260801c80603f1b8217915083811c935050828302607f1c92508260801c80603e1b8217915083811c935050828302607f1c92508260801c80603d1b8217915083811c935050828302607f1c92508260801c80603c1b8217915083811c935050828302607f1c92508260801c80603b1b8217915083811c935050828302607f1c92508260801c80603a1b8217915083811c935050828302607f1c92508260801c8060391b8217915083811c935050828302607f1c92508260801c8060381b8217915083811c935050828302607f1c92508260801c8060371b8217915083811c935050828302607f1c92508260801c8060361b8217915083811c935050828302607f1c92508260801c8060351b8217915083811c935050828302607f1c92508260801c8060341b8217915083811c935050828302607f1c92508260801c8060331b8217915083811c935050828302607f1c92508260801c8060321b82179150505f81693627a301d71055774c856135b09190615afa565b90505f60806135cf6f028f6481ab7f045a5af012a19d003aaa84615701565b901d90505f60806135f0846fdb2df09e81959a81455e260799a0632f615727565b901d90508060020b8260020b1461362f576001600160a01b0389166136148261276f565b6001600160a01b031611156136295781613631565b80613631565b815b9998505050505050505050565b5f5f5f898961ffff1661ffff811061365857613658615a48565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891690036136c15788859250925050613132565b8461ffff168461ffff161180156136e957506136de600186615b29565b61ffff168961ffff16145b156136f6578391506136fa565b8491505b816137068a6001615b43565b6137109190615b5d565b925061371e8189898961435c565b8a8461ffff1661ffff811061373557613735615a48565b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b02959095166001600160581b0366ffffffffffffff909216600160201b026001600160581b031990931663ffffffff909516949094179190911716919091179190911790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916138189190615b80565b5f604051808303815f865af19150503d805f8114613851576040519150601f19603f3d011682016040523d82523d5f602084013e613856565b606091505b50915091508180156138805750805115806138805750808060200190518101906138809190615b96565b6138b15760405162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015260640161069f565b5050505050565b5f5f5f7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860601b60601c6370a0823160e01b306040516024016138fb91906151c7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516139399190615b80565b5f60405180830381855afa9150503d805f8114613971576040519150601f19603f3d011682016040523d82523d5f602084013e613976565b606091505b509150915081801561398a57506020815110155b613992575f5ffd5b808060200190518101906139a69190615bb1565b9250505090565b5f826139b983826156ee565b9150811015612dbe575f5ffd5b5f5f5f7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260601b60601c6370a0823160e01b306040516024016138fb91906151c7565b5f5f8361ffff1611613a2d5760405162461bcd60e51b815260040161069f90615bc8565b8261ffff168261ffff1611613a43575081612f4c565b825b8261ffff168161ffff161015613a8f576001858261ffff1661ffff8110613a6e57613a6e615a48565b01805463ffffffff191663ffffffff92909216919091179055600101613a45565b50909392505050565b80600f81900b8114613aa8575f5ffd5b919050565b5f5f5f613ab8612584565b613aca84602001518560400151613ebf565b6040805160e0810182525f546001600160a01b0381168252600160a01b810460020b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613b6794919390929091906145fd565b93508460600151600f0b5f14613cd557846020015160020b816020015160020b1215613bbb57613bb4613b9d866020015161276f565b613baa876040015161276f565b876060015161479e565b9250613cd5565b846040015160020b816020015160020b1215613cab5760045460408201516001600160801b0390911690613c069042602085015160608601516080870151600894939291879161363e565b5f805463ffffffff60b81b1916600160c81b61ffff9384160261ffff60b81b191617600160b81b939092169290920217905581516040870151613c579190613c4d9061276f565b886060015161479e565b9350613c75613c69876020015161276f565b835160608901516147de565b9250613c8581876060015161324c565b600480546001600160801b0319166001600160801b039290921691909117905550613cd5565b613cd2613cbb866020015161276f565b613cc8876040015161276f565b87606001516147de565b91505b509193909250565b5f613ce9848484612de2565b90505f8280613cfa57613cfa615685565b8486091115612f4c575f198110613d0f575f5ffd5b80613d1981615be3565b95945050505050565b6040805160609490941b6001600160601b03191660208086019190915260e893841b60348601529190921b60378401528151601a818503018152603a90930182528251928101929092205f90815292909152902090565b6060805f8361ffff1611613d9f5760405162461bcd60e51b815260040161069f90615bc8565b86516001600160401b03811115613db857613db8615bfb565b604051908082528060200260200182016040528015613de1578160200160208202803683370190505b50915086516001600160401b03811115613dfd57613dfd615bfb565b604051908082528060200260200182016040528015613e26578160200160208202803683370190505b5090505f5b8751811015613eb257613e5c8a8a8a8481518110613e4b57613e4b615a48565b60200260200101518a8a8a8a612f53565b848381518110613e6e57613e6e615a48565b60200260200101848481518110613e8757613e87615a48565b6001600160a01b039093166020938402919091019092019190915260069190910b9052600101613e2b565b5097509795505050505050565b8060020b8260020b12613efa5760405162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015260640161069f565b620d89e719600283900b1215613f385760405162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015260640161069f565b613f45620d89e7196156ce565b60020b8160020b1315613f805760405162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015260640161069f565b5050565b600281900b60081d5f613f996101008461596d565b9050915091565b5f5f8211613fac575f5ffd5b600160801b8210613fca57608091821c91613fc79082615893565b90505b600160401b8210613fe857604091821c91613fe59082615893565b90505b600160201b821061400657602091821c916140039082615893565b90505b62010000821061402357601091821c916140209082615893565b90505b610100821061403f57600891821c9161403c9082615893565b90505b6010821061405a57600491821c916140579082615893565b90505b6004821061407557600291821c916140729082615893565b90505b60028210613aa857612dbe600182615893565b5f5f8211614094575f5ffd5b5060ff6001600160801b038216156140b8576140b16080826159c5565b90506140c0565b608082901c91505b6001600160401b038216156140e1576140da6040826159c5565b90506140e9565b604082901c91505b63ffffffff821615614107576141006020826159c5565b905061410f565b602082901c91505b61ffff82161561412b576141246010826159c5565b9050614133565b601082901c91505b60ff82161561414e576141476008826159c5565b9050614156565b600882901c91505b600f8216156141715761416a6004826159c5565b9050614179565b600482901c91505b60038216156141945761418d6002826159c5565b905061419c565b600282901c91505b6001821615613aa857612dbe6001826159c5565b5f6001600160a01b0380851690861611156141c9579293925b816141fd576141f86001600160801b0384166141e587876158fa565b6001600160a01b0316600160601b612de2565b613d19565b613d196001600160801b03841661421487876158fa565b6001600160a01b0316600160601b613cdd565b5f6001600160a01b038085169086161115614240579293925b600160601b600160e01b03606084901b165f61425c87876158fa565b6001600160a01b0390811691508716614273575f5ffd5b8361429f578660601b60601c61429083838960601b60601c612de2565b61429a919061574e565b6142cb565b6142cb6142b683836001600160a01b038a16613cdd565b6001600160a01b038916808204910615150190565b979650505050505050565b5f6001600160a01b0385166142e9575f5ffd5b6001600160801b0384166142fb575f5ffd5b8161430d576141f88585856001614810565b613d1985858560016148f3565b5f6001600160a01b03851661432d575f5ffd5b6001600160801b03841661433f575f5ffd5b81614350576141f88585855f6148f3565b613d198585855f614810565b6143646151a1565b84515f906143729086615919565b905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b6143a09190615a8f565b88602001516143af9190615aae565b60060b81526020016001600160801b0385166143cc5760016143ce565b845b6143ee906001600160801b031663ffffffff60801b608086901b16615c0f565b88604001516143fd9190615adb565b6001600160a01b0316815260016020909101529695505050505050565b6144226151a1565b61442a6151a1565b888561ffff1661ffff811061444157614441615a48565b60408051608081018252919092015463ffffffff8116808352600160201b820460060b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061449f90899089614a03565b156144cb57815163ffffffff88811691161461313257816144c28389898861435c565b91509150613132565b88836144d8876001615b43565b6144e29190615b5d565b61ffff1661ffff81106144f7576144f7615a48565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529092506145a057604080516080810182528a5463ffffffff81168252600160201b810460060b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b6145ae88835f015189614a03565b6145e05760405162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015260640161069f565b6145ed8989898887614acc565b9150915097509795505050505050565b5f61460b6007878787613d22565b600154600254919250905f80600f87900b15614740575f805460045442929182916146669160089186918591600160a01b820460020b9161ffff600160b81b82048116926001600160801b031691600160c81b900416612f53565b909250905061469f60058d8b8d8b8b87898b5f7f0000000000000000000000000000000000005e8b2285f864419ac400be907196614ca7565b94506146d660058c8b8d8b8b87898b60017f0000000000000000000000000000000000005e8b2285f864419ac400be907196614ca7565b9350841561470a5761470a60068d7f000000000000000000000000000000000000000000000000000000000000000a614e46565b831561473c5761473c60068c7f000000000000000000000000000000000000000000000000000000000000000a614e46565b5050505b5f8061475160058c8c8b8a8a614e96565b9092509050614762878a8484614f7e565b5f89600f0b121561478f57831561477e5761477e60058c615163565b821561478f5761478f60058b615163565b50505050505095945050505050565b5f5f82600f0b126147be576147b9610a968585856001614227565b612b75565b6147d5610a9685856147cf86615793565b5f614227565b612b75906157d1565b5f5f82600f0b126147f9576147b9610a9685858560016141b0565b6147d5610a96858561480a86615793565b5f6141b0565b5f8115614880575f6001600160a01b038411156148445761483f84600160601b6001600160801b038816612de2565b61485b565b61485b6001600160801b038616606086901b61574e565b90506148786148736001600160a01b038816836139ad565b61518c565b915050612b75565b5f6001600160a01b038411156148ad576148a884600160601b6001600160801b038816613cdd565b6148ca565b6148ca606085901b6001600160801b038716808204910615150190565b90506001600160a01b03861681106148e0575f5ffd5b614878816001600160a01b038816615761565b5f825f03614902575083612b75565b600160601b600160e01b03606085901b1682156149a9575f6001600160a01b0387168561492f8282615a03565b925061493b908361574e565b03614974575f61494b82846156ee565b905082811061497257614968836001600160a01b038a1683613cdd565b9350505050612b75565b505b6149a0826149958761498f6001600160a01b038c168461574e565b906139ad565b808204910615150190565b92505050612b75565b5f6001600160a01b038716856149bf8282615a03565b92506149cb908361574e565b1480156149d757508082115b6149df575f5ffd5b5f6149ea8284615761565b9050614968614873846001600160a01b038b1684613cdd565b5f8363ffffffff168363ffffffff1611158015614a2c57508363ffffffff168263ffffffff1611155b15614a48578163ffffffff168363ffffffff1611159050612f4c565b5f8463ffffffff168463ffffffff1611614a7557614a7063ffffffff8516600160201b615c3d565b614a7d565b8363ffffffff165b64ffffffffff1690505f63ffffffff80871690851611614ab057614aab63ffffffff8516600160201b615c3d565b614ab8565b8363ffffffff165b64ffffffffff169091111595945050505050565b614ad46151a1565b614adc6151a1565b5f83614ae9866001615b43565b614af39190615b5d565b61ffff1690505f60018561ffff1683614b0c91906156ee565b614b169190615761565b90505f5b6002614b2683856156ee565b614b30919061574e565b905089614b4161ffff881683615a1a565b61ffff8110614b5257614b52615a48565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614bbd57614bb68160016156ee565b9250614b1a565b8961ffff8716614bce8360016156ee565b614bd89190615a1a565b61ffff8110614be957614be9615a48565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094505f90614c4c908b908b614a03565b9050808015614c645750614c648a8a875f0151614a03565b15614c6f5750614c9a565b80614c8657614c7f600183615761565b9250614c94565b614c918260016156ee565b93505b50614b1a565b5050509550959350505050565b60028a900b5f90815260208c90526040812080546001600160801b031682614ccf828d61324c565b90506001600160801b038086169082161115614d125760405162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015260640161069f565b6001600160801b03818116159083168015919091141594505f03614db5578c60020b8e60020b13614d9d57600183018b9055600283018a905560038301805466ffffffffffffff8a166001600160f81b0319909116600160381b6001600160a01b038d160266ffffffffffffff63ffffffff60d81b0119161717600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b03821617835585614dfc578254614df790614df290600160801b9004600f90810b908f900b612dc4565b613a98565b614e1b565b8254614e1b90614df290600160801b9004600f90810b908f900b612da0565b83546001600160801b03918216600160801b0291161790925550909c9b505050505050505050505050565b614e50818361596d565b60020b15614e5c575f5ffd5b5f80614e6b6126b38486615935565b600191820b5f9081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b5f8181526020899052604080822088850b83529082209193849391929184918291908a900b12614ed657505060018201546002830154614efa565b6001840154614ee59089615761565b9150836002015487614ef79190615761565b90505b5f5f8b60020b8b60020b1215614f1b57505060018301546002840154614f3f565b6001850154614f2a908b615761565b9150846002015489614f3c9190615761565b90505b81614f4a858c615761565b614f549190615761565b975080614f61848b615761565b614f6b9190615761565b9650505050505050965096945050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201525f600f85900b81036150195781516001600160801b03166150115760405162461bcd60e51b815260206004820152600260248201526104e560f41b604482015260640161069f565b508051615028565b8151615025908661324c565b90505b5f61505183602001518661503c9190615761565b84516001600160801b0316600160801b612de2565b90505f61507c8460400151866150679190615761565b85516001600160801b0316600160801b612de2565b905086600f0b5f146150a25787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b0382161515806150cf57506001600160801b03811615155b15615159576003880180548391905f906150f39084906001600160801b0316615774565b92506101000a8154816001600160801b03021916908360801b60801c0217905550808860030160108282829054906101000a900460801b60801c6151379190615774565b92506101000a8154816001600160801b03021916908360801b60801c02179055505b5050505050505050565b600290810b5f908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114613aa8575f5ffd5b604080516080810182525f80825260208201819052918101829052606081019190915290565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146151ef575f5ffd5b50565b80151581146151ef575f5ffd5b5f5f83601f84011261520f575f5ffd5b5081356001600160401b03811115615225575f5ffd5b60208301915083602082850101111561208f575f5ffd5b5f5f5f5f5f5f60a08789031215615251575f5ffd5b863561525c816151db565b9550602087013561526c816151f2565b9450604087013593506060870135615283816151db565b925060808701356001600160401b0381111561529d575f5ffd5b6152a989828a016151ff565b979a9699509497509295939492505050565b6001600160801b0392831681529116602082015260400190565b5f602082840312156152e5575f5ffd5b5035919050565b5f602082840312156152fc575f5ffd5b813561ffff81168114612f4c575f5ffd5b8035600281900b8114613aa8575f5ffd5b80356001600160801b0381168114613aa8575f5ffd5b5f5f5f5f5f5f60a08789031215615349575f5ffd5b8635615354816151db565b95506153626020880161530d565b94506153706040880161530d565b93506152836060880161531e565b5f5f5f5f5f60808688031215615392575f5ffd5b853561539d816151db565b9450602086013593506040860135925060608601356001600160401b038111156153c5575f5ffd5b6153d1888289016151ff565b969995985093965092949392505050565b5f5f5f5f5f60a086880312156153f6575f5ffd5b8535615401816151db565b945061540f6020870161530d565b935061541d6040870161530d565b925061542b6060870161531e565b91506154396080870161531e565b90509295509295909350565b5f60208284031215615455575f5ffd5b81358060010b8114612f4c575f5ffd5b803560ff81168114613aa8575f5ffd5b5f5f60408385031215615486575f5ffd5b61548f83615465565b915061549d60208401615465565b90509250929050565b5f5f5f606084860312156154b8575f5ffd5b83356154c3816151db565b92506154d16020850161531e565b91506154df6040850161531e565b90509250925092565b5f5f602083850312156154f9575f5ffd5b82356001600160401b0381111561550e575f5ffd5b8301601f8101851361551e575f5ffd5b80356001600160401b03811115615533575f5ffd5b8560208260051b8401011115615547575f5ffd5b6020919091019590945092505050565b604080825283519082018190525f9060208501906060840190835b8181101561559357835160060b835260209384019390920191600101615572565b5050838103602080860191909152855180835291810192508501905f5b818110156155d75782516001600160a01b03168452602093840193909201916001016155b0565b50919695505050505050565b5f5f5f606084860312156155f5575f5ffd5b6155fe8461530d565b92506154d16020850161530d565b5f5f6040838503121561561d575f5ffd5b6156268361530d565b915061549d6020840161530d565b5f60208284031215615644575f5ffd5b612f4c8261530d565b5f6020828403121561565d575f5ffd5b8135612f4c816151db565b6020808252600390820152624c4f4b60e81b604082015260600190565b634e487b7160e01b5f52601260045260245ffd5b5f60ff8316806156ab576156ab615685565b8060ff84160691505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8160020b627fffff1981036156e6576156e66156ba565b5f0392915050565b80820180821115612dbe57612dbe6156ba565b8181035f831280158383131683831282161715615720576157206156ba565b5092915050565b8082018281125f831280158216821582161715615746576157466156ba565b505092915050565b5f8261575c5761575c615685565b500490565b81810381811115612dbe57612dbe6156ba565b6001600160801b038181168382160190811115612dbe57612dbe6156ba565b5f600f82900b6001607f1b81016156e6576156e66156ba565b600282810b9082900b03627fffff198112627fffff82131715612dbe57612dbe6156ba565b5f600160ff1b82016157e5576157e56156ba565b505f0390565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201525f6158326060830184866157eb565b9695505050505050565b60208082526003908201526249494160e81b604082015260600190565b6001600160801b038281168282160390811115612dbe57612dbe6156ba565b5f60208284031215615888575f5ffd5b8151612f4c816151db565b60ff8181168382160190811115612dbe57612dbe6156ba565b5f6001600160801b038216806158c4576158c46156ba565b5f190192915050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715612dbe57612dbe6156ba565b6001600160a01b038281168282160390811115612dbe57612dbe6156ba565b63ffffffff8281168282160390811115612dbe57612dbe6156ba565b5f8160020b8360020b8061594b5761594b615685565b627fffff1982145f1982141615615964576159646156ba565b90059392505050565b5f8260020b8061597f5761597f615685565b808360020b0791505092915050565b5f8160020b627fffff1981036158c4576158c46156ba565b5f8260020b8260020b028060020b9150808214615720576157206156ba565b60ff8281168282160390811115612dbe57612dbe6156ba565b600281810b9083900b01627fffff8113627fffff1982121715612dbe57612dbe6156ba565b8082028115828204841417612dbe57612dbe6156ba565b5f82615a2857615a28615685565b500690565b62ffffff8281168282160390811115612dbe57612dbe6156ba565b634e487b7160e01b5f52603260045260245ffd5b5f8160060b8360060b80615a7257615a72615685565b667fffffffffffff1982145f1982141615615964576159646156ba565b5f8260060b8260060b028060060b9150808214615720576157206156ba565b600681810b9083900b01667fffffffffffff8113667fffffffffffff1982121715612dbe57612dbe6156ba565b6001600160a01b038181168382160190811115612dbe57612dbe6156ba565b8082025f8212600160ff1b84141615615b1557615b156156ba565b8181058314821517612dbe57612dbe6156ba565b61ffff8281168282160390811115612dbe57612dbe6156ba565b61ffff8181168382160190811115612dbe57612dbe6156ba565b5f61ffff831680615b7057615b70615685565b8061ffff84160691505092915050565b5f82518060208501845e5f920191825250919050565b5f60208284031215615ba6575f5ffd5b8151612f4c816151f2565b5f60208284031215615bc1575f5ffd5b5051919050565b6020808252600190820152604960f81b604082015260600190565b5f60018201615bf457615bf46156ba565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b5f6001600160a01b03831680615c2757615c27615685565b6001600160a01b03929092169190910492915050565b64ffffffffff8181168382160190811115612dbe57612dbe6156ba56