0x60806040526004361061008a5760003560e01c8063a623a8ef11610059578063a623a8ef1461019f578063bc197c81146101bb578063c3f909d4146101f8578063e19a9dd914610223578063f23a6e611461024c576100ca565b806301ffc9a7146100cf57806310055c1d1461010c578063150b7a02146101375780637ceab3b114610174576100ca565b366100ca577ffe2d73074d233633e644a6fb7186458fbf422add1c18d996efd14ffbece6f2b233346040516100c0929190610f44565b60405180910390a1005b600080fd5b3480156100db57600080fd5b506100f660048036038101906100f19190610fd9565b610289565b6040516101039190611021565b60405180910390f35b34801561011857600080fd5b5061012161035b565b60405161012e9190611055565b60405180910390f35b34801561014357600080fd5b5061015e6004803603810190610159919061112d565b610361565b60405161016b91906111c4565b60405180910390f35b34801561018057600080fd5b50610189610376565b604051610196919061123e565b60405180910390f35b6101b960048036038101906101b4919061155d565b61039c565b005b3480156101c757600080fd5b506101e260048036038101906101dd919061162f565b6108c3565b6040516101ef91906111c4565b60405180910390f35b34801561020457600080fd5b5061020d6108db565b60405161021a919061172c565b60405180910390f35b34801561022f57600080fd5b5061024a60048036038101906102459190611785565b6108ea565b005b34801561025857600080fd5b50610273600480360381019061026e91906117b2565b6109a1565b60405161028091906111c4565b60405180910390f35b60007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061035457507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60015481565b600063150b7a0260e01b905095945050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260005414156103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d9906118a9565b60405180910390fd5b6002600081905550600083600001515111610432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061193b565b60405180910390fd5b610445600154610440610bae565b610bb6565b610484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047b906119a7565b60405180910390fd5b61048c610bae565b73ffffffffffffffffffffffffffffffffffffffff167ff9fda95d7e1555b30593092241d171240b167c8031641b1b015ffd68d06aae638484846040516104d593929190611be7565b60405180910390a2600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a6ee9ee8461057a610bae565b6001546040518463ffffffff1660e01b815260040161059b93929190611c20565b602060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ed9190611c8a565b61062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062390611d03565b60405180910390fd5b5b60005b8360000151518110156107655760008460000151828151811061065657610655611d23565b5b60200260200101519050600080826000015173ffffffffffffffffffffffffffffffffffffffff16836040015184602001516040516106959190611d8e565b60006040518083038185875af1925050503d80600081146106d2576040519150601f19603f3d011682016040523d82523d6000602084013e6106d7565b606091505b50915091508161074f576106ea84610c52565b6106f382610db3565b604051602001610704929190611e84565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107469190611ef7565b60405180910390fd5b505050808061075d90611f48565b915050610630565b50600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b9e983784610803610bae565b6001546040518463ffffffff1660e01b815260040161082493929190611c20565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611c8a565b6108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90611fdd565b60405180910390fd5b5b6001600081905550505050565b600063bc197c8160e01b905098975050505050505050565b60006108e5610e1e565b905090565b61091e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560001b610919610bae565b610bb6565b61095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095490612049565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600063f23a6e6160e01b90509695505050505050565b6109c081610a31565b806109ed7f54c601f62ced84cb3960726428d8409adc363a3fa5c7abf6dba0c198dcc43c1460001b610ba4565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7957600080fd5b505afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab1919061207e565b1180610b6257508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fb64394f6000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610b1191906111c4565b60206040518083038186803b158015610b2957600080fd5b505afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190611c8a565b5b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b989061211d565b60405180910390fd5b50565b6000819050919050565b600033905090565b6000610bc0610e1e565b73ffffffffffffffffffffffffffffffffffffffff166391d1485484846040518363ffffffff1660e01b8152600401610bfa92919061213d565b60206040518083038186803b158015610c1257600080fd5b505afa158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a9190611c8a565b905092915050565b60606000821415610c9a576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610dae565b600082905060005b60008214610ccc578080610cb590611f48565b915050600a82610cc59190612195565b9150610ca2565b60008167ffffffffffffffff811115610ce857610ce761126f565b5b6040519080825280601f01601f191660200182016040528015610d1a5781602001600182028036833780820191505090505b5090505b60008514610da757600182610d3391906121c6565b9150600a85610d4291906121fa565b6030610d4e919061222b565b60f81b818381518110610d6457610d63611d23565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610da09190612195565b9450610d1e565b8093505050505b919050565b6060604482511015610dfc576040518060400160405280601d81526020017f5472616e73616374696f6e2072657665727465642073696c656e746c790000008152509050610e19565b60048201915081806020019051810190610e169190612322565b90505b919050565b600080610e4d7f54c601f62ced84cb3960726428d8409adc363a3fa5c7abf6dba0c198dcc43c1460001b610ba4565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda906123b7565b60405180910390fd5b8091505090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f1582610eea565b9050919050565b610f2581610f0a565b82525050565b6000819050919050565b610f3e81610f2b565b82525050565b6000604082019050610f596000830185610f1c565b610f666020830184610f35565b9392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fb681610f81565b8114610fc157600080fd5b50565b600081359050610fd381610fad565b92915050565b600060208284031215610fef57610fee610f77565b5b6000610ffd84828501610fc4565b91505092915050565b60008115159050919050565b61101b81611006565b82525050565b60006020820190506110366000830184611012565b92915050565b6000819050919050565b61104f8161103c565b82525050565b600060208201905061106a6000830184611046565b92915050565b61107981610f0a565b811461108457600080fd5b50565b60008135905061109681611070565b92915050565b6110a581610f2b565b81146110b057600080fd5b50565b6000813590506110c28161109c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126110ed576110ec6110c8565b5b8235905067ffffffffffffffff81111561110a576111096110cd565b5b602083019150836001820283011115611126576111256110d2565b5b9250929050565b60008060008060006080868803121561114957611148610f77565b5b600061115788828901611087565b955050602061116888828901611087565b9450506040611179888289016110b3565b935050606086013567ffffffffffffffff81111561119a57611199610f7c565b5b6111a6888289016110d7565b92509250509295509295909350565b6111be81610f81565b82525050565b60006020820190506111d960008301846111b5565b92915050565b6000819050919050565b60006112046111ff6111fa84610eea565b6111df565b610eea565b9050919050565b6000611216826111e9565b9050919050565b60006112288261120b565b9050919050565b6112388161121d565b82525050565b6000602082019050611253600083018461122f565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6112a78261125e565b810181811067ffffffffffffffff821117156112c6576112c561126f565b5b80604052505050565b60006112d9610f6d565b90506112e5828261129e565b919050565b600080fd5b600067ffffffffffffffff82111561130a5761130961126f565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff82111561133b5761133a61126f565b5b6113448261125e565b9050602081019050919050565b82818337600083830152505050565b600061137361136e84611320565b6112cf565b90508281526020810184848401111561138f5761138e61131b565b5b61139a848285611351565b509392505050565b600082601f8301126113b7576113b66110c8565b5b81356113c7848260208601611360565b91505092915050565b6000606082840312156113e6576113e5611259565b5b6113f060606112cf565b9050600061140084828501611087565b600083015250602082013567ffffffffffffffff811115611424576114236112ea565b5b611430848285016113a2565b6020830152506040611444848285016110b3565b60408301525092915050565b600061146361145e846112ef565b6112cf565b90508083825260208201905060208402830185811115611486576114856110d2565b5b835b818110156114cd57803567ffffffffffffffff8111156114ab576114aa6110c8565b5b8086016114b889826113d0565b85526020850194505050602081019050611488565b5050509392505050565b600082601f8301126114ec576114eb6110c8565b5b81356114fc848260208601611450565b91505092915050565b60006020828403121561151b5761151a611259565b5b61152560206112cf565b9050600082013567ffffffffffffffff811115611545576115446112ea565b5b611551848285016114d7565b60008301525092915050565b60008060006040848603121561157657611575610f77565b5b600084013567ffffffffffffffff81111561159457611593610f7c565b5b6115a086828701611505565b935050602084013567ffffffffffffffff8111156115c1576115c0610f7c565b5b6115cd868287016110d7565b92509250509250925092565b60008083601f8401126115ef576115ee6110c8565b5b8235905067ffffffffffffffff81111561160c5761160b6110cd565b5b602083019150836020820283011115611628576116276110d2565b5b9250929050565b60008060008060008060008060a0898b03121561164f5761164e610f77565b5b600061165d8b828c01611087565b985050602061166e8b828c01611087565b975050604089013567ffffffffffffffff81111561168f5761168e610f7c565b5b61169b8b828c016115d9565b9650965050606089013567ffffffffffffffff8111156116be576116bd610f7c565b5b6116ca8b828c016115d9565b9450945050608089013567ffffffffffffffff8111156116ed576116ec610f7c565b5b6116f98b828c016110d7565b92509250509295985092959890939650565b60006117168261120b565b9050919050565b6117268161170b565b82525050565b6000602082019050611741600083018461171d565b92915050565b600061175282610f0a565b9050919050565b61176281611747565b811461176d57600080fd5b50565b60008135905061177f81611759565b92915050565b60006020828403121561179b5761179a610f77565b5b60006117a984828501611770565b91505092915050565b60008060008060008060a087890312156117cf576117ce610f77565b5b60006117dd89828a01611087565b96505060206117ee89828a01611087565b95505060406117ff89828a016110b3565b945050606061181089828a016110b3565b935050608087013567ffffffffffffffff81111561183157611830610f7c565b5b61183d89828a016110d7565b92509250509295509295509295565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611893601f8361184c565b915061189e8261185d565b602082019050919050565b600060208201905081810360008301526118c281611886565b9050919050565b7f4d533131333a206e6f207472616e73616374696f6e7320746f2062652065786560008201527f637574696e670000000000000000000000000000000000000000000000000000602082015250565b600061192560268361184c565b9150611930826118c9565b604082019050919050565b6000602082019050818103600083015261195481611918565b9050919050565b7f4d533131343a206163636573732064656e696564000000000000000000000000600082015250565b600061199160148361184c565b915061199c8261195b565b602082019050919050565b600060208201905081810360008301526119c081611984565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119fc81610f0a565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a3c578082015181840152602081019050611a21565b83811115611a4b576000848401525b50505050565b6000611a5c82611a02565b611a668185611a0d565b9350611a76818560208601611a1e565b611a7f8161125e565b840191505092915050565b611a9381610f2b565b82525050565b6000606083016000830151611ab160008601826119f3565b5060208301518482036020860152611ac98282611a51565b9150506040830151611ade6040860182611a8a565b508091505092915050565b6000611af58383611a99565b905092915050565b6000602082019050919050565b6000611b15826119c7565b611b1f81856119d2565b935083602082028501611b31856119e3565b8060005b85811015611b6d5784840389528151611b4e8582611ae9565b9450611b5983611afd565b925060208a01995050600181019050611b35565b50829750879550505050505092915050565b60006020830160008301518482036000860152611b9c8282611b0a565b9150508091505092915050565b600082825260208201905092915050565b6000611bc68385611ba9565b9350611bd3838584611351565b611bdc8361125e565b840190509392505050565b60006040820190508181036000830152611c018186611b7f565b90508181036020830152611c16818486611bba565b9050949350505050565b60006060820190508181036000830152611c3a8186611b7f565b9050611c496020830185610f1c565b611c566040830184611046565b949350505050565b611c6781611006565b8114611c7257600080fd5b50565b600081519050611c8481611c5e565b92915050565b600060208284031215611ca057611c9f610f77565b5b6000611cae84828501611c75565b91505092915050565b7f4d533131353a20636865636b206265666f726520657272000000000000000000600082015250565b6000611ced60178361184c565b9150611cf882611cb7565b602082019050919050565b60006020820190508181036000830152611d1c81611ce0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b6000611d6882611a02565b611d728185611d52565b9350611d82818560208601611a1e565b80840191505092915050565b6000611d9a8284611d5d565b915081905092915050565b600081905092915050565b7f4d533131373a205041206964783a000000000000000000000000000000000000600082015250565b6000611de6600e83611da5565b9150611df182611db0565b600e82019050919050565b600081519050919050565b6000611e1282611dfc565b611e1c8185611da5565b9350611e2c818560208601611a1e565b80840191505092915050565b7f7c726561736f6e3a000000000000000000000000000000000000000000000000600082015250565b6000611e6e600883611da5565b9150611e7982611e38565b600882019050919050565b6000611e8f82611dd9565b9150611e9b8285611e07565b9150611ea682611e61565b9150611eb28284611e07565b91508190509392505050565b6000611ec982611dfc565b611ed3818561184c565b9350611ee3818560208601611a1e565b611eec8161125e565b840191505092915050565b60006020820190508181036000830152611f118184611ebe565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611f5382610f2b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f8657611f85611f19565b5b600182019050919050565b7f4d533131363a20636865636b2061667465722065727200000000000000000000600082015250565b6000611fc760168361184c565b9150611fd282611f91565b602082019050919050565b60006020820190508181036000830152611ff681611fba565b9050919050565b7f4d533131323a206f6e6c792061646d696e20726f6c6500000000000000000000600082015250565b600061203360168361184c565b915061203e82611ffd565b602082019050919050565b6000602082019050818103600083015261206281612026565b9050919050565b6000815190506120788161109c565b92915050565b60006020828403121561209457612093610f77565b5b60006120a284828501612069565b91505092915050565b7f53433133303a206e6f7420612076616c696420636f6e66696720636f6e74726160008201527f6374000000000000000000000000000000000000000000000000000000000000602082015250565b600061210760228361184c565b9150612112826120ab565b604082019050919050565b60006020820190508181036000830152612136816120fa565b9050919050565b60006040820190506121526000830185611046565b61215f6020830184610f1c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006121a082610f2b565b91506121ab83610f2b565b9250826121bb576121ba612166565b5b828204905092915050565b60006121d182610f2b565b91506121dc83610f2b565b9250828210156121ef576121ee611f19565b5b828203905092915050565b600061220582610f2b565b915061221083610f2b565b9250826122205761221f612166565b5b828206905092915050565b600061223682610f2b565b915061224183610f2b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561227657612275611f19565b5b828201905092915050565b600067ffffffffffffffff82111561229c5761229b61126f565b5b6122a58261125e565b9050602081019050919050565b60006122c56122c084612281565b6112cf565b9050828152602081018484840111156122e1576122e061131b565b5b6122ec848285611a1e565b509392505050565b600082601f830112612309576123086110c8565b5b81516123198482602086016122b2565b91505092915050565b60006020828403121561233857612337610f77565b5b600082015167ffffffffffffffff81111561235657612355610f7c565b5b612362848285016122f4565b91505092915050565b7f53433133333a20636f6e666967206e6f74207365740000000000000000000000600082015250565b60006123a160158361184c565b91506123ac8261236b565b602082019050919050565b600060208201905081810360008301526123d081612394565b905091905056fea2646970667358221220413f8b3e0fcc7794267a27f6d5ff8536d82220066c92840b72ef6e504bb2522564736f6c63430008090033
0x60806040523480156200001157600080fd5b506040516200295138038062002951833981810160405281019062000037919062000323565b600160008190555062000050816200008160201b60201c565b7f209a0080f85da7231db43c0b10d326908ce862cc232df1019815182cb120dad960001b6001819055505062000534565b62000097816200009a60201b620009b71760201c565b50565b620000b0816200012e60201b62000a311760201c565b80620000ea7f54c601f62ced84cb3960726428d8409adc363a3fa5c7abf6dba0c198dcc43c1460001b620002af60201b62000ba41760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b1580156200017757600080fd5b505afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000390565b11806200026a57508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fb64394f6000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401620002159190620003ff565b60206040518083038186803b1580156200022e57600080fd5b505afa15801562000243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000269919062000459565b5b620002ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a39062000512565b60405180910390fd5b50565b6000819050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002eb82620002be565b9050919050565b620002fd81620002de565b81146200030957600080fd5b50565b6000815190506200031d81620002f2565b92915050565b6000602082840312156200033c576200033b620002b9565b5b60006200034c848285016200030c565b91505092915050565b6000819050919050565b6200036a8162000355565b81146200037657600080fd5b50565b6000815190506200038a816200035f565b92915050565b600060208284031215620003a957620003a8620002b9565b5b6000620003b98482850162000379565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620003f981620003c2565b82525050565b6000602082019050620004166000830184620003ee565b92915050565b60008115159050919050565b62000433816200041c565b81146200043f57600080fd5b50565b600081519050620004538162000428565b92915050565b600060208284031215620004725762000471620002b9565b5b6000620004828482850162000442565b91505092915050565b600082825260208201905092915050565b7f53433133303a206e6f7420612076616c696420636f6e66696720636f6e74726160008201527f6374000000000000000000000000000000000000000000000000000000000000602082015250565b6000620004fa6022836200048b565b915062000507826200049c565b604082019050919050565b600060208201905081810360008301526200052d81620004eb565b9050919050565b61240d80620005446000396000f3fe60806040526004361061008a5760003560e01c8063a623a8ef11610059578063a623a8ef1461019f578063bc197c81146101bb578063c3f909d4146101f8578063e19a9dd914610223578063f23a6e611461024c576100ca565b806301ffc9a7146100cf57806310055c1d1461010c578063150b7a02146101375780637ceab3b114610174576100ca565b366100ca577ffe2d73074d233633e644a6fb7186458fbf422add1c18d996efd14ffbece6f2b233346040516100c0929190610f44565b60405180910390a1005b600080fd5b3480156100db57600080fd5b506100f660048036038101906100f19190610fd9565b610289565b6040516101039190611021565b60405180910390f35b34801561011857600080fd5b5061012161035b565b60405161012e9190611055565b60405180910390f35b34801561014357600080fd5b5061015e6004803603810190610159919061112d565b610361565b60405161016b91906111c4565b60405180910390f35b34801561018057600080fd5b50610189610376565b604051610196919061123e565b60405180910390f35b6101b960048036038101906101b4919061155d565b61039c565b005b3480156101c757600080fd5b506101e260048036038101906101dd919061162f565b6108c3565b6040516101ef91906111c4565b60405180910390f35b34801561020457600080fd5b5061020d6108db565b60405161021a919061172c565b60405180910390f35b34801561022f57600080fd5b5061024a60048036038101906102459190611785565b6108ea565b005b34801561025857600080fd5b50610273600480360381019061026e91906117b2565b6109a1565b60405161028091906111c4565b60405180910390f35b60007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061035457507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60015481565b600063150b7a0260e01b905095945050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260005414156103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d9906118a9565b60405180910390fd5b6002600081905550600083600001515111610432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104299061193b565b60405180910390fd5b610445600154610440610bae565b610bb6565b610484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047b906119a7565b60405180910390fd5b61048c610bae565b73ffffffffffffffffffffffffffffffffffffffff167ff9fda95d7e1555b30593092241d171240b167c8031641b1b015ffd68d06aae638484846040516104d593929190611be7565b60405180910390a2600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a6ee9ee8461057a610bae565b6001546040518463ffffffff1660e01b815260040161059b93929190611c20565b602060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ed9190611c8a565b61062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062390611d03565b60405180910390fd5b5b60005b8360000151518110156107655760008460000151828151811061065657610655611d23565b5b60200260200101519050600080826000015173ffffffffffffffffffffffffffffffffffffffff16836040015184602001516040516106959190611d8e565b60006040518083038185875af1925050503d80600081146106d2576040519150601f19603f3d011682016040523d82523d6000602084013e6106d7565b606091505b50915091508161074f576106ea84610c52565b6106f382610db3565b604051602001610704929190611e84565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107469190611ef7565b60405180910390fd5b505050808061075d90611f48565b915050610630565b50600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b9e983784610803610bae565b6001546040518463ffffffff1660e01b815260040161082493929190611c20565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611c8a565b6108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90611fdd565b60405180910390fd5b5b6001600081905550505050565b600063bc197c8160e01b905098975050505050505050565b60006108e5610e1e565b905090565b61091e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560001b610919610bae565b610bb6565b61095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095490612049565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600063f23a6e6160e01b90509695505050505050565b6109c081610a31565b806109ed7f54c601f62ced84cb3960726428d8409adc363a3fa5c7abf6dba0c198dcc43c1460001b610ba4565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7957600080fd5b505afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab1919061207e565b1180610b6257508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fb64394f6000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610b1191906111c4565b60206040518083038186803b158015610b2957600080fd5b505afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190611c8a565b5b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b989061211d565b60405180910390fd5b50565b6000819050919050565b600033905090565b6000610bc0610e1e565b73ffffffffffffffffffffffffffffffffffffffff166391d1485484846040518363ffffffff1660e01b8152600401610bfa92919061213d565b60206040518083038186803b158015610c1257600080fd5b505afa158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a9190611c8a565b905092915050565b60606000821415610c9a576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610dae565b600082905060005b60008214610ccc578080610cb590611f48565b915050600a82610cc59190612195565b9150610ca2565b60008167ffffffffffffffff811115610ce857610ce761126f565b5b6040519080825280601f01601f191660200182016040528015610d1a5781602001600182028036833780820191505090505b5090505b60008514610da757600182610d3391906121c6565b9150600a85610d4291906121fa565b6030610d4e919061222b565b60f81b818381518110610d6457610d63611d23565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610da09190612195565b9450610d1e565b8093505050505b919050565b6060604482511015610dfc576040518060400160405280601d81526020017f5472616e73616374696f6e2072657665727465642073696c656e746c790000008152509050610e19565b60048201915081806020019051810190610e169190612322565b90505b919050565b600080610e4d7f54c601f62ced84cb3960726428d8409adc363a3fa5c7abf6dba0c198dcc43c1460001b610ba4565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda906123b7565b60405180910390fd5b8091505090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f1582610eea565b9050919050565b610f2581610f0a565b82525050565b6000819050919050565b610f3e81610f2b565b82525050565b6000604082019050610f596000830185610f1c565b610f666020830184610f35565b9392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fb681610f81565b8114610fc157600080fd5b50565b600081359050610fd381610fad565b92915050565b600060208284031215610fef57610fee610f77565b5b6000610ffd84828501610fc4565b91505092915050565b60008115159050919050565b61101b81611006565b82525050565b60006020820190506110366000830184611012565b92915050565b6000819050919050565b61104f8161103c565b82525050565b600060208201905061106a6000830184611046565b92915050565b61107981610f0a565b811461108457600080fd5b50565b60008135905061109681611070565b92915050565b6110a581610f2b565b81146110b057600080fd5b50565b6000813590506110c28161109c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126110ed576110ec6110c8565b5b8235905067ffffffffffffffff81111561110a576111096110cd565b5b602083019150836001820283011115611126576111256110d2565b5b9250929050565b60008060008060006080868803121561114957611148610f77565b5b600061115788828901611087565b955050602061116888828901611087565b9450506040611179888289016110b3565b935050606086013567ffffffffffffffff81111561119a57611199610f7c565b5b6111a6888289016110d7565b92509250509295509295909350565b6111be81610f81565b82525050565b60006020820190506111d960008301846111b5565b92915050565b6000819050919050565b60006112046111ff6111fa84610eea565b6111df565b610eea565b9050919050565b6000611216826111e9565b9050919050565b60006112288261120b565b9050919050565b6112388161121d565b82525050565b6000602082019050611253600083018461122f565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6112a78261125e565b810181811067ffffffffffffffff821117156112c6576112c561126f565b5b80604052505050565b60006112d9610f6d565b90506112e5828261129e565b919050565b600080fd5b600067ffffffffffffffff82111561130a5761130961126f565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff82111561133b5761133a61126f565b5b6113448261125e565b9050602081019050919050565b82818337600083830152505050565b600061137361136e84611320565b6112cf565b90508281526020810184848401111561138f5761138e61131b565b5b61139a848285611351565b509392505050565b600082601f8301126113b7576113b66110c8565b5b81356113c7848260208601611360565b91505092915050565b6000606082840312156113e6576113e5611259565b5b6113f060606112cf565b9050600061140084828501611087565b600083015250602082013567ffffffffffffffff811115611424576114236112ea565b5b611430848285016113a2565b6020830152506040611444848285016110b3565b60408301525092915050565b600061146361145e846112ef565b6112cf565b90508083825260208201905060208402830185811115611486576114856110d2565b5b835b818110156114cd57803567ffffffffffffffff8111156114ab576114aa6110c8565b5b8086016114b889826113d0565b85526020850194505050602081019050611488565b5050509392505050565b600082601f8301126114ec576114eb6110c8565b5b81356114fc848260208601611450565b91505092915050565b60006020828403121561151b5761151a611259565b5b61152560206112cf565b9050600082013567ffffffffffffffff811115611545576115446112ea565b5b611551848285016114d7565b60008301525092915050565b60008060006040848603121561157657611575610f77565b5b600084013567ffffffffffffffff81111561159457611593610f7c565b5b6115a086828701611505565b935050602084013567ffffffffffffffff8111156115c1576115c0610f7c565b5b6115cd868287016110d7565b92509250509250925092565b60008083601f8401126115ef576115ee6110c8565b5b8235905067ffffffffffffffff81111561160c5761160b6110cd565b5b602083019150836020820283011115611628576116276110d2565b5b9250929050565b60008060008060008060008060a0898b03121561164f5761164e610f77565b5b600061165d8b828c01611087565b985050602061166e8b828c01611087565b975050604089013567ffffffffffffffff81111561168f5761168e610f7c565b5b61169b8b828c016115d9565b9650965050606089013567ffffffffffffffff8111156116be576116bd610f7c565b5b6116ca8b828c016115d9565b9450945050608089013567ffffffffffffffff8111156116ed576116ec610f7c565b5b6116f98b828c016110d7565b92509250509295985092959890939650565b60006117168261120b565b9050919050565b6117268161170b565b82525050565b6000602082019050611741600083018461171d565b92915050565b600061175282610f0a565b9050919050565b61176281611747565b811461176d57600080fd5b50565b60008135905061177f81611759565b92915050565b60006020828403121561179b5761179a610f77565b5b60006117a984828501611770565b91505092915050565b60008060008060008060a087890312156117cf576117ce610f77565b5b60006117dd89828a01611087565b96505060206117ee89828a01611087565b95505060406117ff89828a016110b3565b945050606061181089828a016110b3565b935050608087013567ffffffffffffffff81111561183157611830610f7c565b5b61183d89828a016110d7565b92509250509295509295509295565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611893601f8361184c565b915061189e8261185d565b602082019050919050565b600060208201905081810360008301526118c281611886565b9050919050565b7f4d533131333a206e6f207472616e73616374696f6e7320746f2062652065786560008201527f637574696e670000000000000000000000000000000000000000000000000000602082015250565b600061192560268361184c565b9150611930826118c9565b604082019050919050565b6000602082019050818103600083015261195481611918565b9050919050565b7f4d533131343a206163636573732064656e696564000000000000000000000000600082015250565b600061199160148361184c565b915061199c8261195b565b602082019050919050565b600060208201905081810360008301526119c081611984565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119fc81610f0a565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a3c578082015181840152602081019050611a21565b83811115611a4b576000848401525b50505050565b6000611a5c82611a02565b611a668185611a0d565b9350611a76818560208601611a1e565b611a7f8161125e565b840191505092915050565b611a9381610f2b565b82525050565b6000606083016000830151611ab160008601826119f3565b5060208301518482036020860152611ac98282611a51565b9150506040830151611ade6040860182611a8a565b508091505092915050565b6000611af58383611a99565b905092915050565b6000602082019050919050565b6000611b15826119c7565b611b1f81856119d2565b935083602082028501611b31856119e3565b8060005b85811015611b6d5784840389528151611b4e8582611ae9565b9450611b5983611afd565b925060208a01995050600181019050611b35565b50829750879550505050505092915050565b60006020830160008301518482036000860152611b9c8282611b0a565b9150508091505092915050565b600082825260208201905092915050565b6000611bc68385611ba9565b9350611bd3838584611351565b611bdc8361125e565b840190509392505050565b60006040820190508181036000830152611c018186611b7f565b90508181036020830152611c16818486611bba565b9050949350505050565b60006060820190508181036000830152611c3a8186611b7f565b9050611c496020830185610f1c565b611c566040830184611046565b949350505050565b611c6781611006565b8114611c7257600080fd5b50565b600081519050611c8481611c5e565b92915050565b600060208284031215611ca057611c9f610f77565b5b6000611cae84828501611c75565b91505092915050565b7f4d533131353a20636865636b206265666f726520657272000000000000000000600082015250565b6000611ced60178361184c565b9150611cf882611cb7565b602082019050919050565b60006020820190508181036000830152611d1c81611ce0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b6000611d6882611a02565b611d728185611d52565b9350611d82818560208601611a1e565b80840191505092915050565b6000611d9a8284611d5d565b915081905092915050565b600081905092915050565b7f4d533131373a205041206964783a000000000000000000000000000000000000600082015250565b6000611de6600e83611da5565b9150611df182611db0565b600e82019050919050565b600081519050919050565b6000611e1282611dfc565b611e1c8185611da5565b9350611e2c818560208601611a1e565b80840191505092915050565b7f7c726561736f6e3a000000000000000000000000000000000000000000000000600082015250565b6000611e6e600883611da5565b9150611e7982611e38565b600882019050919050565b6000611e8f82611dd9565b9150611e9b8285611e07565b9150611ea682611e61565b9150611eb28284611e07565b91508190509392505050565b6000611ec982611dfc565b611ed3818561184c565b9350611ee3818560208601611a1e565b611eec8161125e565b840191505092915050565b60006020820190508181036000830152611f118184611ebe565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611f5382610f2b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f8657611f85611f19565b5b600182019050919050565b7f4d533131363a20636865636b2061667465722065727200000000000000000000600082015250565b6000611fc760168361184c565b9150611fd282611f91565b602082019050919050565b60006020820190508181036000830152611ff681611fba565b9050919050565b7f4d533131323a206f6e6c792061646d696e20726f6c6500000000000000000000600082015250565b600061203360168361184c565b915061203e82611ffd565b602082019050919050565b6000602082019050818103600083015261206281612026565b9050919050565b6000815190506120788161109c565b92915050565b60006020828403121561209457612093610f77565b5b60006120a284828501612069565b91505092915050565b7f53433133303a206e6f7420612076616c696420636f6e66696720636f6e74726160008201527f6374000000000000000000000000000000000000000000000000000000000000602082015250565b600061210760228361184c565b9150612112826120ab565b604082019050919050565b60006020820190508181036000830152612136816120fa565b9050919050565b60006040820190506121526000830185611046565b61215f6020830184610f1c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006121a082610f2b565b91506121ab83610f2b565b9250826121bb576121ba612166565b5b828204905092915050565b60006121d182610f2b565b91506121dc83610f2b565b9250828210156121ef576121ee611f19565b5b828203905092915050565b600061220582610f2b565b915061221083610f2b565b9250826122205761221f612166565b5b828206905092915050565b600061223682610f2b565b915061224183610f2b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561227657612275611f19565b5b828201905092915050565b600067ffffffffffffffff82111561229c5761229b61126f565b5b6122a58261125e565b9050602081019050919050565b60006122c56122c084612281565b6112cf565b9050828152602081018484840111156122e1576122e061131b565b5b6122ec848285611a1e565b509392505050565b600082601f830112612309576123086110c8565b5b81516123198482602086016122b2565b91505092915050565b60006020828403121561233857612337610f77565b5b600082015167ffffffffffffffff81111561235657612355610f7c565b5b612362848285016122f4565b91505092915050565b7f53433133333a20636f6e666967206e6f74207365740000000000000000000000600082015250565b60006123a160158361184c565b91506123ac8261236b565b602082019050919050565b600060208201905081810360008301526123d081612394565b905091905056fea2646970667358221220413f8b3e0fcc7794267a27f6d5ff8536d82220066c92840b72ef6e504bb2522564736f6c63430008090033000000000000000000000000f86cf46a6a9cf508362773eb1cf1f3ebf93373ce