0xd7bae5e7b9ccfe3897fa6f53d6d421d61991efee2aa718e55e32174406220f3160a060405234801561001057600080fd5b506040516200243a3803806200243a83398101604081905261003191610042565b6001600160a01b0316608052610072565b60006020828403121561005457600080fd5b81516001600160a01b038116811461006b57600080fd5b9392505050565b6080516123a6620000946000396000818160b201526106eb01526123a66000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d50146100465780637dc0d1d014610098578063e14ced32146100dc575b600080fd5b6100826040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161008f91906121ee565b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008f565b6100ef6100ea3660046122a3565b6100fd565b60405190815260200161008f565b6000610107612164565b6080811461011457600080fd5b6040516106001461012457600080fd5b6084871461013157600080fd5b6101a4851461013f57600080fd5b8635608052602087013560a052604087013560e090811c60c09081526044890135821c82526048890135821c61010052604c890135821c610120526050890135821c61014052605489013590911c61016052605888013560f890811c610180526059890135901c6101a0819052605a89013590911c6101c05260628801906101e09060018111156101f5576040517f0136cc76000000000000000000000000000000000000000000000000000000008152600481fd5b506020810181511461020657600080fd5b60200160005b602081101561023057823560e01c825260049092019160209091019060010161020c565b5050508061012001511561024e576102466103a6565b91505061039d565b6101408101805160010167ffffffffffffffff16905260006101a49050600080600061028385606001518660000151866104f7565b9250925092508163ffffffff1660001480156102a557508063ffffffff16600c145b156102bf576102b387610521565b9550505050505061039d565b6000610339866040805160808101825260008082526020820181905291810182905260608101919091526040518060800160405280836060015163ffffffff168152602001836080015163ffffffff1681526020018360a0015163ffffffff1681526020018360c0015163ffffffff168152509050919050565b6101608701518751919250610356918391906105248888886108f9565b8652805163ffffffff9081166060808901919091526020830151821660808901526040830151821660a08901528201511660c08701526103946103a6565b96505050505050505b95945050505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a8401526000926102009290916062830191906001811115610453576040517f0136cc76000000000000000000000000000000000000000000000000000000008152600481fd5b60005b602081101561047a57601c8601518452602090950194600490930192600101610456565b506000835283830384a060009450806001811461049a57600395506104c2565b8280156104b257600181146104bb57600296506104c0565b600096506104c0565b600196505b505b50505081900390207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89190911b17919050565b6000806000610507858786610cdf565b925050603f601a83901c8116915082165b93509350939050565b600061052b612164565b608090506000806000806105628561016001516040810151608082015160a083015160c084015160e0909401519294919390929091565b509350935093509350600080610ffa63ffffffff168663ffffffff16036105a75761059285858960e00151610d93565b63ffffffff1660e08a01529092509050610808565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03363ffffffff8716016105e05763400000009150610808565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe863ffffffff8716016106165760019150610808565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef6a63ffffffff87160161066a57600161012088015260ff851661010088015261065d6103a6565b9998505050505050505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05d63ffffffff8716016107665760006040518061012001604052808763ffffffff1681526020018663ffffffff1681526020018563ffffffff16815260200189602001518152602001896040015163ffffffff1681526020018b81526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020016107386101a4600160ff16610380020190565b81528951602090910152905061074d81610e27565b8b5263ffffffff1660408b015290935091506108089050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05c63ffffffff8716016107cb57602087015160408801516107b1918791879187916105248d5161109f565b63ffffffff1660408b015260208a01529092509050610808565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02963ffffffff871601610808576108028585611195565b90925090505b6000610882886040805160808101825260008082526020820181905291810182905260608101919091526040518060800160405280836060015163ffffffff168152602001836080015163ffffffff1681526020018360a0015163ffffffff1681526020018360c0015163ffffffff168152509050919050565b61016089015163ffffffff85811660408084019190915285821660e0909301929092526020830180518083168086526004909101831682526060808e01919091529051821660808d015291830151811660a08c0152908201511660c08a015290506108eb6103a6565b9a9950505050505050505050565b84600263ffffffff8416148061091557508263ffffffff166003145b156109675760006002856303ffffff1663ffffffff16901b896020015163f00000001617905061096189898663ffffffff1660021461095557601f610958565b60005b60ff168461124a565b50610cd4565b600080601f601087901c8116908a90601589901c166020811061098c5761098c612317565b602002015192508063ffffffff871615806109ad57508663ffffffff16601c145b156109df578a8263ffffffff16602081106109ca576109ca612317565b6020020151925050601f600b88901c16610a96565b60208763ffffffff161015610a41578663ffffffff16600c1480610a0957508663ffffffff16600d145b80610a1a57508663ffffffff16600e145b15610a2b578761ffff169250610a96565b610a3a8861ffff166010611322565b9250610a96565b60288763ffffffff16101580610a5d57508663ffffffff166022145b80610a6e57508663ffffffff166026145b15610a96578a8263ffffffff1660208110610a8b57610a8b612317565b602002015192508190505b60048763ffffffff1610158015610ab3575060088763ffffffff16105b80610ac457508663ffffffff166001145b15610ae057610ad78c8c898b8689611395565b50505050610cd4565b63ffffffff6000602089831610610b4557610b008a61ffff166010611322565b9095019463fffffffc8616610b168d828e610cdf565b915060288a63ffffffff1610158015610b3657508963ffffffff16603014155b15610b4357809250600093505b505b6000610b558b8b8b8a8a87611583565b63ffffffff1690508963ffffffff166000148015610b7a575060088963ffffffff1610155b8015610b8c5750601c8963ffffffff16105b15610c54578863ffffffff1660081480610bac57508863ffffffff166009145b15610bdf57610bd38f8f8b63ffffffff16600814610bca5786610bcd565b60005b8a61124a565b50505050505050610cd4565b8863ffffffff16600a03610c0157610bd38f8f868a63ffffffff8b1615611ca0565b8863ffffffff16600b03610c2457610bd38f8f868a63ffffffff8b161515611ca0565b60108963ffffffff1610158015610c415750601c8963ffffffff16105b15610c5457610bd38f8f8b8a8a89611d70565b8963ffffffff166038148015610c6f575063ffffffff851615155b15610c9f5760018e8663ffffffff1660208110610c8e57610c8e612317565b63ffffffff90921660209290920201525b8263ffffffff1663ffffffff14610cbe57610cbb838d83612029565b97505b610ccc8f8f86846001611ca0565b505050505050505b979650505050505050565b6000610cea826120cb565b6003831615610cf857600080fd5b6020820191358360051c8160005b601b811015610d5e5760208601953583821c6001168015610d2e5760018114610d4357610d54565b60008481526020839052604090209350610d54565b600082815260208590526040902093505b5050600101610d06565b50868114610d7457630badf00d60005260206000fd5b5050601f93909316601c0360031b9290921c63ffffffff169392505050565b6000808284610fff811615610dad57610fff811661100003015b8663ffffffff16600003610e195784935090810190636000000063ffffffff83161180610de557508463ffffffff168263ffffffff16105b80610dfb57508563ffffffff168163ffffffff16105b15610e14575063ffffffff925060169150839050610518565b610e1d565b8693505b5093509350939050565b6101008101516080820151825160009283929163ffffffff161561109857845163ffffffff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb01611052576000610e93866101000151876020015163fffffffc168860e00151610cdf565b606087015190915060001a600103610f1557610f0f86606001518760a0015160408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b60608701525b6000808760c0015173ffffffffffffffffffffffffffffffffffffffff1663e03110e189606001518a608001516040518363ffffffff1660e01b8152600401610f6e92919091825263ffffffff16602082015260400190565b6040805180830381865afa158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae9190612346565b60208a015160408b01519294509092509060038216600481900384811015610fd4578094505b5083821015610fe1578193505b8460088502610100031c9450846008828660040303021b9450600180600883600403021b036001806008878560040303021b0391508119811690508581198816179650505061103f8a6020015163fffffffc168b60e0015187612029565b9298505050938601939250611098915050565b845163ffffffff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0161108c5784604001519350611098565b63ffffffff9350600992505b9193509193565b600080858563ffffffff8b16600114806110bf575063ffffffff8b166002145b806110d0575063ffffffff8b166004145b156110dd57889350611187565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8c160161117b57600061111d868c63fffffffc1689610cdf565b90508860038c166004038b81101561113357809b505b8b965086900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193880293841b0116911b17915060009050611187565b63ffffffff9350600992505b975097509750979350505050565b60008063ffffffff83166003036112385763ffffffff841615806111bf575063ffffffff84166005145b806111d0575063ffffffff84166003145b156111de5760009150611243565b63ffffffff8416600114806111f9575063ffffffff84166002145b8061120a575063ffffffff84166006145b8061121b575063ffffffff84166004145b156112295760019150611243565b5063ffffffff90506009611243565b5063ffffffff905060165b9250929050565b836000015160040163ffffffff16846020015163ffffffff16146112cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b835160208501805163ffffffff908116875283811690915283161561131b5780600801848463ffffffff166020811061130a5761130a612317565b63ffffffff90921660209290920201525b5050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b018261137f576000611381565b815b90861663ffffffff16179250505092915050565b6000866000015160040163ffffffff16876020015163ffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f7400000000000000000000000060448201526064016112c6565b8463ffffffff166004148061143257508463ffffffff166005145b156114a9576000868463ffffffff166020811061145157611451612317565b602002015190508063ffffffff168363ffffffff1614801561147957508563ffffffff166004145b806114a157508063ffffffff168363ffffffff16141580156114a157508563ffffffff166005145b915050611526565b8463ffffffff166006036114c65760008260030b13159050611526565b8463ffffffff166007036114e25760008260030b139050611526565b8463ffffffff1660010361152657601f601085901c16600081900361150b5760008360030b1291505b8063ffffffff166001036115245760008360030b121591505b505b8651602088015163ffffffff168852811561156757600261154c8661ffff166010611322565b63ffffffff90811690911b8201600401166020890152611579565b60208801805160040163ffffffff1690525b5050505050505050565b600063ffffffff861615806115b0575060088663ffffffff16101580156115b05750600f8663ffffffff16105b156119b05785600881146115f357600981146115fc57600a811461160557600b811461160e57600c811461161757600d811461162057600e81146116295761162e565b6020955061162e565b6021955061162e565b602a955061162e565b602b955061162e565b6024955061162e565b6025955061162e565b602695505b508463ffffffff16600003611653575063ffffffff8216601f600688901c161b611c96565b8463ffffffff16600203611677575063ffffffff8216601f600688901c161c611c96565b8463ffffffff166003036116ab57601f600688901c166116a363ffffffff8516821c6020839003611322565b915050611c96565b8463ffffffff166004036116cb575063ffffffff8216601f84161b611c96565b8463ffffffff166006036116eb575063ffffffff8216601f84161c611c96565b8463ffffffff1660070361171357601f84166116a363ffffffff8516821c6020839003611322565b8463ffffffff16600803611728575082611c96565b8463ffffffff1660090361173d575082611c96565b8463ffffffff16600a03611752575082611c96565b8463ffffffff16600b03611767575082611c96565b8463ffffffff16600c0361177c575082611c96565b8463ffffffff16600f03611791575082611c96565b8463ffffffff166010036117a6575082611c96565b8463ffffffff166011036117bb575082611c96565b8463ffffffff166012036117d0575082611c96565b8463ffffffff166013036117e5575082611c96565b8463ffffffff166018036117fa575082611c96565b8463ffffffff1660190361180f575082611c96565b8463ffffffff16601a03611824575082611c96565b8463ffffffff16601b03611839575082611c96565b8463ffffffff166020036118505750828201611c96565b8463ffffffff166021036118675750828201611c96565b8463ffffffff1660220361187e5750818303611c96565b8463ffffffff166023036118955750818303611c96565b8463ffffffff166024036118ac5750828216611c96565b8463ffffffff166025036118c35750828217611c96565b8463ffffffff166026036118da5750828218611c96565b8463ffffffff166027036118f2575082821719611c96565b8463ffffffff16602a03611921578260030b8460030b12611914576000611917565b60015b60ff169050611c96565b8463ffffffff16602b03611949578263ffffffff168463ffffffff1610611914576000611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e0000000000000000000000000060448201526064016112c6565b611949565b8563ffffffff16601c03611a30578463ffffffff166002036119d55750828202611c96565b8463ffffffff16602014806119f057508463ffffffff166021145b156119ab578463ffffffff16602003611a07579219925b60005b6380000000851615611a29576401fffffffe600195861b169401611a0a565b9050611c96565b8563ffffffff16600f03611a51575065ffffffff0000601083901b16611c96565b8563ffffffff16602003611a8557611a298460031660080260180363ffffffff168363ffffffff16901c60ff166008611322565b8563ffffffff16602103611aba57611a298460021660080260100363ffffffff168363ffffffff16901c61ffff166010611322565b8563ffffffff16602203611ae8575063ffffffff60086003851602811681811b198416918316901b17611c96565b8563ffffffff16602303611afd575080611c96565b8563ffffffff16602403611b2e578360031660080260180363ffffffff168263ffffffff16901c60ff169050611c96565b8563ffffffff16602503611b60578360021660080260100363ffffffff168263ffffffff16901c61ffff169050611c96565b8563ffffffff16602603611b91575063ffffffff60086003851602601803811681811c198416918316901c17611c96565b8563ffffffff16602803611bc6575060ff63ffffffff60086003861602601803811682811b9091188316918416901b17611c96565b8563ffffffff16602903611bfc575061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17611c96565b8563ffffffff16602a03611c2a575063ffffffff60086003851602811681811c198316918416901c17611c96565b8563ffffffff16602b03611c3f575081611c96565b8563ffffffff16602e03611c70575063ffffffff60086003851602601803811681811b198316918416901b17611c96565b8563ffffffff16603003611c85575080611c96565b8563ffffffff166038036119495750815b9695505050505050565b60208363ffffffff1610611d10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c696420726567697374657200000000000000000000000000000000000060448201526064016112c6565b63ffffffff831615801590611d225750805b15611d515781848463ffffffff1660208110611d4057611d40612317565b63ffffffff90921660209290920201525b5050505060208101805163ffffffff8082169093526004019091169052565b60008463ffffffff16601003611d8b57506060860151611fd1565b8463ffffffff16601103611daa5763ffffffff84166060880152611fd1565b8463ffffffff16601203611dc357506040860151611fd1565b8463ffffffff16601303611de25763ffffffff84166040880152611fd1565b8463ffffffff16601803611e165763ffffffff600385810b9085900b02602081901c821660608a0152166040880152611fd1565b8463ffffffff16601903611e475763ffffffff84811681851602602081901c821660608a0152166040880152611fd1565b8463ffffffff16601a03611f0a578260030b600003611ec2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d4950533a206469766973696f6e206279207a65726f0000000000000000000060448201526064016112c6565b8260030b8460030b81611ed757611ed761236a565b0763ffffffff166060880152600383810b9085900b81611ef957611ef961236a565b0563ffffffff166040880152611fd1565b8463ffffffff16601b03611fd1578263ffffffff16600003611f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d4950533a206469766973696f6e206279207a65726f0000000000000000000060448201526064016112c6565b8263ffffffff168463ffffffff1681611fa357611fa361236a565b0663ffffffff908116606089015283811690851681611fc457611fc461236a565b0463ffffffff1660408801525b63ffffffff8216156120075780868363ffffffff1660208110611ff657611ff6612317565b63ffffffff90921660209290920201525b50505060208401805163ffffffff808216909652600401909416909352505050565b6000612034836120cb565b600384161561204257600080fd5b6020830192601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b8110156120c05760208601953582821c600116801561209057600181146120a5576120b6565b600085815260208390526040902094506120b6565b600082815260208690526040902094505b5050600101612068565b509095945050505050565b366103808201811015612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f617461000000000000000000000000000000000000000000000000000000000060648201526084016112c6565b5050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915261016081016121ca6121cf565b905290565b6040518061040001604052806020906020820280368337509192915050565b600060208083528351808285015260005b8181101561221b578581018301518582016040015282016121ff565b8181111561222d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008083601f84011261227357600080fd5b50813567ffffffffffffffff81111561228b57600080fd5b60208301915083602082850101111561124357600080fd5b6000806000806000606086880312156122bb57600080fd5b853567ffffffffffffffff808211156122d357600080fd5b6122df89838a01612261565b909750955060208801359150808211156122f857600080fd5b5061230588828901612261565b96999598509660400135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000806040838503121561235957600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a0000000000000000000000009c065e11870b891d214bc2da7ef1f9ddfa1be277