Testnet
Contract 0.0.4949473
Overview
Contract ID
0.0.4949473
Associated Account
Auto Renew Account
None
Proxy Account
None
Created at
Oct 4, 2024, 1:47:10 PM UTC
Expired at
Jan 2, 2025, 1:47:10 PM UTC
File ID
0.0.4860665
Obtainer ID
None
Memo
0.0.4949472
Admin Key
None
EVM Address
0000 0000 0000 0000 0000 0000 0000 0000 004b 85e1
(0x00000000000000000000000000000000004b85e1)
Byte Code
Payload
{
"admin_key":
NULL
"auto_renew_account":
NULL
"auto_renew_period":
int7776000
"contract_id":
string"0.0.4949473"
"created_timestamp":
string"1728049630.417247946"
"deleted":
boolfalse
"evm_address":
string"0x00000000000000000000000000000000004b85e1"
"expiration_timestamp":
string"1735825630.417247946"
"file_id":
string"0.0.4860665"
"max_automatic_token_associations":
int0
"memo":
string"0.0.4949472"
"nonce":
int3
"obtainer_id":
NULL
"permanent_removal":
NULL
"proxy_account_id":
NULL
"timestamp":{
...
}"bytecode":
string"0x60806040523480156200001157600080fd5b507fe08a5a5a5961d44a767b4036190243499e0ae25390fa44d7c4a74ca962747f32620000436200029c60201b60201c565b60405162000052919062000438565b60405180910390a16200008c337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620002c960201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c333604051620000bd91906200049a565b60405180910390a1620000f7307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620002c960201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3306040516200012891906200049a565b60405180910390a162000162337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42620002c960201b60201c565b62000194307fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42620002c960201b60201c565b604051620001a29062000335565b604051809103906000f080158015620001bf573d6000803e3d6000fd5b5060016000600160ff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620002239062000343565b604051809103906000f08015801562000240573d6000803e3d6000fd5b5060016000600260ff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004b7565b620002a662000351565b604051806060016040528060018152602001600081526020016001815250905090565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6188a5806200479f83390190565b61a05c806200d04483390190565b6040518060600160405280600390602082028036833780820191505090505090565b600060039050919050565b600081905092915050565b6000819050919050565b6000819050919050565b620003a88162000393565b82525050565b6000620003bc83836200039d565b60208301905092915050565b6000602082019050919050565b620003e08162000373565b620003ec81846200037e565b9250620003f98262000389565b8060005b8381101562000430578151620004148782620003ae565b96506200042183620003c8565b925050600181019050620003fd565b505050505050565b60006060820190506200044f6000830184620003d5565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004828262000455565b9050919050565b620004948162000475565b82525050565b6000602082019050620004b1600083018462000489565b92915050565b6142d880620004c76000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370480275116100c3578063c48d8e021161007c578063c48d8e0214610384578063c873032b146103b4578063d8fd814f146103d0578063ddedfcf314610400578063ec0071051461041c578063f0fbda2d1461044d5761014d565b806370480275146102c457806397b2544f146102e0578063a50b33e014610310578063a8068d181461032c578063ab8c71c014610348578063b6db75a0146103665761014d565b806324758dcb1161011557806324758dcb146101f25780632e2244021461020e578063440722081461023e5780635786e9321461025a57806365c43cc71461027657806366f03d9a146102945761014d565b80630842bf821461015257806311480d591461016e578063118fee951461018a5780631785f53c146101a65780631820b3bf146101c2575b600080fd5b61016c600480360381019061016791906129e5565b61047d565b005b61018860048036038101906101839190612a7a565b6107cd565b005b6101a4600480360381019061019f9190612a7a565b610969565b005b6101c060048036038101906101bb9190612aa7565b610b05565b005b6101dc60048036038101906101d79190612b97565b610c27565b6040516101e99190612bef565b60405180910390f35b61020c60048036038101906102079190612c65565b610e14565b005b61022860048036038101906102239190612d08565b611193565b6040516102359190612f47565b60405180910390f35b61025860048036038101906102539190612f69565b61125d565b005b610274600480360381019061026f9190612b97565b611493565b005b61027e611630565b60405161028b919061307e565b60405180910390f35b6102ae60048036038101906102a99190612c65565b61165b565b6040516102bb9190612bef565b60405180910390f35b6102de60048036038101906102d99190612aa7565b61171f565b005b6102fa60048036038101906102f59190612aa7565b611841565b6040516103079190612bef565b60405180910390f35b61032a60048036038101906103259190613099565b6119b8565b005b610346600480360381019061034191906130e6565b611a2b565b005b610350611bcd565b60405161035d9190613151565b60405180910390f35b61036e611c25565b60405161037b9190612bef565b60405180910390f35b61039e60048036038101906103999190612a7a565b611c56565b6040516103ab91906131f4565b60405180910390f35b6103ce60048036038101906103c99190613099565b611d17565b005b6103ea60048036038101906103e59190612a7a565b611e01565b6040516103f79190612bef565b60405180910390f35b61041a60048036038101906104159190612f69565b611e73565b005b61043660048036038101906104319190612b97565b61201c565b6040516104449291906132f4565b60405180910390f35b61046760048036038101906104629190612a7a565b6120e2565b60405161047491906131f4565b60405180910390f35b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661053a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053190613381565b60405180910390fd5b60005b83518110156106e75760008061057086848151811061055f5761055e6133a1565b5b6020026020010151600001516121a3565b9150915060018160006003811061058a576105896133a1565b5b60200201511480156105b457506000816001600381106105ad576105ac6133a1565b5b6020020151145b80156105d857506000816002600381106105d1576105d06133a1565b5b6020020151145b15610645578173ffffffffffffffffffffffffffffffffffffffff16632459ca666040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561062557600080fd5b505af1925050508015610636575060015b61063f57610640565b5b6106d2565b8173ffffffffffffffffffffffffffffffffffffffff1663d5e6c68a878581518110610674576106736133a1565b5b6020026020010151600001516040518263ffffffff1660e01b815260040161069c91906133df565b600060405180830381600087803b1580156106b657600080fd5b505af19250505080156106c7575060015b6106d0576106d1565b5b5b505080806106df90613429565b91505061053d565b5060016000845160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630842bf8284846040518363ffffffff1660e01b815260040161075d9291906132f4565b600060405180830381600087803b15801561077757600080fd5b505af115801561078b573d6000803e3d6000fd5b505050507f14810161b0c93c5c7dfa3bf8a1a5d02c721f4a32b0c9ea33b511e5c0789ac2b283836040516107c09291906132f4565b60405180910390a1505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088190613381565b60405180910390fd5b600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166311480d59836040518263ffffffff1660e01b81526004016108fc9190613151565b600060405180830381600087803b15801561091657600080fd5b505af115801561092a573d6000803e3d6000fd5b505050507fa5010e135493057a9f5399a895ad226a54cf65d6918d7ddc9c406cdac5a75ae88260405161095d9190613151565b60405180910390a15050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1d90613381565b60405180910390fd5b600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663118fee95836040518263ffffffff1660e01b8152600401610a989190613151565b600060405180830381600087803b158015610ab257600080fd5b505af1158015610ac6573d6000803e3d6000fd5b505050507f196ca0e3fd19725314e00d7778ebab832867aa26efc88e069cfd5f80185523df82604051610af99190613151565b60405180910390a15050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb990613381565b60405180910390fd5b610bec827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec426122f1565b7fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f82604051610c1b91906133df565b60405180910390a15050565b600080600090505b8251811015610e0957600080610c5e858481518110610c5157610c506133a1565b5b60200260200101516121a3565b91509150600181600060038110610c7857610c776133a1565b5b6020020151148015610ca25750600081600160038110610c9b57610c9a6133a1565b5b6020020151145b8015610cc65750600081600260038110610cbf57610cbe6133a1565b5b6020020151145b15610d4f578173ffffffffffffffffffffffffffffffffffffffff16631a10f76c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a9190613487565b610d4a5760009350505050610e0f565b610df4565b8173ffffffffffffffffffffffffffffffffffffffff1663d82f54d4868581518110610d7e57610d7d6133a1565b5b60200260200101516040518263ffffffff1660e01b8152600401610da291906133df565b602060405180830381865afa158015610dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de39190613487565b610df35760009350505050610e0f565b5b50508080610e0190613429565b915050610c2f565b50600190505b919050565b60005b8282905081101561106557610e61838383818110610e3857610e376133a1565b5b9050602002810190610e4a91906134c3565b6000016020810190610e5c9190612aa7565b611841565b610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9790613537565b60405180910390fd5b60005b838383818110610eb657610eb56133a1565b5b9050602002810190610ec891906134c3565b8060400190610ed79190613557565b9050811015611051576000600182610eef91906135ba565b90505b848484818110610f0557610f046133a1565b5b9050602002810190610f1791906134c3565b8060400190610f269190613557565b905081101561103d57848484818110610f4257610f416133a1565b5b9050602002810190610f5491906134c3565b8060400190610f639190613557565b82818110610f7457610f736133a1565b5b9050602002016020810190610f899190613610565b60070b858585818110610f9f57610f9e6133a1565b5b9050602002810190610fb191906134c3565b8060400190610fc09190613557565b84818110610fd157610fd06133a1565b5b9050602002016020810190610fe69190613610565b60070b141561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190613689565b60405180910390fd5b808061103590613429565b915050610ef2565b50808061104990613429565b915050610ea3565b50808061105d90613429565b915050610e17565b506000600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324758dcb60e01b84846040516024016110d69291906138ee565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611140919061394e565b600060405180830381855af49150503d806000811461117b576040519150601f19603f3d011682016040523d82523d6000602084013e611180565b606091505b505090508061118e57600080fd5b505050565b6060600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e2244028585856040518463ffffffff1660e01b815260040161120e93929190613a02565b600060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112549190613c82565b90509392505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190613381565b60405180910390fd5b6000600160008585905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634407220860e01b86868660405160240161138c93929190613ccb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113f6919061394e565b600060405180830381855af49150503d8060008114611431576040519150601f19603f3d011682016040523d82523d6000602084013e611436565b606091505b505090508061144457600080fd5b60006114508585612396565b90507fead06a119bf9374925260679eee8bb050c060c7cff525b986aa7978faa23aeb88682604051611483929190613d83565b60405180910390a1505050505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154790613381565b60405180910390fd5b60016000835160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635786e932836040518263ffffffff1660e01b81526004016115c39190613db3565b600060405180830381600087803b1580156115dd57600080fd5b505af11580156115f1573d6000803e3d6000fd5b505050507f5cfc35115fc8e9e720735c4e73900d28a033c3dac8efb748752f64b98bbf8d56826040516116249190613db3565b60405180910390a15050565b6116386126d0565b604051806060016040528060018152602001600081526020016001815250905090565b6000600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366f03d9a84846040518363ffffffff1660e01b81526004016116d49291906138ee565b6020604051808303816000875af11580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190613487565b905092915050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390613381565b60405180910390fd5b611806827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42612498565b7f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3398260405161183591906133df565b60405180910390a15050565b600080600061184f846121a3565b91509150600181600060038110611869576118686133a1565b5b6020020151148015611893575060008160016003811061188c5761188b6133a1565b5b6020020151145b80156118b757506000816002600381106118b0576118af6133a1565b5b6020020151145b15611934578173ffffffffffffffffffffffffffffffffffffffff16631a10f76c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190613487565b925050506119b3565b8173ffffffffffffffffffffffffffffffffffffffff1663d82f54d4856040518263ffffffff1660e01b815260040161196d91906133df565b602060405180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae9190613487565b925050505b919050565b3073ffffffffffffffffffffffffffffffffffffffff1663a8068d183384846040518463ffffffff1660e01b81526004016119f593929190613a02565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613381565b60405180910390fd5b60016000835160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8068d1884846040518363ffffffff1660e01b8152600401611b5d929190613d83565b600060405180830381600087803b158015611b7757600080fd5b505af1158015611b8b573d6000803e3d6000fd5b505050507fead06a119bf9374925260679eee8bb050c060c7cff525b986aa7978faa23aeb88383604051611bc0929190613d83565b60405180910390a1505050565b60008060009050611bfe337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b612504565b15611c0a576001811790505b611c12611c25565b15611c1e576002811790505b8091505090565b6000611c51337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42612504565b905090565b6060600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c48d8e02836040518263ffffffff1660e01b8152600401611cca9190613151565b600060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d109190613e7b565b9050919050565b600160008383905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8068d183384846040518463ffffffff1660e01b8152600401611d9093929190613a02565b600060405180830381600087803b158015611daa57600080fd5b505af1158015611dbe573d6000803e3d6000fd5b505050507fead06a119bf9374925260679eee8bb050c060c7cff525b986aa7978faa23aeb8338383604051611df593929190613a02565b60405180910390a15050565b60008073ffffffffffffffffffffffffffffffffffffffff16600160008460ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613381565b60405180910390fd5b600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddedfcf38585856040518463ffffffff1660e01b8152600401611fa993929190613ccb565b600060405180830381600087803b158015611fc357600080fd5b505af1158015611fd7573d6000803e3d6000fd5b505050507f811dad75e5e67db969d68b96a86f7b9f7ac4cf22738745f1a5dd0d4d97d7fd2684848460405161200e93929190613ccb565b60405180910390a150505050565b6060600060016000845160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec007105846040518263ffffffff1660e01b81526004016120939190613db3565b600060405180830381865afa1580156120b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906120d99190613fab565b91509150915091565b6060600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0fbda2d836040518263ffffffff1660e01b81526004016121569190613151565b600060405180830381865afa158015612173573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061219c9190613e7b565b9050919050565b60006121ad6126d0565b60006040518060600160405280600181526020016000815260200160008152509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122115760008192509250506122ec565b600061221e85600861256b565b905060008073ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16141561226457816080015161226a565b81602001515b90508073ffffffffffffffffffffffffffffffffffffffff166365c43cc76040518163ffffffff1660e01b8152600401606060405180830381865afa9250505080156122d457506040513d601f19601f820116820180604052508101906122d191906140e4565b60015b6122dd576122e2565b809350505b8083945094505050505b915091565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561232a57600080fd5b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060008383905067ffffffffffffffff8111156123b7576123b6612779565b5b6040519080825280602002602001820160405280156123e55781602001602082028036833780820191505090505b50905060005b8484905081101561248d57848482818110612409576124086133a1565b5b905060200281019061241b91906134c3565b600001602081019061242d9190612aa7565b8282815181106124405761243f6133a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061248590613429565b9150506123eb565b508091505092915050565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6125736126f2565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16633c4dd32e60e01b87876040516024016125ac929190614120565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612616919061394e565b6000604051808303816000865af19150503d8060008114612653576040519150601f19603f3d011682016040523d82523d6000602084013e612658565b606091505b50915091508161266a5760158461267f565b8080602001905181019061267e9190614246565b5b8095508194505050601660030b8360030b146126c7576040517f664cb42300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060a00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127b182612768565b810181811067ffffffffffffffff821117156127d0576127cf612779565b5b80604052505050565b60006127e361274f565b90506127ef82826127a8565b919050565b600067ffffffffffffffff82111561280f5761280e612779565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061285a8261282f565b9050919050565b61286a8161284f565b811461287557600080fd5b50565b60008135905061288781612861565b92915050565b60008160070b9050919050565b6128a38161288d565b81146128ae57600080fd5b50565b6000813590506128c08161289a565b92915050565b6000604082840312156128dc576128db612825565b5b6128e660406127d9565b905060006128f684828501612878565b600083015250602061290a848285016128b1565b60208301525092915050565b6000612929612924846127f4565b6127d9565b9050808382526020820190506040840283018581111561294c5761294b612820565b5b835b81811015612975578061296188826128c6565b84526020840193505060408101905061294e565b5050509392505050565b600082601f83011261299457612993612763565b5b81356129a4848260208601612916565b91505092915050565b60008115159050919050565b6129c2816129ad565b81146129cd57600080fd5b50565b6000813590506129df816129b9565b92915050565b600080604083850312156129fc576129fb612759565b5b600083013567ffffffffffffffff811115612a1a57612a1961275e565b5b612a268582860161297f565b9250506020612a37858286016129d0565b9150509250929050565b600060ff82169050919050565b612a5781612a41565b8114612a6257600080fd5b50565b600081359050612a7481612a4e565b92915050565b600060208284031215612a9057612a8f612759565b5b6000612a9e84828501612a65565b91505092915050565b600060208284031215612abd57612abc612759565b5b6000612acb84828501612878565b91505092915050565b600067ffffffffffffffff821115612aef57612aee612779565b5b602082029050602081019050919050565b6000612b13612b0e84612ad4565b6127d9565b90508083825260208201905060208402830185811115612b3657612b35612820565b5b835b81811015612b5f5780612b4b8882612878565b845260208401935050602081019050612b38565b5050509392505050565b600082601f830112612b7e57612b7d612763565b5b8135612b8e848260208601612b00565b91505092915050565b600060208284031215612bad57612bac612759565b5b600082013567ffffffffffffffff811115612bcb57612bca61275e565b5b612bd784828501612b69565b91505092915050565b612be9816129ad565b82525050565b6000602082019050612c046000830184612be0565b92915050565b600080fd5b60008083601f840112612c2557612c24612763565b5b8235905067ffffffffffffffff811115612c4257612c41612c0a565b5b602083019150836020820283011115612c5e57612c5d612820565b5b9250929050565b60008060208385031215612c7c57612c7b612759565b5b600083013567ffffffffffffffff811115612c9a57612c9961275e565b5b612ca685828601612c0f565b92509250509250929050565b60008083601f840112612cc857612cc7612763565b5b8235905067ffffffffffffffff811115612ce557612ce4612c0a565b5b602083019150836020820283011115612d0157612d00612820565b5b9250929050565b600080600060408486031215612d2157612d20612759565b5b6000612d2f86828701612878565b935050602084013567ffffffffffffffff811115612d5057612d4f61275e565b5b612d5c86828701612cb2565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d9d8161284f565b82525050565b612dac8161288d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612dea8383612da3565b60208301905092915050565b6000602082019050919050565b6000612e0e82612db2565b612e188185612dbd565b9350612e2383612dce565b8060005b83811015612e54578151612e3b8882612dde565b9750612e4683612df6565b925050600181019050612e27565b5085935050505092915050565b6000606083016000830151612e796000860182612d94565b506020830151612e8c6020860182612da3565b5060408301518482036040860152612ea48282612e03565b9150508091505092915050565b6000612ebd8383612e61565b905092915050565b6000602082019050919050565b6000612edd82612d68565b612ee78185612d73565b935083602082028501612ef985612d84565b8060005b85811015612f355784840389528151612f168582612eb1565b9450612f2183612ec5565b925060208a01995050600181019050612efd565b50829750879550505050505092915050565b60006020820190508181036000830152612f618184612ed2565b905092915050565b600080600060408486031215612f8257612f81612759565b5b6000612f9086828701612878565b935050602084013567ffffffffffffffff811115612fb157612fb061275e565b5b612fbd86828701612c0f565b92509250509250925092565b600060039050919050565b600081905092915050565b6000819050919050565b6000819050919050565b612ffc81612fe9565b82525050565b600061300e8383612ff3565b60208301905092915050565b6000602082019050919050565b61303081612fc9565b61303a8184612fd4565b925061304582612fdf565b8060005b8381101561307657815161305d8782613002565b96506130688361301a565b925050600181019050613049565b505050505050565b60006060820190506130936000830184613027565b92915050565b600080602083850312156130b0576130af612759565b5b600083013567ffffffffffffffff8111156130ce576130cd61275e565b5b6130da85828601612cb2565b92509250509250929050565b600080604083850312156130fd576130fc612759565b5b600061310b85828601612878565b925050602083013567ffffffffffffffff81111561312c5761312b61275e565b5b61313885828601612b69565b9150509250929050565b61314b81612a41565b82525050565b60006020820190506131666000830184613142565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131a657808201518184015260208101905061318b565b838111156131b5576000848401525b50505050565b60006131c68261316c565b6131d08185613177565b93506131e0818560208601613188565b6131e981612768565b840191505092915050565b6000602082019050818103600083015261320e81846131bb565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6040820160008201516132586000850182612d94565b50602082015161326b6020850182612da3565b50505050565b600061327d8383613242565b60408301905092915050565b6000602082019050919050565b60006132a182613216565b6132ab8185613221565b93506132b683613232565b8060005b838110156132e75781516132ce8882613271565b97506132d983613289565b9250506001810190506132ba565b5085935050505092915050565b6000604082019050818103600083015261330e8185613296565b905061331d6020830184612be0565b9392505050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b600061336b600e83613324565b915061337682613335565b602082019050919050565b6000602082019050818103600083015261339a8161335e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6133d98161284f565b82525050565b60006020820190506133f460008301846133d0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061343482612fe9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613467576134666133fa565b5b600182019050919050565b600081519050613481816129b9565b92915050565b60006020828403121561349d5761349c612759565b5b60006134ab84828501613472565b91505092915050565b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126134df576134de6134b4565b5b80830191505092915050565b7f504149525f4e4f545f415641494c41424c450000000000000000000000000000600082015250565b6000613521601283613324565b915061352c826134eb565b602082019050919050565b6000602082019050818103600083015261355081613514565b9050919050565b60008083356001602003843603038112613574576135736134b4565b5b80840192508235915067ffffffffffffffff821115613596576135956134b9565b5b6020830192506020820236038313156135b2576135b16134be565b5b509250929050565b60006135c582612fe9565b91506135d083612fe9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613605576136046133fa565b5b828201905092915050565b60006020828403121561362657613625612759565b5b6000613634848285016128b1565b91505092915050565b7f4e4f545f554e495155455f53455249414c530000000000000000000000000000600082015250565b6000613673601283613324565b915061367e8261363d565b602082019050919050565b600060208201905081810360008301526136a281613666565b9050919050565b6000819050919050565b60006136c26020840184612878565b905092915050565b60006136d960208401846128b1565b905092915050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261370d5761370c6136eb565b5b83810192508235915060208301925067ffffffffffffffff821115613735576137346136e1565b5b60208202360384131561374b5761374a6136e6565b5b509250929050565b6000819050919050565b6000602082019050919050565b60006137768385612dbd565b935061378182613753565b8060005b858110156137ba5761379782846136ca565b6137a18882612dde565b97506137ac8361375d565b925050600181019050613785565b5085925050509392505050565b6000606083016137da60008401846136b3565b6137e76000860182612d94565b506137f560208401846136ca565b6138026020860182612da3565b5061381060408401846136f0565b858303604087015261382383828461376a565b925050508091505092915050565b600061383d83836137c7565b905092915050565b600082356001606003833603038112613861576138606136eb565b5b82810191505092915050565b6000602082019050919050565b60006138868385612d73565b935083602084028501613898846136a9565b8060005b878110156138dc5784840389526138b38284613845565b6138bd8582613831565b94506138c88361386d565b925060208a0199505060018101905061389c565b50829750879450505050509392505050565b6000602082019050818103600083015261390981848661387a565b90509392505050565b600081905092915050565b60006139288261316c565b6139328185613912565b9350613942818560208601613188565b80840191505092915050565b600061395a828461391d565b915081905092915050565b600082825260208201905092915050565b6000819050919050565b600061398c8383612d94565b60208301905092915050565b6000602082019050919050565b60006139b18385613965565b93506139bc82613976565b8060005b858110156139f5576139d282846136b3565b6139dc8882613980565b97506139e783613998565b9250506001810190506139c0565b5085925050509392505050565b6000604082019050613a1760008301866133d0565b8181036020830152613a2a8184866139a5565b9050949350505050565b600067ffffffffffffffff821115613a4f57613a4e612779565b5b602082029050602081019050919050565b600081519050613a6f81612861565b92915050565b600081519050613a848161289a565b92915050565b600067ffffffffffffffff821115613aa557613aa4612779565b5b602082029050602081019050919050565b6000613ac9613ac484613a8a565b6127d9565b90508083825260208201905060208402830185811115613aec57613aeb612820565b5b835b81811015613b155780613b018882613a75565b845260208401935050602081019050613aee565b5050509392505050565b600082601f830112613b3457613b33612763565b5b8151613b44848260208601613ab6565b91505092915050565b600060608284031215613b6357613b62612825565b5b613b6d60606127d9565b90506000613b7d84828501613a60565b6000830152506020613b9184828501613a75565b602083015250604082015167ffffffffffffffff811115613bb557613bb461282a565b5b613bc184828501613b1f565b60408301525092915050565b6000613be0613bdb84613a34565b6127d9565b90508083825260208201905060208402830185811115613c0357613c02612820565b5b835b81811015613c4a57805167ffffffffffffffff811115613c2857613c27612763565b5b808601613c358982613b4d565b85526020850194505050602081019050613c05565b5050509392505050565b600082601f830112613c6957613c68612763565b5b8151613c79848260208601613bcd565b91505092915050565b600060208284031215613c9857613c97612759565b5b600082015167ffffffffffffffff811115613cb657613cb561275e565b5b613cc284828501613c54565b91505092915050565b6000604082019050613ce060008301866133d0565b8181036020830152613cf381848661387a565b9050949350505050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000613d3082613cfd565b613d3a8185613965565b9350613d4583613d08565b8060005b83811015613d76578151613d5d8882613980565b9750613d6883613d18565b925050600181019050613d49565b5085935050505092915050565b6000604082019050613d9860008301856133d0565b8181036020830152613daa8184613d25565b90509392505050565b60006020820190508181036000830152613dcd8184613d25565b905092915050565b600080fd5b600067ffffffffffffffff821115613df557613df4612779565b5b613dfe82612768565b9050602081019050919050565b6000613e1e613e1984613dda565b6127d9565b905082815260208101848484011115613e3a57613e39613dd5565b5b613e45848285613188565b509392505050565b600082601f830112613e6257613e61612763565b5b8151613e72848260208601613e0b565b91505092915050565b600060208284031215613e9157613e90612759565b5b600082015167ffffffffffffffff811115613eaf57613eae61275e565b5b613ebb84828501613e4d565b91505092915050565b600060408284031215613eda57613ed9612825565b5b613ee460406127d9565b90506000613ef484828501613a60565b6000830152506020613f0884828501613a75565b60208301525092915050565b6000613f27613f22846127f4565b6127d9565b90508083825260208201905060408402830185811115613f4a57613f49612820565b5b835b81811015613f735780613f5f8882613ec4565b845260208401935050604081019050613f4c565b5050509392505050565b600082601f830112613f9257613f91612763565b5b8151613fa2848260208601613f14565b91505092915050565b60008060408385031215613fc257613fc1612759565b5b600083015167ffffffffffffffff811115613fe057613fdf61275e565b5b613fec85828601613f7d565b9250506020613ffd85828601613472565b9150509250929050565b600067ffffffffffffffff82111561402257614021612779565b5b602082029050919050565b61403681612fe9565b811461404157600080fd5b50565b6000815190506140538161402d565b92915050565b600061406c61406784614007565b6127d9565b9050806020840283018581111561408657614085612820565b5b835b818110156140af578061409b8882614044565b845260208401935050602081019050614088565b5050509392505050565b600082601f8301126140ce576140cd612763565b5b60036140db848285614059565b91505092915050565b6000606082840312156140fa576140f9612759565b5b6000614108848285016140b9565b91505092915050565b61411a81612fe9565b82525050565b600060408201905061413560008301856133d0565b6141426020830184614111565b9392505050565b60008160030b9050919050565b61415f81614149565b811461416a57600080fd5b50565b60008151905061417c81614156565b92915050565b600060a0828403121561419857614197612825565b5b6141a260a06127d9565b905060006141b284828501613472565b60008301525060206141c684828501613a60565b602083015250604082015167ffffffffffffffff8111156141ea576141e961282a565b5b6141f684828501613e4d565b604083015250606082015167ffffffffffffffff81111561421a5761421961282a565b5b61422684828501613e4d565b606083015250608061423a84828501613a60565b60808301525092915050565b6000806040838503121561425d5761425c612759565b5b600061426b8582860161416d565b925050602083015167ffffffffffffffff81111561428c5761428b61275e565b5b61429885828601614182565b915050925092905056fea26469706673582212205592542d0cd06b3d1a77d0bd8bf53b1beda8c832dec52ff66cb8d4ce8d3d203264736f6c634300080b003360806040523480156200001157600080fd5b50604051620000209062000437565b604051809103906000f0801580156200003d573d6000803e3d6000fd5b5062000070337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620001e060201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c333604051620000a191906200048a565b60405180910390a1620000db307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620001e060201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3306040516200010c91906200048a565b60405180910390a162000146337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42620001e060201b60201c565b62000178307fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42620001e060201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c96200024c60201b60201c565b620001d9620002bb60201b60201c565b5062000636565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620002646389db5a0560e01b6200032a60201b60201c565b806020019051810190620002799190620004f1565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b620002d3632b057dae60e01b6200032a60201b60201c565b806020019051810190620002e8919062000568565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051620003db91906200061d565b600060405180830381855af49150503d806000811462000418576040519150601f19603f3d011682016040523d82523d6000602084013e6200041d565b606091505b5091509150816200042d57600080fd5b8092505050919050565b613d488062004b5d83390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004728262000445565b9050919050565b620004848162000465565b82525050565b6000602082019050620004a1600083018462000479565b92915050565b600080fd5b6000620004b98262000465565b9050919050565b620004cb81620004ac565b8114620004d757600080fd5b50565b600081519050620004eb81620004c0565b92915050565b6000602082840312156200050a5762000509620004a7565b5b60006200051a84828501620004da565b91505092915050565b6000620005308262000465565b9050919050565b620005428162000523565b81146200054e57600080fd5b50565b600081519050620005628162000537565b92915050565b600060208284031215620005815762000580620004a7565b5b6000620005918482850162000551565b91505092915050565b600081519050919050565b600081905092915050565b60005b83811015620005d0578082015181840152602081019050620005b3565b83811115620005e0576000848401525b50505050565b6000620005f3826200059a565b620005ff8185620005a5565b935062000611818560208601620005b0565b80840191505092915050565b60006200062b8284620005e6565b915081905092915050565b61451780620006466000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806366f03d9a116100ad578063b6db75a011610071578063b6db75a0146102ec578063c48d8e021461030a578063ddedfcf31461033a578063ec00710514610356578063f0fbda2d1461038757610121565b806366f03d9a1461024a578063704802751461027a578063a50b33e014610296578063a8068d18146102b2578063ab8c71c0146102ce57610121565b80631820b3bf116100f45780631820b3bf1461019657806324758dcb146101c65780632e224402146101e257806344072208146102125780635786e9321461022e57610121565b80630842bf821461012657806311480d5914610142578063118fee951461015e5780631785f53c1461017a575b600080fd5b610140600480360381019061013b9190612888565b6103b7565b005b61015c6004803603810190610157919061291d565b61051b565b005b6101786004803603810190610173919061291d565b6105e4565b005b610194600480360381019061018f919061294a565b6106ad565b005b6101b060048036038101906101ab9190612a3a565b6107cf565b6040516101bd9190612a92565b60405180910390f35b6101e060048036038101906101db9190612b08565b6109bc565b005b6101fc60048036038101906101f79190612bab565b610c9f565b6040516102099190612dea565b60405180910390f35b61022c60048036038101906102279190612e0c565b610d4f565b005b61024860048036038101906102439190612a3a565b610f8d565b005b610264600480360381019061025f9190612b08565b6110ee565b6040516102719190612a92565b60405180910390f35b610294600480360381019061028f919061294a565b6112b5565b005b6102b060048036038101906102ab9190612e6c565b6113d7565b005b6102cc60048036038101906102c79190612eb9565b61144a565b005b6102d66115ae565b6040516102e39190612f24565b60405180910390f35b6102f4611606565b6040516103019190612a92565b60405180910390f35b610324600480360381019061031f919061291d565b611637565b6040516103319190612fc7565b60405180910390f35b610354600480360381019061034f9190612e0c565b6116e1565b005b610370600480360381019061036b9190612a3a565b61184a565b60405161037e9291906130c7565b60405180910390f35b6103a1600480360381019061039c919061291d565b61190b565b6040516103ae9190612fc7565b60405180910390f35b815160018160ff16146103c957600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d90613154565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630842bf8285856040518363ffffffff1660e01b81526004016104e39291906130c7565b600060405180830381600087803b1580156104fd57600080fd5b505af1158015610511573d6000803e3d6000fd5b5050505050505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cf90613154565b60405180910390fd5b6105e06119b5565b5050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069890613154565b60405180910390fd5b6106a9611a1a565b5050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076190613154565b60405180910390fd5b610794827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42611a7f565b7fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f826040516107c39190613183565b60405180910390a15050565b600080600090505b82518110156109b1576000806108068584815181106107f9576107f861319e565b5b6020026020010151611b24565b915091506001816000600381106108205761081f61319e565b5b602002015114801561084a57506000816001600381106108435761084261319e565b5b6020020151145b801561086e57506000816002600381106108675761086661319e565b5b6020020151145b156108f7578173ffffffffffffffffffffffffffffffffffffffff16631a10f76c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e291906131e2565b6108f257600093505050506109b7565b61099c565b8173ffffffffffffffffffffffffffffffffffffffff1663d82f54d48685815181106109265761092561319e565b5b60200260200101516040518263ffffffff1660e01b815260040161094a9190613183565b602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b91906131e2565b61099b57600093505050506109b7565b5b505080806109a990613248565b9150506107d7565b50600190505b919050565b8181905060018160ff16146109d057600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166366f03d9a84846040518363ffffffff1660e01b8152600401610a0b9291906134d6565b6020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906131e2565b610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490613546565b60405180910390fd5b60008383905067ffffffffffffffff811115610aac57610aab61261c565b5b604051908082528060200260200182016040528015610ada5781602001602082028036833780820191505090505b50905060005b84849050811015610b8257848482818110610afe57610afd61319e565b5b9050602002810190610b109190613575565b6000016020810190610b22919061294a565b828281518110610b3557610b3461319e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080610b7a90613248565b915050610ae0565b5060003073ffffffffffffffffffffffffffffffffffffffff1663ec007105836040518263ffffffff1660e01b8152600401610bbe919061364c565b600060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c04919061377f565b9150508015610c2857610c2333868690610c1e91906139d1565b611c72565b610c98565b3073ffffffffffffffffffffffffffffffffffffffff1663ddedfcf33387876040518463ffffffff1660e01b8152600401610c65939291906139e6565b600060405180830381600087803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b505050505b5050505050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e2244028585856040518463ffffffff1660e01b8152600401610d0093929190613a8c565b600060405180830381865afa158015610d1d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d469190613c8a565b90509392505050565b8181905060018160ff1614610d6357600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613154565b60405180910390fd5b6000610e2c8585611edc565b905060003073ffffffffffffffffffffffffffffffffffffffff16632e22440288846040518363ffffffff1660e01b8152600401610e6b929190613cd3565b600060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eb19190613c8a565b905080604051602001610ec49190612dea565b604051602081830303815290604052805190602001208686604051602001610eed9291906134d6565b6040516020818303038152906040528051906020012014610f0d57600080fd5b610f178782611c72565b3073ffffffffffffffffffffffffffffffffffffffff1663a8068d1888846040518363ffffffff1660e01b8152600401610f52929190613cd3565b600060405180830381600087803b158015610f6c57600080fd5b505af1158015610f80573d6000803e3d6000fd5b5050505050505050505050565b805160018160ff1614610f9f57600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661105c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105390613154565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635786e932846040518263ffffffff1660e01b81526004016110b7919061364c565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050565b60008282905060018160ff161461110457600080fd5b6000600167ffffffffffffffff8111156111215761112061261c565b5b60405190808252806020026020018201604052801561114f5781602001602082028036833780820191505090505b509050848460008181106111665761116561319e565b5b90506020028101906111789190613575565b600001602081019061118a919061294a565b8160008151811061119e5761119d61319e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006111e38261184a565b5090506000816000815181106111fc576111fb61319e565b5b60200260200101516020015160070b1361121557600080fd5b60006112458787600081811061122e5761122d61319e565b5b90506020028101906112409190613575565b611fde565b90508160008151811061125b5761125a61319e565b5b60200260200101516020015160070b8160070b121580156112a9575060008260008151811061128d5761128c61319e565b5b602002602001015160200151826112a49190613d32565b60070b145b94505050505092915050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990613154565b60405180910390fd5b61139c827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec426120d7565b7f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339826040516113cb9190613183565b60405180910390a15050565b3073ffffffffffffffffffffffffffffffffffffffff1663a8068d183384846040518463ffffffff1660e01b815260040161141493929190613a8c565b600060405180830381600087803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b505050505050565b805160018160ff161461145c57600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151090613154565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8068d1885856040518363ffffffff1660e01b8152600401611576929190613cd3565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b5050505050505050565b600080600090506115df337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b612143565b156115eb576001811790505b6115f3611606565b156115ff576002811790505b8091505090565b6000611632337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42612143565b905090565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c48d8e02836040518263ffffffff1660e01b81526004016116949190612f24565b600060405180830381865afa1580156116b1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116da9190613e09565b9050919050565b8181905060018160ff16146116f557600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990613154565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddedfcf38686866040518463ffffffff1660e01b8152600401611811939291906139e6565b600060405180830381600087803b15801561182b57600080fd5b505af115801561183f573d6000803e3d6000fd5b505050505050505050565b60606000825160018160ff161461186057600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec007105856040518263ffffffff1660e01b81526004016118bb919061364c565b600060405180830381865afa1580156118d8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611901919061377f565b9250925050915091565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0fbda2d836040518263ffffffff1660e01b81526004016119689190612f24565b600060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119ae9190613e09565b9050919050565b6119c5632b057dae60e01b6121aa565b8060200190518101906119d89190613e90565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a2a6389db5a0560e01b6121aa565b806020019051810190611a3d9190613efb565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab857600080fd5b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b2e612573565b60006040518060600160405280600181526020016000815260200160008152509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b92576000819250925050611c6d565b6000611b9f8560086122b2565b905060008073ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff161415611be5578160800151611beb565b81602001515b90508073ffffffffffffffffffffffffffffffffffffffff166365c43cc76040518163ffffffff1660e01b8152600401606060405180830381865afa925050508015611c5557506040513d601f19601f82011682018060405250810190611c529190614005565b60015b611c5e57611c63565b809350505b8083945094505050505b915091565b60005b8151811015611e9e576000611ca7838381518110611c9657611c9561319e565b5b602002602001015160000151612417565b90506000611cd2848481518110611cc157611cc061319e565b5b602002602001015160000151611b24565b50905060008260030b1415611d91578073ffffffffffffffffffffffffffffffffffffffff1663575a61c8858581518110611d1057611d0f61319e565b5b60200260200101516000015187878781518110611d3057611d2f61319e565b5b6020026020010151602001516040518463ffffffff1660e01b8152600401611d5a93929190614041565b600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b50505050611e89565b60018260030b1415611e4d578073ffffffffffffffffffffffffffffffffffffffff166389b9c45c858581518110611dcc57611dcb61319e565b5b60200260200101516000015187878781518110611dec57611deb61319e565b5b6020026020010151604001516040518463ffffffff1660e01b8152600401611e16939291906140e7565b600060405180830381600087803b158015611e3057600080fd5b505af1158015611e44573d6000803e3d6000fd5b50505050611e88565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90614171565b60405180910390fd5b5b50508080611e9690613248565b915050611c75565b507f760b5d447de9a6afab4457b996807616ccd3b048f15f77e82cc55fdb70962f4e8282604051611ed0929190614191565b60405180910390a15050565b606060008383905067ffffffffffffffff811115611efd57611efc61261c565b5b604051908082528060200260200182016040528015611f2b5781602001602082028036833780820191505090505b50905060005b84849050811015611fd357848482818110611f4f57611f4e61319e565b5b9050602002810190611f619190613575565b6000016020810190611f73919061294a565b828281518110611f8657611f8561319e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080611fcb90613248565b915050611f31565b508091505092915050565b600080611ffc836000016020810190611ff7919061294a565b612417565b90506000808260030b14156120255783602001602081019061201e91906141c1565b90506120cd565b60018260030b14156120915783806040019061204191906141ee565b90509050600a8160070b131561208c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120839061429d565b60405180910390fd5b6120cc565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c390614171565b60405180910390fd5b5b8092505050919050565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161225991906142f9565b600060405180830381855af49150503d8060008114612294576040519150601f19603f3d011682016040523d82523d6000602084013e612299565b606091505b5091509150816122a857600080fd5b8092505050919050565b6122ba612595565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16633c4dd32e60e01b87876040516024016122f392919061431f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161235d91906142f9565b6000604051808303816000865af19150503d806000811461239a576040519150601f19603f3d011682016040523d82523d6000602084013e61239f565b606091505b5091509150816123b1576015846123c6565b808060200190518101906123c59190614445565b5b8095508194505050601660030b8360030b1461240e576040517f664cb42300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b60008060008061016773ffffffffffffffffffffffffffffffffffffffff166393272baf60e01b8660405160240161244f9190613183565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124b991906142f9565b6000604051808303816000865af19150503d80600081146124f6576040519150601f19603f3d011682016040523d82523d6000602084013e6124fb565b606091505b50915091508161250e5760156000612523565b8080602001905181019061252291906144a1565b5b8095508194505050601660030b8360030b1461256b576040517fba96339e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050919050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060a00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126548261260b565b810181811067ffffffffffffffff821117156126735761267261261c565b5b80604052505050565b60006126866125f2565b9050612692828261264b565b919050565b600067ffffffffffffffff8211156126b2576126b161261c565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126fd826126d2565b9050919050565b61270d816126f2565b811461271857600080fd5b50565b60008135905061272a81612704565b92915050565b60008160070b9050919050565b61274681612730565b811461275157600080fd5b50565b6000813590506127638161273d565b92915050565b60006040828403121561277f5761277e6126c8565b5b612789604061267c565b905060006127998482850161271b565b60008301525060206127ad84828501612754565b60208301525092915050565b60006127cc6127c784612697565b61267c565b905080838252602082019050604084028301858111156127ef576127ee6126c3565b5b835b8181101561281857806128048882612769565b8452602084019350506040810190506127f1565b5050509392505050565b600082601f83011261283757612836612606565b5b81356128478482602086016127b9565b91505092915050565b60008115159050919050565b61286581612850565b811461287057600080fd5b50565b6000813590506128828161285c565b92915050565b6000806040838503121561289f5761289e6125fc565b5b600083013567ffffffffffffffff8111156128bd576128bc612601565b5b6128c985828601612822565b92505060206128da85828601612873565b9150509250929050565b600060ff82169050919050565b6128fa816128e4565b811461290557600080fd5b50565b600081359050612917816128f1565b92915050565b600060208284031215612933576129326125fc565b5b600061294184828501612908565b91505092915050565b6000602082840312156129605761295f6125fc565b5b600061296e8482850161271b565b91505092915050565b600067ffffffffffffffff8211156129925761299161261c565b5b602082029050602081019050919050565b60006129b66129b184612977565b61267c565b905080838252602082019050602084028301858111156129d9576129d86126c3565b5b835b81811015612a0257806129ee888261271b565b8452602084019350506020810190506129db565b5050509392505050565b600082601f830112612a2157612a20612606565b5b8135612a318482602086016129a3565b91505092915050565b600060208284031215612a5057612a4f6125fc565b5b600082013567ffffffffffffffff811115612a6e57612a6d612601565b5b612a7a84828501612a0c565b91505092915050565b612a8c81612850565b82525050565b6000602082019050612aa76000830184612a83565b92915050565b600080fd5b60008083601f840112612ac857612ac7612606565b5b8235905067ffffffffffffffff811115612ae557612ae4612aad565b5b602083019150836020820283011115612b0157612b006126c3565b5b9250929050565b60008060208385031215612b1f57612b1e6125fc565b5b600083013567ffffffffffffffff811115612b3d57612b3c612601565b5b612b4985828601612ab2565b92509250509250929050565b60008083601f840112612b6b57612b6a612606565b5b8235905067ffffffffffffffff811115612b8857612b87612aad565b5b602083019150836020820283011115612ba457612ba36126c3565b5b9250929050565b600080600060408486031215612bc457612bc36125fc565b5b6000612bd28682870161271b565b935050602084013567ffffffffffffffff811115612bf357612bf2612601565b5b612bff86828701612b55565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c40816126f2565b82525050565b612c4f81612730565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612c8d8383612c46565b60208301905092915050565b6000602082019050919050565b6000612cb182612c55565b612cbb8185612c60565b9350612cc683612c71565b8060005b83811015612cf7578151612cde8882612c81565b9750612ce983612c99565b925050600181019050612cca565b5085935050505092915050565b6000606083016000830151612d1c6000860182612c37565b506020830151612d2f6020860182612c46565b5060408301518482036040860152612d478282612ca6565b9150508091505092915050565b6000612d608383612d04565b905092915050565b6000602082019050919050565b6000612d8082612c0b565b612d8a8185612c16565b935083602082028501612d9c85612c27565b8060005b85811015612dd85784840389528151612db98582612d54565b9450612dc483612d68565b925060208a01995050600181019050612da0565b50829750879550505050505092915050565b60006020820190508181036000830152612e048184612d75565b905092915050565b600080600060408486031215612e2557612e246125fc565b5b6000612e338682870161271b565b935050602084013567ffffffffffffffff811115612e5457612e53612601565b5b612e6086828701612ab2565b92509250509250925092565b60008060208385031215612e8357612e826125fc565b5b600083013567ffffffffffffffff811115612ea157612ea0612601565b5b612ead85828601612b55565b92509250509250929050565b60008060408385031215612ed057612ecf6125fc565b5b6000612ede8582860161271b565b925050602083013567ffffffffffffffff811115612eff57612efe612601565b5b612f0b85828601612a0c565b9150509250929050565b612f1e816128e4565b82525050565b6000602082019050612f396000830184612f15565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f79578082015181840152602081019050612f5e565b83811115612f88576000848401525b50505050565b6000612f9982612f3f565b612fa38185612f4a565b9350612fb3818560208601612f5b565b612fbc8161260b565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60408201600082015161302b6000850182612c37565b50602082015161303e6020850182612c46565b50505050565b60006130508383613015565b60408301905092915050565b6000602082019050919050565b600061307482612fe9565b61307e8185612ff4565b935061308983613005565b8060005b838110156130ba5781516130a18882613044565b97506130ac8361305c565b92505060018101905061308d565b5085935050505092915050565b600060408201905081810360008301526130e18185613069565b90506130f06020830184612a83565b9392505050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b600061313e600e836130f7565b915061314982613108565b602082019050919050565b6000602082019050818103600083015261316d81613131565b9050919050565b61317d816126f2565b82525050565b60006020820190506131986000830184613174565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131dc8161285c565b92915050565b6000602082840312156131f8576131f76125fc565b5b6000613206848285016131cd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006132538261323e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132865761328561320f565b5b600182019050919050565b6000819050919050565b60006132aa602084018461271b565b905092915050565b60006132c16020840184612754565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126132f5576132f46132d3565b5b83810192508235915060208301925067ffffffffffffffff82111561331d5761331c6132c9565b5b602082023603841315613333576133326132ce565b5b509250929050565b6000819050919050565b6000602082019050919050565b600061335e8385612c60565b93506133698261333b565b8060005b858110156133a25761337f82846132b2565b6133898882612c81565b975061339483613345565b92505060018101905061336d565b5085925050509392505050565b6000606083016133c2600084018461329b565b6133cf6000860182612c37565b506133dd60208401846132b2565b6133ea6020860182612c46565b506133f860408401846132d8565b858303604087015261340b838284613352565b925050508091505092915050565b600061342583836133af565b905092915050565b600082356001606003833603038112613449576134486132d3565b5b82810191505092915050565b6000602082019050919050565b600061346e8385612c16565b93508360208402850161348084613291565b8060005b878110156134c457848403895261349b828461342d565b6134a58582613419565b94506134b083613455565b925060208a01995050600181019050613484565b50829750879450505050509392505050565b600060208201905081810360008301526134f1818486613462565b90509392505050565b7f5245544952455f434845434b0000000000000000000000000000000000000000600082015250565b6000613530600c836130f7565b915061353b826134fa565b602082019050919050565b6000602082019050818103600083015261355f81613523565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160600383360303811261359157613590613566565b5b80830191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006135d58383612c37565b60208301905092915050565b6000602082019050919050565b60006135f98261359d565b61360381856135a8565b935061360e836135b9565b8060005b8381101561363f57815161362688826135c9565b9750613631836135e1565b925050600181019050613612565b5085935050505092915050565b6000602082019050818103600083015261366681846135ee565b905092915050565b60008151905061367d81612704565b92915050565b6000815190506136928161273d565b92915050565b6000604082840312156136ae576136ad6126c8565b5b6136b8604061267c565b905060006136c88482850161366e565b60008301525060206136dc84828501613683565b60208301525092915050565b60006136fb6136f684612697565b61267c565b9050808382526020820190506040840283018581111561371e5761371d6126c3565b5b835b8181101561374757806137338882613698565b845260208401935050604081019050613720565b5050509392505050565b600082601f83011261376657613765612606565b5b81516137768482602086016136e8565b91505092915050565b60008060408385031215613796576137956125fc565b5b600083015167ffffffffffffffff8111156137b4576137b3612601565b5b6137c085828601613751565b92505060206137d1858286016131cd565b9150509250929050565b600067ffffffffffffffff8211156137f6576137f561261c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156138225761382161261c565b5b602082029050602081019050919050565b600061384661384184613807565b61267c565b90508083825260208201905060208402830185811115613869576138686126c3565b5b835b81811015613892578061387e8882612754565b84526020840193505060208101905061386b565b5050509392505050565b600082601f8301126138b1576138b0612606565b5b81356138c1848260208601613833565b91505092915050565b6000606082840312156138e0576138df6126c8565b5b6138ea606061267c565b905060006138fa8482850161271b565b600083015250602061390e84828501612754565b602083015250604082013567ffffffffffffffff811115613932576139316126cd565b5b61393e8482850161389c565b60408301525092915050565b600061395d613958846137db565b61267c565b905080838252602082019050602084028301858111156139805761397f6126c3565b5b835b818110156139c757803567ffffffffffffffff8111156139a5576139a4612606565b5b8086016139b289826138ca565b85526020850194505050602081019050613982565b5050509392505050565b60006139de36848461394a565b905092915050565b60006040820190506139fb6000830186613174565b8181036020830152613a0e818486613462565b9050949350505050565b6000819050919050565b6000602082019050919050565b6000613a3b83856135a8565b9350613a4682613a18565b8060005b85811015613a7f57613a5c828461329b565b613a6688826135c9565b9750613a7183613a22565b925050600181019050613a4a565b5085925050509392505050565b6000604082019050613aa16000830186613174565b8181036020830152613ab4818486613a2f565b9050949350505050565b6000613ad1613acc84613807565b61267c565b90508083825260208201905060208402830185811115613af457613af36126c3565b5b835b81811015613b1d5780613b098882613683565b845260208401935050602081019050613af6565b5050509392505050565b600082601f830112613b3c57613b3b612606565b5b8151613b4c848260208601613abe565b91505092915050565b600060608284031215613b6b57613b6a6126c8565b5b613b75606061267c565b90506000613b858482850161366e565b6000830152506020613b9984828501613683565b602083015250604082015167ffffffffffffffff811115613bbd57613bbc6126cd565b5b613bc984828501613b27565b60408301525092915050565b6000613be8613be3846137db565b61267c565b90508083825260208201905060208402830185811115613c0b57613c0a6126c3565b5b835b81811015613c5257805167ffffffffffffffff811115613c3057613c2f612606565b5b808601613c3d8982613b55565b85526020850194505050602081019050613c0d565b5050509392505050565b600082601f830112613c7157613c70612606565b5b8151613c81848260208601613bd5565b91505092915050565b600060208284031215613ca057613c9f6125fc565b5b600082015167ffffffffffffffff811115613cbe57613cbd612601565b5b613cca84828501613c5c565b91505092915050565b6000604082019050613ce86000830185613174565b8181036020830152613cfa81846135ee565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d3d82612730565b9150613d4883612730565b925082613d5857613d57613d03565b5b828207905092915050565b600080fd5b600067ffffffffffffffff821115613d8357613d8261261c565b5b613d8c8261260b565b9050602081019050919050565b6000613dac613da784613d68565b61267c565b905082815260208101848484011115613dc857613dc7613d63565b5b613dd3848285612f5b565b509392505050565b600082601f830112613df057613def612606565b5b8151613e00848260208601613d99565b91505092915050565b600060208284031215613e1f57613e1e6125fc565b5b600082015167ffffffffffffffff811115613e3d57613e3c612601565b5b613e4984828501613ddb565b91505092915050565b6000613e5d826126f2565b9050919050565b613e6d81613e52565b8114613e7857600080fd5b50565b600081519050613e8a81613e64565b92915050565b600060208284031215613ea657613ea56125fc565b5b6000613eb484828501613e7b565b91505092915050565b6000613ec8826126f2565b9050919050565b613ed881613ebd565b8114613ee357600080fd5b50565b600081519050613ef581613ecf565b92915050565b600060208284031215613f1157613f106125fc565b5b6000613f1f84828501613ee6565b91505092915050565b600067ffffffffffffffff821115613f4357613f4261261c565b5b602082029050919050565b613f578161323e565b8114613f6257600080fd5b50565b600081519050613f7481613f4e565b92915050565b6000613f8d613f8884613f28565b61267c565b90508060208402830185811115613fa757613fa66126c3565b5b835b81811015613fd05780613fbc8882613f65565b845260208401935050602081019050613fa9565b5050509392505050565b600082601f830112613fef57613fee612606565b5b6003613ffc848285613f7a565b91505092915050565b60006060828403121561401b5761401a6125fc565b5b600061402984828501613fda565b91505092915050565b61403b81612730565b82525050565b60006060820190506140566000830186613174565b6140636020830185613174565b6140706040830184614032565b949350505050565b600082825260208201905092915050565b600061409482612c55565b61409e8185614078565b93506140a983612c71565b8060005b838110156140da5781516140c18882612c81565b97506140cc83612c99565b9250506001810190506140ad565b5085935050505092915050565b60006060820190506140fc6000830186613174565b6141096020830185613174565b818103604083015261411b8184614089565b9050949350505050565b7f554e535550504f525445445f544f4b454e5f5459504500000000000000000000600082015250565b600061415b6016836130f7565b915061416682614125565b602082019050919050565b6000602082019050818103600083015261418a8161414e565b9050919050565b60006040820190506141a66000830185613174565b81810360208301526141b88184612d75565b90509392505050565b6000602082840312156141d7576141d66125fc565b5b60006141e584828501612754565b91505092915050565b6000808335600160200384360303811261420b5761420a613566565b5b80840192508235915067ffffffffffffffff82111561422d5761422c61356b565b5b60208301925060208202360383131561424957614248613570565b5b509250929050565b7f4e4654535f4c494d495400000000000000000000000000000000000000000000600082015250565b6000614287600a836130f7565b915061429282614251565b602082019050919050565b600060208201905081810360008301526142b68161427a565b9050919050565b600081905092915050565b60006142d382612f3f565b6142dd81856142bd565b93506142ed818560208601612f5b565b80840191505092915050565b600061430582846142c8565b915081905092915050565b6143198161323e565b82525050565b60006040820190506143346000830185613174565b6143416020830184614310565b9392505050565b60008160030b9050919050565b61435e81614348565b811461436957600080fd5b50565b60008151905061437b81614355565b92915050565b600060a08284031215614397576143966126c8565b5b6143a160a061267c565b905060006143b1848285016131cd565b60008301525060206143c58482850161366e565b602083015250604082015167ffffffffffffffff8111156143e9576143e86126cd565b5b6143f584828501613ddb565b604083015250606082015167ffffffffffffffff811115614419576144186126cd565b5b61442584828501613ddb565b60608301525060806144398482850161366e565b60808301525092915050565b6000806040838503121561445c5761445b6125fc565b5b600061446a8582860161436c565b925050602083015167ffffffffffffffff81111561448b5761448a612601565b5b61449785828601614381565b9150509250929050565b600080604083850312156144b8576144b76125fc565b5b60006144c68582860161436c565b92505060206144d78582860161436c565b915050925092905056fea264697066735822122096dd620d455cbf67294f60af0d97ac61f880b30d14d4c320a319ef53de37f70f64736f6c634300080b0033608060405234801561001057600080fd5b50613d28806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632b057dae1461003b57806389db5a0514610059575b600080fd5b610043610077565b6040516100509190610170565b60405180910390f35b6100616100a7565b60405161006e91906101ac565b60405180910390f35b6000604051610085906100d7565b604051809103906000f0801580156100a1573d6000803e3d6000fd5b50905090565b60006040516100b5906100e4565b604051809103906000f0801580156100d1573d6000803e3d6000fd5b50905090565b611f8a806101c883390190565b611ba18061215283390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061013661013161012c846100f1565b610111565b6100f1565b9050919050565b60006101488261011b565b9050919050565b600061015a8261013d565b9050919050565b61016a8161014f565b82525050565b60006020820190506101856000830184610161565b92915050565b60006101968261013d565b9050919050565b6101a68161018b565b82525050565b60006020820190506101c1600083018461019d565b9291505056fe60806040523480156200001157600080fd5b5062000044337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3336040516200007591906200019f565b60405180910390a1620000af307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c330604051620000e091906200019f565b60405180910390a1620001bc565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000187826200015a565b9050919050565b62000199816200017a565b82525050565b6000602082019050620001b660008301846200018e565b92915050565b611dbe80620001cc6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632e22440214610051578063a8068d1814610081578063ddedfcf31461009d578063f0fbda2d146100b9575b600080fd5b61006b600480360381019061006691906110e3565b6100e9565b604051610078919061132f565b60405180910390f35b61009b600480360381019061009691906114a0565b610331565b005b6100b760048036038101906100b29190611552565b610979565b005b6100d360048036038101906100ce91906115eb565b610e44565b6040516100e091906116a0565b60405180910390f35b60606000849050600084846000818110610106576101056116c2565b5b905060200201602081019061011b91906116f1565b90506000600180600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546101a99190611757565b815481106101ba576101b96116c2565b5b906000526020600020906003020190506000600167ffffffffffffffff8111156101e7576101e6611362565b5b60405190808252806020026020018201604052801561022057816020015b61020d610e6e565b8152602001906001900390816102055790505b50905060405180606001604052808360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018360010160149054906101000a900460070b60070b8152602001836002018054806020026020016040519081016040528092919081815260200182805480156102fc57602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116102c55790505b505050505081525081600081518110610318576103176116c2565b5b6020026020010181905250809450505050509392505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e5906117e8565b60405180910390fd5b6000839050600083600081518110610409576104086116c2565b5b602002602001015190506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c990611854565b60405180910390fd5b600060018080805490506104e69190611757565b815481106104f7576104f66116c2565b5b90600052602060002090600302019050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600180808054905061065e9190611757565b8154811061066f5761066e6116c2565b5b9060005260206000209060030201600180600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107079190611757565b81548110610718576107176116c2565b5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900460070b8160010160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506002820181600201908054610849929190610ea8565b50905050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560018054806108df576108de611874565b5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff021916905560028201600061096d9190610f08565b50509055505050505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d906117e8565b60405180910390fd5b6000849050600084846000818110610a5157610a506116c2565b5b9050602002810190610a6391906118b2565b6000016020810190610a7591906116f1565b9050600085856000818110610a8d57610a8c6116c2565b5b9050602002810190610a9f91906118b2565b6020016020810190610ab19190611906565b9050600086866000818110610ac957610ac86116c2565b5b9050602002810190610adb91906118b2565b8060400190610aea9190611933565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505090506000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610c5a576000600167ffffffffffffffff811115610bce57610bcd611362565b5b604051908082528060200260200182016040528015610bfc5781602001602082028036833780820191505090505b5090508381600081518110610c1457610c136116c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610c588582610331565b505b600160405180608001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018460070b815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506060820151816002019080519060200190610db1929190610f30565b505050600180549050600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505050565b60606001604051602001610e589190611d66565b6040516020818303038152906040529050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060070b8152602001606081525090565b82805482825590600052602060002090600301600490048101928215610ef7576000526020600020916003016004900482015b82811115610ef6578254825591600101919060010190610edb565b5b509050610f049190610fef565b5090565b508054600082556003016004900490600052602060002090810190610f2d9190610fef565b50565b82805482825590600052602060002090600301600490048101928215610fde5791602002820160005b83821115610fa857835183826101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055509260200192600801602081600701049283019260010302610f59565b8015610fdc5782816101000a81549067ffffffffffffffff0219169055600801602081600701049283019260010302610fa8565b505b509050610feb9190610fef565b5090565b5b80821115611008576000816000905550600101610ff0565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061104b82611020565b9050919050565b61105b81611040565b811461106657600080fd5b50565b60008135905061107881611052565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126110a3576110a261107e565b5b8235905067ffffffffffffffff8111156110c0576110bf611083565b5b6020830191508360208202830111156110dc576110db611088565b5b9250929050565b6000806000604084860312156110fc576110fb611016565b5b600061110a86828701611069565b935050602084013567ffffffffffffffff81111561112b5761112a61101b565b5b6111378682870161108d565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61117881611040565b82525050565b60008160070b9050919050565b6111948161117e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006111d2838361118b565b60208301905092915050565b6000602082019050919050565b60006111f68261119a565b61120081856111a5565b935061120b836111b6565b8060005b8381101561123c57815161122388826111c6565b975061122e836111de565b92505060018101905061120f565b5085935050505092915050565b6000606083016000830151611261600086018261116f565b506020830151611274602086018261118b565b506040830151848203604086015261128c82826111eb565b9150508091505092915050565b60006112a58383611249565b905092915050565b6000602082019050919050565b60006112c582611143565b6112cf818561114e565b9350836020820285016112e18561115f565b8060005b8581101561131d57848403895281516112fe8582611299565b9450611309836112ad565b925060208a019950506001810190506112e5565b50829750879550505050505092915050565b6000602082019050818103600083015261134981846112ba565b905092915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61139a82611351565b810181811067ffffffffffffffff821117156113b9576113b8611362565b5b80604052505050565b60006113cc61100c565b90506113d88282611391565b919050565b600067ffffffffffffffff8211156113f8576113f7611362565b5b602082029050602081019050919050565b600061141c611417846113dd565b6113c2565b9050808382526020820190506020840283018581111561143f5761143e611088565b5b835b8181101561146857806114548882611069565b845260208401935050602081019050611441565b5050509392505050565b600082601f8301126114875761148661107e565b5b8135611497848260208601611409565b91505092915050565b600080604083850312156114b7576114b6611016565b5b60006114c585828601611069565b925050602083013567ffffffffffffffff8111156114e6576114e561101b565b5b6114f285828601611472565b9150509250929050565b60008083601f8401126115125761151161107e565b5b8235905067ffffffffffffffff81111561152f5761152e611083565b5b60208301915083602082028301111561154b5761154a611088565b5b9250929050565b60008060006040848603121561156b5761156a611016565b5b600061157986828701611069565b935050602084013567ffffffffffffffff81111561159a5761159961101b565b5b6115a6868287016114fc565b92509250509250925092565b600060ff82169050919050565b6115c8816115b2565b81146115d357600080fd5b50565b6000813590506115e5816115bf565b92915050565b60006020828403121561160157611600611016565b5b600061160f848285016115d6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611652578082015181840152602081019050611637565b83811115611661576000848401525b50505050565b600061167282611618565b61167c8185611623565b935061168c818560208601611634565b61169581611351565b840191505092915050565b600060208201905081810360008301526116ba8184611667565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561170757611706611016565b5b600061171584828501611069565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117628261171e565b915061176d8361171e565b9250828210156117805761177f611728565b5b828203905092915050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b60006117d2600e8361178b565b91506117dd8261179c565b602082019050919050565b60006020820190508181036000830152611801816117c5565b9050919050565b7f4e4f5f5245515545535400000000000000000000000000000000000000000000600082015250565b600061183e600a8361178b565b915061184982611808565b602082019050919050565b6000602082019050818103600083015261186d81611831565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126118ce576118cd6118a3565b5b80830191505092915050565b6118e38161117e565b81146118ee57600080fd5b50565b600081359050611900816118da565b92915050565b60006020828403121561191c5761191b611016565b5b600061192a848285016118f1565b91505092915050565b600080833560016020038436030381126119505761194f6118a3565b5b80840192508235915067ffffffffffffffff821115611972576119716118a8565b5b60208301925060208202360383131561198e5761198d6118ad565b5b509250929050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a07611a02836119c7565b6119d4565b9050919050565b60008160a01c9050919050565b60008160070b9050919050565b6000611a3b611a3683611a0e565b611a1b565b9050919050565b600081549050919050565b60008190508160005260206000209050919050565b6000611a75611a70836119c7565b611a1b565b9050919050565b60008160401c9050919050565b6000611a9c611a9783611a7c565b611a1b565b9050919050565b60008160801c9050919050565b6000611ac3611abe83611aa3565b611a1b565b9050919050565b60008160c01c9050919050565b6000611aea611ae583611aca565b611a1b565b9050919050565b6000611afc82611a42565b611b0681856111a5565b935083611b1284611a4d565b6000600115611b9f575b83600160040382011015611b9e578154611b3e88611b3983611a62565b61118b565b602088019750611b5688611b5183611a89565b61118b565b602088019750611b6e88611b6983611ab0565b61118b565b602088019750611b8688611b8183611ad7565b61118b565b60208801975060018301925050600481019050611b1c565b5b600115611c4657815484821015611bcf57611bc288611bbd83611a62565b61118b565b6020880197506001820191505b84821015611bf657611be988611be483611a89565b61118b565b6020880197506001820191505b84821015611c1d57611c1088611c0b83611ab0565b61118b565b6020880197506001820191505b84821015611c4457611c3788611c3283611ad7565b61118b565b6020880197506001820191505b505b8694505050505092915050565b6000608083016000808401549050611c6a816119f4565b611c77600087018261116f565b5060018401549050611c88816119f4565b611c95602087018261116f565b50611c9f81611a28565b611cac604087018261118b565b50600284018583036060870152611cc38382611af1565b925050819250505092915050565b6000611cdd8383611c53565b905092915050565b6000600382019050919050565b6000611cfd82611996565b611d0781856119a1565b935083602082028501611d19856119b2565b8060005b85811015611d5457848403895281611d358582611cd1565b9450611d4083611ce5565b925060208a01995050600181019050611d1d565b50829750879550505050505092915050565b60006020820190508181036000830152611d808184611cf2565b90509291505056fea2646970667358221220905f6defba5171e9c932e2b8f48ea81b6e7b88e733a5bfb62401142fb5d5876c64736f6c634300080b003360806040523480156200001157600080fd5b5062000044337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3336040516200007591906200019f565b60405180910390a1620000af307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c330604051620000e091906200019f565b60405180910390a1620001bc565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000187826200015a565b9050919050565b62000199816200017a565b82525050565b6000602082019050620001b660008301846200018e565b92915050565b6119d580620001cc6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630842bf82146100515780635786e9321461006d578063c48d8e0214610089578063ec007105146100b9575b600080fd5b61006b60048036038101906100669190611037565b6100ea565b005b61008760048036038101906100829190611156565b610431565b005b6100a3600480360381019061009e91906111d8565b610899565b6040516100b0919061128d565b60405180910390f35b6100d360048036038101906100ce9190611156565b6108c3565b6040516100e19291906113ba565b60405180910390f35b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166101a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019e90611447565b60405180910390fd5b6101b18383610a4c565b6000836000815181106101c7576101c6611467565b5b60200260200101516000015190506000846000815181106101eb576101ea611467565b5b60200260200101516020015190506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156102e9576000600167ffffffffffffffff81111561025e5761025d610dd0565b5b60405190808252806020026020018201604052801561028c5781602001602082028036833780820191505090505b50905082816000815181106102a4576102a3611467565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102e781610431565b505b600160405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018360070b81526020018615158152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550604082015181600001601c6101000a81548160ff0219169083151502179055505050600180549050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e590611447565b60405180910390fd5b60008260008151811061050457610503611467565b5b602002602001015190506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610587906114e2565b60405180910390fd5b600060018080805490506105a4919061153b565b815481106105b5576105b4611467565b5b906000526020600020019050600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600180808054905061067a919061153b565b8154811061068b5761068a611467565b5b90600052602060002001600180600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e2919061153b565b815481106106f3576106f2611467565b5b906000526020600020016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000820160149054906101000a900460070b8160000160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555060008201601c9054906101000a900460ff1681600001601c6101000a81548160ff021916908315150217905550905050600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560018054806108285761082761156f565b5b60019003818190600052602060002001600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905560008201601c6101000a81549060ff02191690555050905550505050565b606060016040516020016108ad9190611766565b6040516020818303038152906040529050919050565b6060600080836000815181106108dc576108db611467565b5b602002602001015190506000600180600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610935919061153b565b8154811061094657610945611467565b5b9060005260206000200190506000600167ffffffffffffffff81111561096f5761096e610dd0565b5b6040519080825280602002602001820160405280156109a857816020015b610995610d73565b81526020019060019003908161098d5790505b50905060405180604001604052808360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018360000160149054906101000a900460070b60070b81525081600081518110610a2257610a21611467565b5b60200260200101819052508082600001601c9054906101000a900460ff1694509450505050915091565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090611447565b60405180910390fd5b60005b8351811015610c11576000610b3e858381518110610b2d57610b2c611467565b5b602002602001015160000151610c17565b905060018160030b1415610bb657600a858381518110610b6157610b60611467565b5b60200260200101516020015160070b1315610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906117d4565b60405180910390fd5b610bfd565b60008160030b14610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611840565b60405180910390fd5b5b508080610c0990611860565b915050610b0c565b50505050565b60008060008061016773ffffffffffffffffffffffffffffffffffffffff166393272baf60e01b86604051602401610c4f91906118b8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610cb9919061190f565b6000604051808303816000865af19150503d8060008114610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b509150915081610d0e5760156000610d23565b80806020019051810190610d22919061195f565b5b8095508194505050601660030b8360030b14610d6b576040517fba96339e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060070b81525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610e0882610dbf565b810181811067ffffffffffffffff82111715610e2757610e26610dd0565b5b80604052505050565b6000610e3a610da6565b9050610e468282610dff565b919050565b600067ffffffffffffffff821115610e6657610e65610dd0565b5b602082029050602081019050919050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610eac82610e81565b9050919050565b610ebc81610ea1565b8114610ec757600080fd5b50565b600081359050610ed981610eb3565b92915050565b60008160070b9050919050565b610ef581610edf565b8114610f0057600080fd5b50565b600081359050610f1281610eec565b92915050565b600060408284031215610f2e57610f2d610e7c565b5b610f386040610e30565b90506000610f4884828501610eca565b6000830152506020610f5c84828501610f03565b60208301525092915050565b6000610f7b610f7684610e4b565b610e30565b90508083825260208201905060408402830185811115610f9e57610f9d610e77565b5b835b81811015610fc75780610fb38882610f18565b845260208401935050604081019050610fa0565b5050509392505050565b600082601f830112610fe657610fe5610dba565b5b8135610ff6848260208601610f68565b91505092915050565b60008115159050919050565b61101481610fff565b811461101f57600080fd5b50565b6000813590506110318161100b565b92915050565b6000806040838503121561104e5761104d610db0565b5b600083013567ffffffffffffffff81111561106c5761106b610db5565b5b61107885828601610fd1565b925050602061108985828601611022565b9150509250929050565b600067ffffffffffffffff8211156110ae576110ad610dd0565b5b602082029050602081019050919050565b60006110d26110cd84611093565b610e30565b905080838252602082019050602084028301858111156110f5576110f4610e77565b5b835b8181101561111e578061110a8882610eca565b8452602084019350506020810190506110f7565b5050509392505050565b600082601f83011261113d5761113c610dba565b5b813561114d8482602086016110bf565b91505092915050565b60006020828403121561116c5761116b610db0565b5b600082013567ffffffffffffffff81111561118a57611189610db5565b5b61119684828501611128565b91505092915050565b600060ff82169050919050565b6111b58161119f565b81146111c057600080fd5b50565b6000813590506111d2816111ac565b92915050565b6000602082840312156111ee576111ed610db0565b5b60006111fc848285016111c3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561123f578082015181840152602081019050611224565b8381111561124e576000848401525b50505050565b600061125f82611205565b6112698185611210565b9350611279818560208601611221565b61128281610dbf565b840191505092915050565b600060208201905081810360008301526112a78184611254565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6112e481610ea1565b82525050565b6112f381610edf565b82525050565b60408201600082015161130f60008501826112db565b50602082015161132260208501826112ea565b50505050565b600061133483836112f9565b60408301905092915050565b6000602082019050919050565b6000611358826112af565b61136281856112ba565b935061136d836112cb565b8060005b8381101561139e5781516113858882611328565b975061139083611340565b925050600181019050611371565b5085935050505092915050565b6113b481610fff565b82525050565b600060408201905081810360008301526113d4818561134d565b90506113e360208301846113ab565b9392505050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b6000611431600e836113ea565b915061143c826113fb565b602082019050919050565b6000602082019050818103600083015261146081611424565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e4f5f504f4f4c00000000000000000000000000000000000000000000000000600082015250565b60006114cc6007836113ea565b91506114d782611496565b602082019050919050565b600060208201905081810360008301526114fb816114bf565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061154682611502565b915061155183611502565b9250828210156115645761156361150c565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061160f61160a836115cf565b6115dc565b9050919050565b60008160a01c9050919050565b60008160070b9050919050565b600061164361163e83611616565b611623565b9050919050565b60008160e01c9050919050565b600060ff82169050919050565b60006116776116728361164a565b611657565b9050919050565b61168781610fff565b82525050565b6060820160008083015490506116a2816115fc565b6116af60008601826112db565b506116b981611630565b6116c660208601826112ea565b506116d081611664565b6116dd604086018261167e565b5050505050565b60006116f0838361168d565b60608301905092915050565b6000600182019050919050565b60006117148261159e565b61171e81856115a9565b9350611729836115ba565b8060005b83811015611759578161174088826116e4565b975061174b836116fc565b92505060018101905061172d565b5085935050505092915050565b600060208201905081810360008301526117808184611709565b905092915050565b7f4e4654535f4c494d495400000000000000000000000000000000000000000000600082015250565b60006117be600a836113ea565b91506117c982611788565b602082019050919050565b600060208201905081810360008301526117ed816117b1565b9050919050565b7f554e535550504f525445445f544f4b454e5f5459504500000000000000000000600082015250565b600061182a6016836113ea565b9150611835826117f4565b602082019050919050565b600060208201905081810360008301526118598161181d565b9050919050565b600061186b82611502565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561189e5761189d61150c565b5b600182019050919050565b6118b281610ea1565b82525050565b60006020820190506118cd60008301846118a9565b92915050565b600081905092915050565b60006118e982611205565b6118f381856118d3565b9350611903818560208601611221565b80840191505092915050565b600061191b82846118de565b915081905092915050565b60008160030b9050919050565b61193c81611926565b811461194757600080fd5b50565b60008151905061195981611933565b92915050565b6000806040838503121561197657611975610db0565b5b60006119848582860161194a565b92505060206119958582860161194a565b915050925092905056fea2646970667358221220cb037173341dd16cd1c556d4df9ea06d6a0d0ed01fc91225e63e8d9c8e47037d64736f6c634300080b0033a26469706673582212203cd6d63e973aaccd2127f24ff48f00d507b521fa86dbe4c014c3e9fd22a1549064736f6c634300080b003360806040523480156200001157600080fd5b50604051620000209062000437565b604051809103906000f0801580156200003d573d6000803e3d6000fd5b5062000070337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620001e060201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c333604051620000a191906200048a565b60405180910390a1620000db307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620001e060201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3306040516200010c91906200048a565b60405180910390a162000146337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42620001e060201b60201c565b62000178307fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42620001e060201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c96200024c60201b60201c565b620001d9620002bb60201b60201c565b5062000636565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620002646389db5a0560e01b6200032a60201b60201c565b806020019051810190620002799190620004f1565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b620002d3632b057dae60e01b6200032a60201b60201c565b806020019051810190620002e8919062000568565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051620003db91906200061d565b600060405180830381855af49150503d806000811462000418576040519150601f19603f3d011682016040523d82523d6000602084013e6200041d565b606091505b5091509150816200042d57600080fd5b8092505050919050565b6152f48062004d6883390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004728262000445565b9050919050565b620004848162000465565b82525050565b6000602082019050620004a1600083018462000479565b92915050565b600080fd5b6000620004b98262000465565b9050919050565b620004cb81620004ac565b8114620004d757600080fd5b50565b600081519050620004eb81620004c0565b92915050565b6000602082840312156200050a5762000509620004a7565b5b60006200051a84828501620004da565b91505092915050565b6000620005308262000465565b9050919050565b620005428162000523565b81146200054e57600080fd5b50565b600081519050620005628162000537565b92915050565b600060208284031215620005815762000580620004a7565b5b6000620005918482850162000551565b91505092915050565b600081519050919050565b600081905092915050565b60005b83811015620005d0578082015181840152602081019050620005b3565b83811115620005e0576000848401525b50505050565b6000620005f3826200059a565b620005ff8185620005a5565b935062000611818560208601620005b0565b80840191505092915050565b60006200062b8284620005e6565b915081905092915050565b61472280620006466000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806366f03d9a116100ad578063b6db75a011610071578063b6db75a0146102ec578063c48d8e021461030a578063ddedfcf31461033a578063ec00710514610356578063f0fbda2d1461038757610121565b806366f03d9a1461024a578063704802751461027a578063a50b33e014610296578063a8068d18146102b2578063ab8c71c0146102ce57610121565b80631820b3bf116100f45780631820b3bf1461019657806324758dcb146101c65780632e224402146101e257806344072208146102125780635786e9321461022e57610121565b80630842bf821461012657806311480d5914610142578063118fee951461015e5780631785f53c1461017a575b600080fd5b610140600480360381019061013b91906129d2565b6103b7565b005b61015c60048036038101906101579190612a67565b61051b565b005b61017860048036038101906101739190612a67565b6105e4565b005b610194600480360381019061018f9190612a94565b6106ad565b005b6101b060048036038101906101ab9190612b84565b6107cf565b6040516101bd9190612bdc565b60405180910390f35b6101e060048036038101906101db9190612c52565b6109bc565b005b6101fc60048036038101906101f79190612cf5565b610c9f565b6040516102099190612f34565b60405180910390f35b61022c60048036038101906102279190612f56565b610d4f565b005b61024860048036038101906102439190612b84565b610f8d565b005b610264600480360381019061025f9190612c52565b6110ee565b6040516102719190612bdc565b60405180910390f35b610294600480360381019061028f9190612a94565b6113ff565b005b6102b060048036038101906102ab9190612fb6565b611521565b005b6102cc60048036038101906102c79190613003565b611594565b005b6102d66116f8565b6040516102e3919061306e565b60405180910390f35b6102f4611750565b6040516103019190612bdc565b60405180910390f35b610324600480360381019061031f9190612a67565b611781565b6040516103319190613111565b60405180910390f35b610354600480360381019061034f9190612f56565b61182b565b005b610370600480360381019061036b9190612b84565b611994565b60405161037e929190613211565b60405180910390f35b6103a1600480360381019061039c9190612a67565b611a55565b6040516103ae9190613111565b60405180910390f35b815160028160ff16146103c957600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d9061329e565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630842bf8285856040518363ffffffff1660e01b81526004016104e3929190613211565b600060405180830381600087803b1580156104fd57600080fd5b505af1158015610511573d6000803e3d6000fd5b5050505050505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cf9061329e565b60405180910390fd5b6105e0611aff565b5050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106989061329e565b60405180910390fd5b6106a9611b64565b5050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661076a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107619061329e565b60405180910390fd5b610794827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42611bc9565b7fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f826040516107c391906132cd565b60405180910390a15050565b600080600090505b82518110156109b1576000806108068584815181106107f9576107f86132e8565b5b6020026020010151611c6e565b915091506001816000600381106108205761081f6132e8565b5b602002015114801561084a5750600081600160038110610843576108426132e8565b5b6020020151145b801561086e5750600081600260038110610867576108666132e8565b5b6020020151145b156108f7578173ffffffffffffffffffffffffffffffffffffffff16631a10f76c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e2919061332c565b6108f257600093505050506109b7565b61099c565b8173ffffffffffffffffffffffffffffffffffffffff1663d82f54d4868581518110610926576109256132e8565b5b60200260200101516040518263ffffffff1660e01b815260040161094a91906132cd565b602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061332c565b61099b57600093505050506109b7565b5b505080806109a990613392565b9150506107d7565b50600190505b919050565b8181905060028160ff16146109d057600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166366f03d9a84846040518363ffffffff1660e01b8152600401610a0b929190613620565b6020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e919061332c565b610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490613690565b60405180910390fd5b60008383905067ffffffffffffffff811115610aac57610aab612766565b5b604051908082528060200260200182016040528015610ada5781602001602082028036833780820191505090505b50905060005b84849050811015610b8257848482818110610afe57610afd6132e8565b5b9050602002810190610b1091906136bf565b6000016020810190610b229190612a94565b828281518110610b3557610b346132e8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080610b7a90613392565b915050610ae0565b5060003073ffffffffffffffffffffffffffffffffffffffff1663ec007105836040518263ffffffff1660e01b8152600401610bbe9190613796565b600060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c0491906138c9565b9150508015610c2857610c2333868690610c1e9190613b1b565b611dbc565b610c98565b3073ffffffffffffffffffffffffffffffffffffffff1663ddedfcf33387876040518463ffffffff1660e01b8152600401610c6593929190613b30565b600060405180830381600087803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b505050505b5050505050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e2244028585856040518463ffffffff1660e01b8152600401610d0093929190613bd6565b600060405180830381865afa158015610d1d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d469190613dd4565b90509392505050565b8181905060028160ff1614610d6357600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e179061329e565b60405180910390fd5b6000610e2c8585612026565b905060003073ffffffffffffffffffffffffffffffffffffffff16632e22440288846040518363ffffffff1660e01b8152600401610e6b929190613e1d565b600060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eb19190613dd4565b905080604051602001610ec49190612f34565b604051602081830303815290604052805190602001208686604051602001610eed929190613620565b6040516020818303038152906040528051906020012014610f0d57600080fd5b610f178782611dbc565b3073ffffffffffffffffffffffffffffffffffffffff1663a8068d1888846040518363ffffffff1660e01b8152600401610f52929190613e1d565b600060405180830381600087803b158015610f6c57600080fd5b505af1158015610f80573d6000803e3d6000fd5b5050505050505050505050565b805160028160ff1614610f9f57600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661105c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110539061329e565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635786e932846040518263ffffffff1660e01b81526004016110b79190613796565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050565b60008282905060028160ff161461110457600080fd5b6000600267ffffffffffffffff81111561112157611120612766565b5b60405190808252806020026020018201604052801561114f5781602001602082028036833780820191505090505b50905084846000818110611166576111656132e8565b5b905060200281019061117891906136bf565b600001602081019061118a9190612a94565b8160008151811061119e5761119d6132e8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050848460018181106111ec576111eb6132e8565b5b90506020028101906111fe91906136bf565b60000160208101906112109190612a94565b81600181518110611224576112236132e8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600061126982611994565b509050600081600081518110611282576112816132e8565b5b60200260200101516020015160070b1380156112c057506000816001815181106112af576112ae6132e8565b5b60200260200101516020015160070b135b6112c957600080fd5b60006112f9878760008181106112e2576112e16132e8565b5b90506020028101906112f491906136bf565b612128565b9050600061132b88886001818110611314576113136132e8565b5b905060200281019061132691906136bf565b612128565b905082600081518110611341576113406132e8565b5b60200260200101516020015160070b8260070b12158015611387575082600181518110611371576113706132e8565b5b60200260200101516020015160070b8160070b12155b80156113f25750826000815181106113a2576113a16132e8565b5b60200260200101516020015160070b8160070b6113bf9190613e57565b836001815181106113d3576113d26132e8565b5b60200260200101516020015160070b8360070b6113f09190613e57565b145b9550505050505092915050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b39061329e565b60405180910390fd5b6114e6827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42612221565b7f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3398260405161151591906132cd565b60405180910390a15050565b3073ffffffffffffffffffffffffffffffffffffffff1663a8068d183384846040518463ffffffff1660e01b815260040161155e93929190613bd6565b600060405180830381600087803b15801561157857600080fd5b505af115801561158c573d6000803e3d6000fd5b505050505050565b805160028160ff16146115a657600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a9061329e565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8068d1885856040518363ffffffff1660e01b81526004016116c0929190613e1d565b600060405180830381600087803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b5050505050505050565b60008060009050611729337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b61228d565b15611735576001811790505b61173d611750565b15611749576002811790505b8091505090565b600061177c337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4261228d565b905090565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c48d8e02836040518263ffffffff1660e01b81526004016117de919061306e565b600060405180830381865afa1580156117fb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906118249190614014565b9050919050565b8181905060028160ff161461183f57600080fd5b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f39061329e565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddedfcf38686866040518463ffffffff1660e01b815260040161195b93929190613b30565b600060405180830381600087803b15801561197557600080fd5b505af1158015611989573d6000803e3d6000fd5b505050505050505050565b60606000825160028160ff16146119aa57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec007105856040518263ffffffff1660e01b8152600401611a059190613796565b600060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a4b91906138c9565b9250925050915091565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0fbda2d836040518263ffffffff1660e01b8152600401611ab2919061306e565b600060405180830381865afa158015611acf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611af89190614014565b9050919050565b611b0f632b057dae60e01b6122f4565b806020019051810190611b22919061409b565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b746389db5a0560e01b6122f4565b806020019051810190611b879190614106565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c0257600080fd5b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611c786126bd565b60006040518060600160405280600181526020016000815260200160008152509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cdc576000819250925050611db7565b6000611ce98560086123fc565b905060008073ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff161415611d2f578160800151611d35565b81602001515b90508073ffffffffffffffffffffffffffffffffffffffff166365c43cc76040518163ffffffff1660e01b8152600401606060405180830381865afa925050508015611d9f57506040513d601f19601f82011682018060405250810190611d9c9190614210565b60015b611da857611dad565b809350505b8083945094505050505b915091565b60005b8151811015611fe8576000611df1838381518110611de057611ddf6132e8565b5b602002602001015160000151612561565b90506000611e1c848481518110611e0b57611e0a6132e8565b5b602002602001015160000151611c6e565b50905060008260030b1415611edb578073ffffffffffffffffffffffffffffffffffffffff1663575a61c8858581518110611e5a57611e596132e8565b5b60200260200101516000015187878781518110611e7a57611e796132e8565b5b6020026020010151602001516040518463ffffffff1660e01b8152600401611ea49392919061424c565b600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b50505050611fd3565b60018260030b1415611f97578073ffffffffffffffffffffffffffffffffffffffff166389b9c45c858581518110611f1657611f156132e8565b5b60200260200101516000015187878781518110611f3657611f356132e8565b5b6020026020010151604001516040518463ffffffff1660e01b8152600401611f60939291906142f2565b600060405180830381600087803b158015611f7a57600080fd5b505af1158015611f8e573d6000803e3d6000fd5b50505050611fd2565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc99061437c565b60405180910390fd5b5b50508080611fe090613392565b915050611dbf565b507f760b5d447de9a6afab4457b996807616ccd3b048f15f77e82cc55fdb70962f4e828260405161201a92919061439c565b60405180910390a15050565b606060008383905067ffffffffffffffff81111561204757612046612766565b5b6040519080825280602002602001820160405280156120755781602001602082028036833780820191505090505b50905060005b8484905081101561211d57848482818110612099576120986132e8565b5b90506020028101906120ab91906136bf565b60000160208101906120bd9190612a94565b8282815181106120d0576120cf6132e8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061211590613392565b91505061207b565b508091505092915050565b6000806121468360000160208101906121419190612a94565b612561565b90506000808260030b141561216f5783602001602081019061216891906143cc565b9050612217565b60018260030b14156121db5783806040019061218b91906143f9565b90509050600a8160070b13156121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906144a8565b60405180910390fd5b612216565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220d9061437c565b60405180910390fd5b5b8092505050919050565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123a39190614504565b600060405180830381855af49150503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b5091509150816123f257600080fd5b8092505050919050565b6124046126df565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16633c4dd32e60e01b878760405160240161243d92919061452a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124a79190614504565b6000604051808303816000865af19150503d80600081146124e4576040519150601f19603f3d011682016040523d82523d6000602084013e6124e9565b606091505b5091509150816124fb57601584612510565b8080602001905181019061250f9190614650565b5b8095508194505050601660030b8360030b14612558576040517f664cb42300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b60008060008061016773ffffffffffffffffffffffffffffffffffffffff166393272baf60e01b8660405160240161259991906132cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516126039190614504565b6000604051808303816000865af19150503d8060008114612640576040519150601f19603f3d011682016040523d82523d6000602084013e612645565b606091505b509150915081612658576015600061266d565b8080602001905181019061266c91906146ac565b5b8095508194505050601660030b8360030b146126b5576040517fba96339e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050919050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060a00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61279e82612755565b810181811067ffffffffffffffff821117156127bd576127bc612766565b5b80604052505050565b60006127d061273c565b90506127dc8282612795565b919050565b600067ffffffffffffffff8211156127fc576127fb612766565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128478261281c565b9050919050565b6128578161283c565b811461286257600080fd5b50565b6000813590506128748161284e565b92915050565b60008160070b9050919050565b6128908161287a565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b6000604082840312156128c9576128c8612812565b5b6128d360406127c6565b905060006128e384828501612865565b60008301525060206128f78482850161289e565b60208301525092915050565b6000612916612911846127e1565b6127c6565b905080838252602082019050604084028301858111156129395761293861280d565b5b835b81811015612962578061294e88826128b3565b84526020840193505060408101905061293b565b5050509392505050565b600082601f83011261298157612980612750565b5b8135612991848260208601612903565b91505092915050565b60008115159050919050565b6129af8161299a565b81146129ba57600080fd5b50565b6000813590506129cc816129a6565b92915050565b600080604083850312156129e9576129e8612746565b5b600083013567ffffffffffffffff811115612a0757612a0661274b565b5b612a138582860161296c565b9250506020612a24858286016129bd565b9150509250929050565b600060ff82169050919050565b612a4481612a2e565b8114612a4f57600080fd5b50565b600081359050612a6181612a3b565b92915050565b600060208284031215612a7d57612a7c612746565b5b6000612a8b84828501612a52565b91505092915050565b600060208284031215612aaa57612aa9612746565b5b6000612ab884828501612865565b91505092915050565b600067ffffffffffffffff821115612adc57612adb612766565b5b602082029050602081019050919050565b6000612b00612afb84612ac1565b6127c6565b90508083825260208201905060208402830185811115612b2357612b2261280d565b5b835b81811015612b4c5780612b388882612865565b845260208401935050602081019050612b25565b5050509392505050565b600082601f830112612b6b57612b6a612750565b5b8135612b7b848260208601612aed565b91505092915050565b600060208284031215612b9a57612b99612746565b5b600082013567ffffffffffffffff811115612bb857612bb761274b565b5b612bc484828501612b56565b91505092915050565b612bd68161299a565b82525050565b6000602082019050612bf16000830184612bcd565b92915050565b600080fd5b60008083601f840112612c1257612c11612750565b5b8235905067ffffffffffffffff811115612c2f57612c2e612bf7565b5b602083019150836020820283011115612c4b57612c4a61280d565b5b9250929050565b60008060208385031215612c6957612c68612746565b5b600083013567ffffffffffffffff811115612c8757612c8661274b565b5b612c9385828601612bfc565b92509250509250929050565b60008083601f840112612cb557612cb4612750565b5b8235905067ffffffffffffffff811115612cd257612cd1612bf7565b5b602083019150836020820283011115612cee57612ced61280d565b5b9250929050565b600080600060408486031215612d0e57612d0d612746565b5b6000612d1c86828701612865565b935050602084013567ffffffffffffffff811115612d3d57612d3c61274b565b5b612d4986828701612c9f565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d8a8161283c565b82525050565b612d998161287a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612dd78383612d90565b60208301905092915050565b6000602082019050919050565b6000612dfb82612d9f565b612e058185612daa565b9350612e1083612dbb565b8060005b83811015612e41578151612e288882612dcb565b9750612e3383612de3565b925050600181019050612e14565b5085935050505092915050565b6000606083016000830151612e666000860182612d81565b506020830151612e796020860182612d90565b5060408301518482036040860152612e918282612df0565b9150508091505092915050565b6000612eaa8383612e4e565b905092915050565b6000602082019050919050565b6000612eca82612d55565b612ed48185612d60565b935083602082028501612ee685612d71565b8060005b85811015612f225784840389528151612f038582612e9e565b9450612f0e83612eb2565b925060208a01995050600181019050612eea565b50829750879550505050505092915050565b60006020820190508181036000830152612f4e8184612ebf565b905092915050565b600080600060408486031215612f6f57612f6e612746565b5b6000612f7d86828701612865565b935050602084013567ffffffffffffffff811115612f9e57612f9d61274b565b5b612faa86828701612bfc565b92509250509250925092565b60008060208385031215612fcd57612fcc612746565b5b600083013567ffffffffffffffff811115612feb57612fea61274b565b5b612ff785828601612c9f565b92509250509250929050565b6000806040838503121561301a57613019612746565b5b600061302885828601612865565b925050602083013567ffffffffffffffff8111156130495761304861274b565b5b61305585828601612b56565b9150509250929050565b61306881612a2e565b82525050565b6000602082019050613083600083018461305f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130c35780820151818401526020810190506130a8565b838111156130d2576000848401525b50505050565b60006130e382613089565b6130ed8185613094565b93506130fd8185602086016130a5565b61310681612755565b840191505092915050565b6000602082019050818103600083015261312b81846130d8565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6040820160008201516131756000850182612d81565b5060208201516131886020850182612d90565b50505050565b600061319a838361315f565b60408301905092915050565b6000602082019050919050565b60006131be82613133565b6131c8818561313e565b93506131d38361314f565b8060005b838110156132045781516131eb888261318e565b97506131f6836131a6565b9250506001810190506131d7565b5085935050505092915050565b6000604082019050818103600083015261322b81856131b3565b905061323a6020830184612bcd565b9392505050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b6000613288600e83613241565b915061329382613252565b602082019050919050565b600060208201905081810360008301526132b78161327b565b9050919050565b6132c78161283c565b82525050565b60006020820190506132e260008301846132be565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613326816129a6565b92915050565b60006020828403121561334257613341612746565b5b600061335084828501613317565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061339d82613388565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133d0576133cf613359565b5b600182019050919050565b6000819050919050565b60006133f46020840184612865565b905092915050565b600061340b602084018461289e565b905092915050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261343f5761343e61341d565b5b83810192508235915060208301925067ffffffffffffffff82111561346757613466613413565b5b60208202360384131561347d5761347c613418565b5b509250929050565b6000819050919050565b6000602082019050919050565b60006134a88385612daa565b93506134b382613485565b8060005b858110156134ec576134c982846133fc565b6134d38882612dcb565b97506134de8361348f565b9250506001810190506134b7565b5085925050509392505050565b60006060830161350c60008401846133e5565b6135196000860182612d81565b5061352760208401846133fc565b6135346020860182612d90565b506135426040840184613422565b858303604087015261355583828461349c565b925050508091505092915050565b600061356f83836134f9565b905092915050565b6000823560016060038336030381126135935761359261341d565b5b82810191505092915050565b6000602082019050919050565b60006135b88385612d60565b9350836020840285016135ca846133db565b8060005b8781101561360e5784840389526135e58284613577565b6135ef8582613563565b94506135fa8361359f565b925060208a019950506001810190506135ce565b50829750879450505050509392505050565b6000602082019050818103600083015261363b8184866135ac565b90509392505050565b7f5245544952455f434845434b0000000000000000000000000000000000000000600082015250565b600061367a600c83613241565b915061368582613644565b602082019050919050565b600060208201905081810360008301526136a98161366d565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126136db576136da6136b0565b5b80830191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061371f8383612d81565b60208301905092915050565b6000602082019050919050565b6000613743826136e7565b61374d81856136f2565b935061375883613703565b8060005b838110156137895781516137708882613713565b975061377b8361372b565b92505060018101905061375c565b5085935050505092915050565b600060208201905081810360008301526137b08184613738565b905092915050565b6000815190506137c78161284e565b92915050565b6000815190506137dc81612887565b92915050565b6000604082840312156137f8576137f7612812565b5b61380260406127c6565b90506000613812848285016137b8565b6000830152506020613826848285016137cd565b60208301525092915050565b6000613845613840846127e1565b6127c6565b905080838252602082019050604084028301858111156138685761386761280d565b5b835b81811015613891578061387d88826137e2565b84526020840193505060408101905061386a565b5050509392505050565b600082601f8301126138b0576138af612750565b5b81516138c0848260208601613832565b91505092915050565b600080604083850312156138e0576138df612746565b5b600083015167ffffffffffffffff8111156138fe576138fd61274b565b5b61390a8582860161389b565b925050602061391b85828601613317565b9150509250929050565b600067ffffffffffffffff8211156139405761393f612766565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561396c5761396b612766565b5b602082029050602081019050919050565b600061399061398b84613951565b6127c6565b905080838252602082019050602084028301858111156139b3576139b261280d565b5b835b818110156139dc57806139c8888261289e565b8452602084019350506020810190506139b5565b5050509392505050565b600082601f8301126139fb576139fa612750565b5b8135613a0b84826020860161397d565b91505092915050565b600060608284031215613a2a57613a29612812565b5b613a3460606127c6565b90506000613a4484828501612865565b6000830152506020613a588482850161289e565b602083015250604082013567ffffffffffffffff811115613a7c57613a7b612817565b5b613a88848285016139e6565b60408301525092915050565b6000613aa7613aa284613925565b6127c6565b90508083825260208201905060208402830185811115613aca57613ac961280d565b5b835b81811015613b1157803567ffffffffffffffff811115613aef57613aee612750565b5b808601613afc8982613a14565b85526020850194505050602081019050613acc565b5050509392505050565b6000613b28368484613a94565b905092915050565b6000604082019050613b4560008301866132be565b8181036020830152613b588184866135ac565b9050949350505050565b6000819050919050565b6000602082019050919050565b6000613b8583856136f2565b9350613b9082613b62565b8060005b85811015613bc957613ba682846133e5565b613bb08882613713565b9750613bbb83613b6c565b925050600181019050613b94565b5085925050509392505050565b6000604082019050613beb60008301866132be565b8181036020830152613bfe818486613b79565b9050949350505050565b6000613c1b613c1684613951565b6127c6565b90508083825260208201905060208402830185811115613c3e57613c3d61280d565b5b835b81811015613c675780613c5388826137cd565b845260208401935050602081019050613c40565b5050509392505050565b600082601f830112613c8657613c85612750565b5b8151613c96848260208601613c08565b91505092915050565b600060608284031215613cb557613cb4612812565b5b613cbf60606127c6565b90506000613ccf848285016137b8565b6000830152506020613ce3848285016137cd565b602083015250604082015167ffffffffffffffff811115613d0757613d06612817565b5b613d1384828501613c71565b60408301525092915050565b6000613d32613d2d84613925565b6127c6565b90508083825260208201905060208402830185811115613d5557613d5461280d565b5b835b81811015613d9c57805167ffffffffffffffff811115613d7a57613d79612750565b5b808601613d878982613c9f565b85526020850194505050602081019050613d57565b5050509392505050565b600082601f830112613dbb57613dba612750565b5b8151613dcb848260208601613d1f565b91505092915050565b600060208284031215613dea57613de9612746565b5b600082015167ffffffffffffffff811115613e0857613e0761274b565b5b613e1484828501613da6565b91505092915050565b6000604082019050613e3260008301856132be565b8181036020830152613e448184613738565b90509392505050565b6000819050919050565b6000613e6282613e4d565b9150613e6d83613e4d565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615613eac57613eab613359565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615613ee957613ee8613359565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615613f2657613f25613359565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615613f6357613f62613359565b5b828202905092915050565b600080fd5b600067ffffffffffffffff821115613f8e57613f8d612766565b5b613f9782612755565b9050602081019050919050565b6000613fb7613fb284613f73565b6127c6565b905082815260208101848484011115613fd357613fd2613f6e565b5b613fde8482856130a5565b509392505050565b600082601f830112613ffb57613ffa612750565b5b815161400b848260208601613fa4565b91505092915050565b60006020828403121561402a57614029612746565b5b600082015167ffffffffffffffff8111156140485761404761274b565b5b61405484828501613fe6565b91505092915050565b60006140688261283c565b9050919050565b6140788161405d565b811461408357600080fd5b50565b6000815190506140958161406f565b92915050565b6000602082840312156140b1576140b0612746565b5b60006140bf84828501614086565b91505092915050565b60006140d38261283c565b9050919050565b6140e3816140c8565b81146140ee57600080fd5b50565b600081519050614100816140da565b92915050565b60006020828403121561411c5761411b612746565b5b600061412a848285016140f1565b91505092915050565b600067ffffffffffffffff82111561414e5761414d612766565b5b602082029050919050565b61416281613388565b811461416d57600080fd5b50565b60008151905061417f81614159565b92915050565b600061419861419384614133565b6127c6565b905080602084028301858111156141b2576141b161280d565b5b835b818110156141db57806141c78882614170565b8452602084019350506020810190506141b4565b5050509392505050565b600082601f8301126141fa576141f9612750565b5b6003614207848285614185565b91505092915050565b60006060828403121561422657614225612746565b5b6000614234848285016141e5565b91505092915050565b6142468161287a565b82525050565b600060608201905061426160008301866132be565b61426e60208301856132be565b61427b604083018461423d565b949350505050565b600082825260208201905092915050565b600061429f82612d9f565b6142a98185614283565b93506142b483612dbb565b8060005b838110156142e55781516142cc8882612dcb565b97506142d783612de3565b9250506001810190506142b8565b5085935050505092915050565b600060608201905061430760008301866132be565b61431460208301856132be565b81810360408301526143268184614294565b9050949350505050565b7f554e535550504f525445445f544f4b454e5f5459504500000000000000000000600082015250565b6000614366601683613241565b915061437182614330565b602082019050919050565b6000602082019050818103600083015261439581614359565b9050919050565b60006040820190506143b160008301856132be565b81810360208301526143c38184612ebf565b90509392505050565b6000602082840312156143e2576143e1612746565b5b60006143f08482850161289e565b91505092915050565b60008083356001602003843603038112614416576144156136b0565b5b80840192508235915067ffffffffffffffff821115614438576144376136b5565b5b602083019250602082023603831315614454576144536136ba565b5b509250929050565b7f4e4654535f4c494d495400000000000000000000000000000000000000000000600082015250565b6000614492600a83613241565b915061449d8261445c565b602082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b600081905092915050565b60006144de82613089565b6144e881856144c8565b93506144f88185602086016130a5565b80840191505092915050565b600061451082846144d3565b915081905092915050565b61452481613388565b82525050565b600060408201905061453f60008301856132be565b61454c602083018461451b565b9392505050565b60008160030b9050919050565b61456981614553565b811461457457600080fd5b50565b60008151905061458681614560565b92915050565b600060a082840312156145a2576145a1612812565b5b6145ac60a06127c6565b905060006145bc84828501613317565b60008301525060206145d0848285016137b8565b602083015250604082015167ffffffffffffffff8111156145f4576145f3612817565b5b61460084828501613fe6565b604083015250606082015167ffffffffffffffff81111561462457614623612817565b5b61463084828501613fe6565b6060830152506080614644848285016137b8565b60808301525092915050565b6000806040838503121561466757614666612746565b5b600061467585828601614577565b925050602083015167ffffffffffffffff8111156146965761469561274b565b5b6146a28582860161458c565b9150509250929050565b600080604083850312156146c3576146c2612746565b5b60006146d185828601614577565b92505060206146e285828601614577565b915050925092905056fea2646970667358221220bb9297e5e2cae79b576d3d95f37ee6766e9189eca0678782b4f723ca31d80db464736f6c634300080b0033608060405234801561001057600080fd5b506152d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632b057dae1461003b57806389db5a0514610059575b600080fd5b610043610077565b6040516100509190610170565b60405180910390f35b6100616100a7565b60405161006e91906101ac565b60405180910390f35b6000604051610085906100d7565b604051809103906000f0801580156100a1573d6000803e3d6000fd5b50905090565b60006040516100b5906100e4565b604051809103906000f0801580156100d1573d6000803e3d6000fd5b50905090565b612be0806101c883390190565b6124f780612da883390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061013661013161012c846100f1565b610111565b6100f1565b9050919050565b60006101488261011b565b9050919050565b600061015a8261013d565b9050919050565b61016a8161014f565b82525050565b60006020820190506101856000830184610161565b92915050565b60006101968261013d565b9050919050565b6101a68161018b565b82525050565b60006020820190506101c1600083018461019d565b9291505056fe60806040523480156200001157600080fd5b5062000044337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3336040516200007591906200019f565b60405180910390a1620000af307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c330604051620000e091906200019f565b60405180910390a1620001bc565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000187826200015a565b9050919050565b62000199816200017a565b82525050565b6000602082019050620001b660008301846200018e565b92915050565b612a1480620001cc6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632e22440214610051578063a8068d1814610081578063ddedfcf31461009d578063f0fbda2d146100b9575b600080fd5b61006b60048036038101906100669190611ce4565b6100e9565b6040516100789190611f30565b60405180910390f35b61009b600480360381019061009691906120a1565b6106cc565b005b6100b760048036038101906100b29190612153565b611239565b005b6100d360048036038101906100ce91906121ec565b611a45565b6040516100e091906122a1565b60405180910390f35b60606000849050600084846000818110610106576101056122c3565b5b905060200201602081019061011b91906122f2565b9050600085856001818110610133576101326122c3565b5b905060200201602081019061014891906122f2565b90506000600180600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546102139190612358565b81548110610224576102236122c3565b5b9060005260206000209060060201905060008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600267ffffffffffffffff8111156102a8576102a7611f63565b5b6040519080825280602002602001820160405280156102e157816020015b6102ce611a6f565b8152602001906001900390816102c65790505b509050816103cf5760405180606001604052808460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460020160149054906101000a900460070b60070b8152602001846004018054806020026020016040519081016040528092919081815260200182805480156103c257602002820191906000526020600020906000905b82829054906101000a900460070b60070b8152602001906008019060208260070104928301926001038202915080841161038b5790505b50505050508152506104b1565b60405180606001604052808460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460030160009054906101000a900460070b60070b8152602001846005018054806020026020016040519081016040528092919081815260200182805480156104a857602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116104715790505b50505050508152505b816000815181106104c5576104c46122c3565b5b6020026020010181905250816105bb5760405180606001604052808460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460030160009054906101000a900460070b60070b8152602001846005018054806020026020016040519081016040528092919081815260200182805480156105ae57602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116105775790505b505050505081525061069d565b60405180606001604052808460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460020160149054906101000a900460070b60070b81526020018460040180548060200260200160405190810160405280929190818152602001828054801561069457602002820191906000526020600020906000905b82829054906101000a900460070b60070b8152602001906008019060208260070104928301926001038202915080841161065d5790505b50505050508152505b816001815181106106b1576106b06122c3565b5b60200260200101819052508096505050505050509392505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610780906123e9565b60405180910390fd5b60008390506000836000815181106107a4576107a36122c3565b5b602002602001015190506000846001815181106107c4576107c36122c3565b5b602002602001015190506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190612455565b60405180910390fd5b600060018080805490506108de9190612358565b815481106108ef576108ee6122c3565b5b90600052602060002090600602019050600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001808080549050610cd79190612358565b81548110610ce857610ce76122c3565b5b9060005260206000209060060201600180600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd9190612358565b81548110610dce57610dcd6122c3565b5b90600052602060002090600602016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002820160149054906101000a900460070b8160020160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506003820160009054906101000a900460070b8160030160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506004820181600401908054610fa5929190611aa9565b506005820181600501908054610fbc929190611aa9565b50905050600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600180548061114c5761114b612475565b5b6001900381819060005260206000209060060201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549067ffffffffffffffff02191690556003820160006101000a81549067ffffffffffffffff021916905560048201600061121c9190611b09565b60058201600061122c9190611b09565b5050905550505050505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed906123e9565b60405180910390fd5b6000849050600084846000818110611311576113106122c3565b5b905060200281019061132391906124b3565b600001602081019061133591906122f2565b905060008585600181811061134d5761134c6122c3565b5b905060200281019061135f91906124b3565b600001602081019061137191906122f2565b9050600086866000818110611389576113886122c3565b5b905060200281019061139b91906124b3565b60200160208101906113ad9190612507565b90506000878760018181106113c5576113c46122c3565b5b90506020028101906113d791906124b3565b60200160208101906113e99190612507565b9050600088886000818110611401576114006122c3565b5b905060200281019061141391906124b3565b80604001906114229190612534565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050905060008989600181811061147a576114796122c3565b5b905060200281019061148c91906124b3565b806040019061149b9190612534565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505090506000600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611697576000600267ffffffffffffffff8111156115bc576115bb611f63565b5b6040519080825280602002602001820160405280156115ea5781602001602082028036833780820191505090505b5090508681600081518110611602576116016122c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600181518110611651576116506122c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061169588826106cc565b505b60016040518060e001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018660070b81526020018560070b815260200184815260200183815250908060018154018082558091505060019003906000526020600020906006020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555060808201518160030160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555060a0820151816004019080519060200190611892929190611b31565b5060c08201518160050190805190602001906118af929190611b31565b505050600180549050600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600180549050600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505050505050565b60606001604051602001611a5991906129bc565b6040516020818303038152906040529050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060070b8152602001606081525090565b82805482825590600052602060002090600301600490048101928215611af8576000526020600020916003016004900482015b82811115611af7578254825591600101919060010190611adc565b5b509050611b059190611bf0565b5090565b508054600082556003016004900490600052602060002090810190611b2e9190611bf0565b50565b82805482825590600052602060002090600301600490048101928215611bdf5791602002820160005b83821115611ba957835183826101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055509260200192600801602081600701049283019260010302611b5a565b8015611bdd5782816101000a81549067ffffffffffffffff0219169055600801602081600701049283019260010302611ba9565b505b509050611bec9190611bf0565b5090565b5b80821115611c09576000816000905550600101611bf1565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4c82611c21565b9050919050565b611c5c81611c41565b8114611c6757600080fd5b50565b600081359050611c7981611c53565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611ca457611ca3611c7f565b5b8235905067ffffffffffffffff811115611cc157611cc0611c84565b5b602083019150836020820283011115611cdd57611cdc611c89565b5b9250929050565b600080600060408486031215611cfd57611cfc611c17565b5b6000611d0b86828701611c6a565b935050602084013567ffffffffffffffff811115611d2c57611d2b611c1c565b5b611d3886828701611c8e565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611d7981611c41565b82525050565b60008160070b9050919050565b611d9581611d7f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000611dd38383611d8c565b60208301905092915050565b6000602082019050919050565b6000611df782611d9b565b611e018185611da6565b9350611e0c83611db7565b8060005b83811015611e3d578151611e248882611dc7565b9750611e2f83611ddf565b925050600181019050611e10565b5085935050505092915050565b6000606083016000830151611e626000860182611d70565b506020830151611e756020860182611d8c565b5060408301518482036040860152611e8d8282611dec565b9150508091505092915050565b6000611ea68383611e4a565b905092915050565b6000602082019050919050565b6000611ec682611d44565b611ed08185611d4f565b935083602082028501611ee285611d60565b8060005b85811015611f1e5784840389528151611eff8582611e9a565b9450611f0a83611eae565b925060208a01995050600181019050611ee6565b50829750879550505050505092915050565b60006020820190508181036000830152611f4a8184611ebb565b905092915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611f9b82611f52565b810181811067ffffffffffffffff82111715611fba57611fb9611f63565b5b80604052505050565b6000611fcd611c0d565b9050611fd98282611f92565b919050565b600067ffffffffffffffff821115611ff957611ff8611f63565b5b602082029050602081019050919050565b600061201d61201884611fde565b611fc3565b905080838252602082019050602084028301858111156120405761203f611c89565b5b835b8181101561206957806120558882611c6a565b845260208401935050602081019050612042565b5050509392505050565b600082601f83011261208857612087611c7f565b5b813561209884826020860161200a565b91505092915050565b600080604083850312156120b8576120b7611c17565b5b60006120c685828601611c6a565b925050602083013567ffffffffffffffff8111156120e7576120e6611c1c565b5b6120f385828601612073565b9150509250929050565b60008083601f84011261211357612112611c7f565b5b8235905067ffffffffffffffff8111156121305761212f611c84565b5b60208301915083602082028301111561214c5761214b611c89565b5b9250929050565b60008060006040848603121561216c5761216b611c17565b5b600061217a86828701611c6a565b935050602084013567ffffffffffffffff81111561219b5761219a611c1c565b5b6121a7868287016120fd565b92509250509250925092565b600060ff82169050919050565b6121c9816121b3565b81146121d457600080fd5b50565b6000813590506121e6816121c0565b92915050565b60006020828403121561220257612201611c17565b5b6000612210848285016121d7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612253578082015181840152602081019050612238565b83811115612262576000848401525b50505050565b600061227382612219565b61227d8185612224565b935061228d818560208601612235565b61229681611f52565b840191505092915050565b600060208201905081810360008301526122bb8184612268565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561230857612307611c17565b5b600061231684828501611c6a565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123638261231f565b915061236e8361231f565b92508282101561238157612380612329565b5b828203905092915050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b60006123d3600e8361238c565b91506123de8261239d565b602082019050919050565b60006020820190508181036000830152612402816123c6565b9050919050565b7f4e4f5f5245515545535400000000000000000000000000000000000000000000600082015250565b600061243f600a8361238c565b915061244a82612409565b602082019050919050565b6000602082019050818103600083015261246e81612432565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126124cf576124ce6124a4565b5b80830191505092915050565b6124e481611d7f565b81146124ef57600080fd5b50565b600081359050612501816124db565b92915050565b60006020828403121561251d5761251c611c17565b5b600061252b848285016124f2565b91505092915050565b60008083356001602003843603038112612551576125506124a4565b5b80840192508235915067ffffffffffffffff821115612573576125726124a9565b5b60208301925060208202360383131561258f5761258e6124ae565b5b509250929050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612608612603836125c8565b6125d5565b9050919050565b60008160a01c9050919050565b60008160070b9050919050565b600061263c6126378361260f565b61261c565b9050919050565b6000612656612651836125c8565b61261c565b9050919050565b600081549050919050565b60008190508160005260206000209050919050565b60008160401c9050919050565b600061269d6126988361267d565b61261c565b9050919050565b60008160801c9050919050565b60006126c46126bf836126a4565b61261c565b9050919050565b60008160c01c9050919050565b60006126eb6126e6836126cb565b61261c565b9050919050565b60006126fd8261265d565b6127078185611da6565b93508361271384612668565b60006001156127a0575b8360016004038201101561279f57815461273f8861273a83612643565b611d8c565b602088019750612757886127528361268a565b611d8c565b60208801975061276f8861276a836126b1565b611d8c565b60208801975061278788612782836126d8565b611d8c565b6020880197506001830192505060048101905061271d565b5b600115612847578154848210156127d0576127c3886127be83612643565b611d8c565b6020880197506001820191505b848210156127f7576127ea886127e58361268a565b611d8c565b6020880197506001820191505b8482101561281e576128118861280c836126b1565b611d8c565b6020880197506001820191505b848210156128455761283888612833836126d8565b611d8c565b6020880197506001820191505b505b8694505050505092915050565b600060e08301600080840154905061286b816125f5565b6128786000870182611d70565b5060018401549050612889816125f5565b6128966020870182611d70565b50600284015490506128a7816125f5565b6128b46040870182611d70565b506128be81612629565b6128cb6060870182611d8c565b50600384015490506128dc81612643565b6128e96080870182611d8c565b506004840185830360a087015261290083826126f2565b9250506005840185830360c087015261291983826126f2565b925050819250505092915050565b60006129338383612854565b905092915050565b6000600682019050919050565b600061295382612597565b61295d81856125a2565b93508360208202850161296f856125b3565b8060005b858110156129aa5784840389528161298b8582612927565b94506129968361293b565b925060208a01995050600181019050612973565b50829750879550505050505092915050565b600060208201905081810360008301526129d68184612948565b90509291505056fea2646970667358221220b9138709c160564e69098e82eb0a6b7c96c5418629fc772d519033352ed7f31064736f6c634300080b003360806040523480156200001157600080fd5b5062000044337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3336040516200007591906200019f565b60405180910390a1620000af307f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b620000ee60201b60201c565b7f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c330604051620000e091906200019f565b60405180910390a1620001bc565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000187826200015a565b9050919050565b62000199816200017a565b82525050565b6000602082019050620001b660008301846200018e565b92915050565b61232b80620001cc6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630842bf82146100515780635786e9321461006d578063c48d8e0214610089578063ec007105146100b9575b600080fd5b61006b60048036038101906100669190611937565b6100ea565b005b61008760048036038101906100829190611a56565b6106e6565b005b6100a3600480360381019061009e9190611ad8565b610f81565b6040516100b09190611b8d565b60405180910390f35b6100d360048036038101906100ce9190611a56565b610fab565b6040516100e1929190611cba565b60405180910390f35b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166101a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019e90611d47565b60405180910390fd5b6101b1838361134c565b6000836000815181106101c7576101c6611d67565b5b60200260200101516000015190506000846001815181106101eb576101ea611d67565b5b602002602001015160000151905060008560008151811061020f5761020e611d67565b5b602002602001015160200151905060008660018151811061023357610232611d67565b5b60200260200101516020015190506000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156103bd576000600267ffffffffffffffff8111156102e3576102e26116d0565b5b6040519080825280602002602001820160405280156103115781602001602082028036833780820191505090505b509050848160008151811061032957610328611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061037857610377611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506103bb816106e6565b505b60016040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561043e576000610440565b845b60070b8152602001600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610484576000610486565b835b60070b8152602001881515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555060808201518160020160086101000a81548160ff0219169083151502179055505050600180549050600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600180549050600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a90611d47565b60405180910390fd5b6000826000815181106107b9576107b8611d67565b5b602002602001015190506000836001815181106107d9576107d8611d67565b5b602002602001015190506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611de2565b60405180910390fd5b600060018080805490506108b69190611e3b565b815481106108c7576108c6611d67565b5b90600052602060002090600302019050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001808080549050610b739190611e3b565b81548110610b8457610b83611d67565b5b9060005260206000209060030201600180600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1c9190611e3b565b81548110610c2d57610c2c611d67565b5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900460070b8160010160146101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506002820160009054906101000a900460070b8160020160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506002820160089054906101000a900460ff168160020160086101000a81548160ff021916908315150217905550905050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090556001805480610ec957610ec8611e6f565b5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549060ff0219169055505090555050505050565b60606001604051602001610f9591906120bc565b6040516020818303038152906040529050919050565b606060008083600081518110610fc457610fc3611d67565b5b60200260200101519050600084600181518110610fe457610fe3611d67565b5b602002602001015190506000600180600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107a9190611e3b565b8154811061108b5761108a611d67565b5b906000526020600020906003020190506000600267ffffffffffffffff8111156110b8576110b76116d0565b5b6040519080825280602002602001820160405280156110f157816020015b6110de611673565b8152602001906001900390816110d65790505b50905060008260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16149050806111b85760405180604001604052808460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460010160149054906101000a900460070b60070b81525061121c565b60405180604001604052808460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460020160009054906101000a900460070b60070b8152505b826000815181106112305761122f611d67565b5b6020026020010181905250806112a85760405180604001604052808460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460020160009054906101000a900460070b60070b81525061130c565b60405180604001604052808460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460010160149054906101000a900460070b60070b8152505b826001815181106113205761131f611d67565b5b6020026020010181905250818360020160089054906101000a900460ff16965096505050505050915091565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090611d47565b60405180910390fd5b60005b835181101561151157600061143e85838151811061142d5761142c611d67565b5b602002602001015160000151611517565b905060018160030b14156114b657600a85838151811061146157611460611d67565b5b60200260200101516020015160070b13156114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a89061212a565b60405180910390fd5b6114fd565b60008160030b146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390612196565b60405180910390fd5b5b508080611509906121b6565b91505061140c565b50505050565b60008060008061016773ffffffffffffffffffffffffffffffffffffffff166393272baf60e01b8660405160240161154f919061220e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115b99190612265565b6000604051808303816000865af19150503d80600081146115f6576040519150601f19603f3d011682016040523d82523d6000602084013e6115fb565b606091505b50915091508161160e5760156000611623565b8080602001905181019061162291906122b5565b5b8095508194505050601660030b8360030b1461166b576040517fba96339e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060070b81525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611708826116bf565b810181811067ffffffffffffffff82111715611727576117266116d0565b5b80604052505050565b600061173a6116a6565b905061174682826116ff565b919050565b600067ffffffffffffffff821115611766576117656116d0565b5b602082029050602081019050919050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117ac82611781565b9050919050565b6117bc816117a1565b81146117c757600080fd5b50565b6000813590506117d9816117b3565b92915050565b60008160070b9050919050565b6117f5816117df565b811461180057600080fd5b50565b600081359050611812816117ec565b92915050565b60006040828403121561182e5761182d61177c565b5b6118386040611730565b90506000611848848285016117ca565b600083015250602061185c84828501611803565b60208301525092915050565b600061187b6118768461174b565b611730565b9050808382526020820190506040840283018581111561189e5761189d611777565b5b835b818110156118c757806118b38882611818565b8452602084019350506040810190506118a0565b5050509392505050565b600082601f8301126118e6576118e56116ba565b5b81356118f6848260208601611868565b91505092915050565b60008115159050919050565b611914816118ff565b811461191f57600080fd5b50565b6000813590506119318161190b565b92915050565b6000806040838503121561194e5761194d6116b0565b5b600083013567ffffffffffffffff81111561196c5761196b6116b5565b5b611978858286016118d1565b925050602061198985828601611922565b9150509250929050565b600067ffffffffffffffff8211156119ae576119ad6116d0565b5b602082029050602081019050919050565b60006119d26119cd84611993565b611730565b905080838252602082019050602084028301858111156119f5576119f4611777565b5b835b81811015611a1e5780611a0a88826117ca565b8452602084019350506020810190506119f7565b5050509392505050565b600082601f830112611a3d57611a3c6116ba565b5b8135611a4d8482602086016119bf565b91505092915050565b600060208284031215611a6c57611a6b6116b0565b5b600082013567ffffffffffffffff811115611a8a57611a896116b5565b5b611a9684828501611a28565b91505092915050565b600060ff82169050919050565b611ab581611a9f565b8114611ac057600080fd5b50565b600081359050611ad281611aac565b92915050565b600060208284031215611aee57611aed6116b0565b5b6000611afc84828501611ac3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b3f578082015181840152602081019050611b24565b83811115611b4e576000848401525b50505050565b6000611b5f82611b05565b611b698185611b10565b9350611b79818560208601611b21565b611b82816116bf565b840191505092915050565b60006020820190508181036000830152611ba78184611b54565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611be4816117a1565b82525050565b611bf3816117df565b82525050565b604082016000820151611c0f6000850182611bdb565b506020820151611c226020850182611bea565b50505050565b6000611c348383611bf9565b60408301905092915050565b6000602082019050919050565b6000611c5882611baf565b611c628185611bba565b9350611c6d83611bcb565b8060005b83811015611c9e578151611c858882611c28565b9750611c9083611c40565b925050600181019050611c71565b5085935050505092915050565b611cb4816118ff565b82525050565b60006040820190508181036000830152611cd48185611c4d565b9050611ce36020830184611cab565b9392505050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b6000611d31600e83611cea565b9150611d3c82611cfb565b602082019050919050565b60006020820190508181036000830152611d6081611d24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e4f5f504f4f4c00000000000000000000000000000000000000000000000000600082015250565b6000611dcc600783611cea565b9150611dd782611d96565b602082019050919050565b60006020820190508181036000830152611dfb81611dbf565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e4682611e02565b9150611e5183611e02565b925082821015611e6457611e63611e0c565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0f611f0a83611ecf565b611edc565b9050919050565b60008160a01c9050919050565b60008160070b9050919050565b6000611f43611f3e83611f16565b611f23565b9050919050565b6000611f5d611f5883611ecf565b611f23565b9050919050565b60008160401c9050919050565b600060ff82169050919050565b6000611f91611f8c83611f64565b611f71565b9050919050565b611fa1816118ff565b82525050565b60a082016000808301549050611fbc81611efc565b611fc96000860182611bdb565b5060018301549050611fda81611efc565b611fe76020860182611bdb565b50611ff181611f30565b611ffe6040860182611bea565b506002830154905061200f81611f4a565b61201c6060860182611bea565b5061202681611f7e565b6120336080860182611f98565b5050505050565b60006120468383611fa7565b60a08301905092915050565b6000600382019050919050565b600061206a82611e9e565b6120748185611ea9565b935061207f83611eba565b8060005b838110156120af5781612096888261203a565b97506120a183612052565b925050600181019050612083565b5085935050505092915050565b600060208201905081810360008301526120d6818461205f565b905092915050565b7f4e4654535f4c494d495400000000000000000000000000000000000000000000600082015250565b6000612114600a83611cea565b915061211f826120de565b602082019050919050565b6000602082019050818103600083015261214381612107565b9050919050565b7f554e535550504f525445445f544f4b454e5f5459504500000000000000000000600082015250565b6000612180601683611cea565b915061218b8261214a565b602082019050919050565b600060208201905081810360008301526121af81612173565b9050919050565b60006121c182611e02565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121f4576121f3611e0c565b5b600182019050919050565b612208816117a1565b82525050565b600060208201905061222360008301846121ff565b92915050565b600081905092915050565b600061223f82611b05565b6122498185612229565b9350612259818560208601611b21565b80840191505092915050565b60006122718284612234565b915081905092915050565b60008160030b9050919050565b6122928161227c565b811461229d57600080fd5b50565b6000815190506122af81612289565b92915050565b600080604083850312156122cc576122cb6116b0565b5b60006122da858286016122a0565b92505060206122eb858286016122a0565b915050925092905056fea264697066735822122060d17b0ef8445037aa2f941e1dbdf502f13d4d1a05368961bb3150361788109464736f6c634300080b0033a26469706673582212200fb7cc483b4ee5e7ed5db837c353c8919581512b869e03b58e6fc38765da5ce164736f6c634300080b0033"
"runtime_bytecode":
string"0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370480275116100c3578063c48d8e021161007c578063c48d8e0214610384578063c873032b146103b4578063d8fd814f146103d0578063ddedfcf314610400578063ec0071051461041c578063f0fbda2d1461044d5761014d565b806370480275146102c457806397b2544f146102e0578063a50b33e014610310578063a8068d181461032c578063ab8c71c014610348578063b6db75a0146103665761014d565b806324758dcb1161011557806324758dcb146101f25780632e2244021461020e578063440722081461023e5780635786e9321461025a57806365c43cc71461027657806366f03d9a146102945761014d565b80630842bf821461015257806311480d591461016e578063118fee951461018a5780631785f53c146101a65780631820b3bf146101c2575b600080fd5b61016c600480360381019061016791906129e5565b61047d565b005b61018860048036038101906101839190612a7a565b6107cd565b005b6101a4600480360381019061019f9190612a7a565b610969565b005b6101c060048036038101906101bb9190612aa7565b610b05565b005b6101dc60048036038101906101d79190612b97565b610c27565b6040516101e99190612bef565b60405180910390f35b61020c60048036038101906102079190612c65565b610e14565b005b61022860048036038101906102239190612d08565b611193565b6040516102359190612f47565b60405180910390f35b61025860048036038101906102539190612f69565b61125d565b005b610274600480360381019061026f9190612b97565b611493565b005b61027e611630565b60405161028b919061307e565b60405180910390f35b6102ae60048036038101906102a99190612c65565b61165b565b6040516102bb9190612bef565b60405180910390f35b6102de60048036038101906102d99190612aa7565b61171f565b005b6102fa60048036038101906102f59190612aa7565b611841565b6040516103079190612bef565b60405180910390f35b61032a60048036038101906103259190613099565b6119b8565b005b610346600480360381019061034191906130e6565b611a2b565b005b610350611bcd565b60405161035d9190613151565b60405180910390f35b61036e611c25565b60405161037b9190612bef565b60405180910390f35b61039e60048036038101906103999190612a7a565b611c56565b6040516103ab91906131f4565b60405180910390f35b6103ce60048036038101906103c99190613099565b611d17565b005b6103ea60048036038101906103e59190612a7a565b611e01565b6040516103f79190612bef565b60405180910390f35b61041a60048036038101906104159190612f69565b611e73565b005b61043660048036038101906104319190612b97565b61201c565b6040516104449291906132f4565b60405180910390f35b61046760048036038101906104629190612a7a565b6120e2565b60405161047491906131f4565b60405180910390f35b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661053a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053190613381565b60405180910390fd5b60005b83518110156106e75760008061057086848151811061055f5761055e6133a1565b5b6020026020010151600001516121a3565b9150915060018160006003811061058a576105896133a1565b5b60200201511480156105b457506000816001600381106105ad576105ac6133a1565b5b6020020151145b80156105d857506000816002600381106105d1576105d06133a1565b5b6020020151145b15610645578173ffffffffffffffffffffffffffffffffffffffff16632459ca666040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561062557600080fd5b505af1925050508015610636575060015b61063f57610640565b5b6106d2565b8173ffffffffffffffffffffffffffffffffffffffff1663d5e6c68a878581518110610674576106736133a1565b5b6020026020010151600001516040518263ffffffff1660e01b815260040161069c91906133df565b600060405180830381600087803b1580156106b657600080fd5b505af19250505080156106c7575060015b6106d0576106d1565b5b5b505080806106df90613429565b91505061053d565b5060016000845160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630842bf8284846040518363ffffffff1660e01b815260040161075d9291906132f4565b600060405180830381600087803b15801561077757600080fd5b505af115801561078b573d6000803e3d6000fd5b505050507f14810161b0c93c5c7dfa3bf8a1a5d02c721f4a32b0c9ea33b511e5c0789ac2b283836040516107c09291906132f4565b60405180910390a1505050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088190613381565b60405180910390fd5b600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166311480d59836040518263ffffffff1660e01b81526004016108fc9190613151565b600060405180830381600087803b15801561091657600080fd5b505af115801561092a573d6000803e3d6000fd5b505050507fa5010e135493057a9f5399a895ad226a54cf65d6918d7ddc9c406cdac5a75ae88260405161095d9190613151565b60405180910390a15050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1d90613381565b60405180910390fd5b600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663118fee95836040518263ffffffff1660e01b8152600401610a989190613151565b600060405180830381600087803b158015610ab257600080fd5b505af1158015610ac6573d6000803e3d6000fd5b505050507f196ca0e3fd19725314e00d7778ebab832867aa26efc88e069cfd5f80185523df82604051610af99190613151565b60405180910390a15050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb990613381565b60405180910390fd5b610bec827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec426122f1565b7fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f82604051610c1b91906133df565b60405180910390a15050565b600080600090505b8251811015610e0957600080610c5e858481518110610c5157610c506133a1565b5b60200260200101516121a3565b91509150600181600060038110610c7857610c776133a1565b5b6020020151148015610ca25750600081600160038110610c9b57610c9a6133a1565b5b6020020151145b8015610cc65750600081600260038110610cbf57610cbe6133a1565b5b6020020151145b15610d4f578173ffffffffffffffffffffffffffffffffffffffff16631a10f76c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a9190613487565b610d4a5760009350505050610e0f565b610df4565b8173ffffffffffffffffffffffffffffffffffffffff1663d82f54d4868581518110610d7e57610d7d6133a1565b5b60200260200101516040518263ffffffff1660e01b8152600401610da291906133df565b602060405180830381865afa158015610dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de39190613487565b610df35760009350505050610e0f565b5b50508080610e0190613429565b915050610c2f565b50600190505b919050565b60005b8282905081101561106557610e61838383818110610e3857610e376133a1565b5b9050602002810190610e4a91906134c3565b6000016020810190610e5c9190612aa7565b611841565b610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9790613537565b60405180910390fd5b60005b838383818110610eb657610eb56133a1565b5b9050602002810190610ec891906134c3565b8060400190610ed79190613557565b9050811015611051576000600182610eef91906135ba565b90505b848484818110610f0557610f046133a1565b5b9050602002810190610f1791906134c3565b8060400190610f269190613557565b905081101561103d57848484818110610f4257610f416133a1565b5b9050602002810190610f5491906134c3565b8060400190610f639190613557565b82818110610f7457610f736133a1565b5b9050602002016020810190610f899190613610565b60070b858585818110610f9f57610f9e6133a1565b5b9050602002810190610fb191906134c3565b8060400190610fc09190613557565b84818110610fd157610fd06133a1565b5b9050602002016020810190610fe69190613610565b60070b141561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190613689565b60405180910390fd5b808061103590613429565b915050610ef2565b50808061104990613429565b915050610ea3565b50808061105d90613429565b915050610e17565b506000600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324758dcb60e01b84846040516024016110d69291906138ee565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611140919061394e565b600060405180830381855af49150503d806000811461117b576040519150601f19603f3d011682016040523d82523d6000602084013e611180565b606091505b505090508061118e57600080fd5b505050565b6060600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e2244028585856040518463ffffffff1660e01b815260040161120e93929190613a02565b600060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112549190613c82565b90509392505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190613381565b60405180910390fd5b6000600160008585905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634407220860e01b86868660405160240161138c93929190613ccb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113f6919061394e565b600060405180830381855af49150503d8060008114611431576040519150601f19603f3d011682016040523d82523d6000602084013e611436565b606091505b505090508061144457600080fd5b60006114508585612396565b90507fead06a119bf9374925260679eee8bb050c060c7cff525b986aa7978faa23aeb88682604051611483929190613d83565b60405180910390a1505050505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154790613381565b60405180910390fd5b60016000835160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635786e932836040518263ffffffff1660e01b81526004016115c39190613db3565b600060405180830381600087803b1580156115dd57600080fd5b505af11580156115f1573d6000803e3d6000fd5b505050507f5cfc35115fc8e9e720735c4e73900d28a033c3dac8efb748752f64b98bbf8d56826040516116249190613db3565b60405180910390a15050565b6116386126d0565b604051806060016040528060018152602001600081526020016001815250905090565b6000600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366f03d9a84846040518363ffffffff1660e01b81526004016116d49291906138ee565b6020604051808303816000875af11580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190613487565b905092915050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390613381565b60405180910390fd5b611806827fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42612498565b7f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3398260405161183591906133df565b60405180910390a15050565b600080600061184f846121a3565b91509150600181600060038110611869576118686133a1565b5b6020020151148015611893575060008160016003811061188c5761188b6133a1565b5b6020020151145b80156118b757506000816002600381106118b0576118af6133a1565b5b6020020151145b15611934578173ffffffffffffffffffffffffffffffffffffffff16631a10f76c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190613487565b925050506119b3565b8173ffffffffffffffffffffffffffffffffffffffff1663d82f54d4856040518263ffffffff1660e01b815260040161196d91906133df565b602060405180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae9190613487565b925050505b919050565b3073ffffffffffffffffffffffffffffffffffffffff1663a8068d183384846040518463ffffffff1660e01b81526004016119f593929190613a02565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505050565b7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613381565b60405180910390fd5b60016000835160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8068d1884846040518363ffffffff1660e01b8152600401611b5d929190613d83565b600060405180830381600087803b158015611b7757600080fd5b505af1158015611b8b573d6000803e3d6000fd5b505050507fead06a119bf9374925260679eee8bb050c060c7cff525b986aa7978faa23aeb88383604051611bc0929190613d83565b60405180910390a1505050565b60008060009050611bfe337f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b612504565b15611c0a576001811790505b611c12611c25565b15611c1e576002811790505b8091505090565b6000611c51337fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42612504565b905090565b6060600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c48d8e02836040518263ffffffff1660e01b8152600401611cca9190613151565b600060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d109190613e7b565b9050919050565b600160008383905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8068d183384846040518463ffffffff1660e01b8152600401611d9093929190613a02565b600060405180830381600087803b158015611daa57600080fd5b505af1158015611dbe573d6000803e3d6000fd5b505050507fead06a119bf9374925260679eee8bb050c060c7cff525b986aa7978faa23aeb8338383604051611df593929190613a02565b60405180910390a15050565b60008073ffffffffffffffffffffffffffffffffffffffff16600160008460ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b60008082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613381565b60405180910390fd5b600160008484905060ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddedfcf38585856040518463ffffffff1660e01b8152600401611fa993929190613ccb565b600060405180830381600087803b158015611fc357600080fd5b505af1158015611fd7573d6000803e3d6000fd5b505050507f811dad75e5e67db969d68b96a86f7b9f7ac4cf22738745f1a5dd0d4d97d7fd2684848460405161200e93929190613ccb565b60405180910390a150505050565b6060600060016000845160ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec007105846040518263ffffffff1660e01b81526004016120939190613db3565b600060405180830381865afa1580156120b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906120d99190613fab565b91509150915091565b6060600160008360ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0fbda2d836040518263ffffffff1660e01b81526004016121569190613151565b600060405180830381865afa158015612173573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061219c9190613e7b565b9050919050565b60006121ad6126d0565b60006040518060600160405280600181526020016000815260200160008152509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122115760008192509250506122ec565b600061221e85600861256b565b905060008073ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16141561226457816080015161226a565b81602001515b90508073ffffffffffffffffffffffffffffffffffffffff166365c43cc76040518163ffffffff1660e01b8152600401606060405180830381865afa9250505080156122d457506040513d601f19601f820116820180604052508101906122d191906140e4565b60015b6122dd576122e2565b809350505b8083945094505050505b915091565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561232a57600080fd5b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060008383905067ffffffffffffffff8111156123b7576123b6612779565b5b6040519080825280602002602001820160405280156123e55781602001602082028036833780820191505090505b50905060005b8484905081101561248d57848482818110612409576124086133a1565b5b905060200281019061241b91906134c3565b600001602081019061242d9190612aa7565b8282815181106124405761243f6133a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061248590613429565b9150506123eb565b508091505092915050565b600160008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6125736126f2565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16633c4dd32e60e01b87876040516024016125ac929190614120565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612616919061394e565b6000604051808303816000865af19150503d8060008114612653576040519150601f19603f3d011682016040523d82523d6000602084013e612658565b606091505b50915091508161266a5760158461267f565b8080602001905181019061267e9190614246565b5b8095508194505050601660030b8360030b146126c7576040517f664cb42300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060a00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127b182612768565b810181811067ffffffffffffffff821117156127d0576127cf612779565b5b80604052505050565b60006127e361274f565b90506127ef82826127a8565b919050565b600067ffffffffffffffff82111561280f5761280e612779565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061285a8261282f565b9050919050565b61286a8161284f565b811461287557600080fd5b50565b60008135905061288781612861565b92915050565b60008160070b9050919050565b6128a38161288d565b81146128ae57600080fd5b50565b6000813590506128c08161289a565b92915050565b6000604082840312156128dc576128db612825565b5b6128e660406127d9565b905060006128f684828501612878565b600083015250602061290a848285016128b1565b60208301525092915050565b6000612929612924846127f4565b6127d9565b9050808382526020820190506040840283018581111561294c5761294b612820565b5b835b81811015612975578061296188826128c6565b84526020840193505060408101905061294e565b5050509392505050565b600082601f83011261299457612993612763565b5b81356129a4848260208601612916565b91505092915050565b60008115159050919050565b6129c2816129ad565b81146129cd57600080fd5b50565b6000813590506129df816129b9565b92915050565b600080604083850312156129fc576129fb612759565b5b600083013567ffffffffffffffff811115612a1a57612a1961275e565b5b612a268582860161297f565b9250506020612a37858286016129d0565b9150509250929050565b600060ff82169050919050565b612a5781612a41565b8114612a6257600080fd5b50565b600081359050612a7481612a4e565b92915050565b600060208284031215612a9057612a8f612759565b5b6000612a9e84828501612a65565b91505092915050565b600060208284031215612abd57612abc612759565b5b6000612acb84828501612878565b91505092915050565b600067ffffffffffffffff821115612aef57612aee612779565b5b602082029050602081019050919050565b6000612b13612b0e84612ad4565b6127d9565b90508083825260208201905060208402830185811115612b3657612b35612820565b5b835b81811015612b5f5780612b4b8882612878565b845260208401935050602081019050612b38565b5050509392505050565b600082601f830112612b7e57612b7d612763565b5b8135612b8e848260208601612b00565b91505092915050565b600060208284031215612bad57612bac612759565b5b600082013567ffffffffffffffff811115612bcb57612bca61275e565b5b612bd784828501612b69565b91505092915050565b612be9816129ad565b82525050565b6000602082019050612c046000830184612be0565b92915050565b600080fd5b60008083601f840112612c2557612c24612763565b5b8235905067ffffffffffffffff811115612c4257612c41612c0a565b5b602083019150836020820283011115612c5e57612c5d612820565b5b9250929050565b60008060208385031215612c7c57612c7b612759565b5b600083013567ffffffffffffffff811115612c9a57612c9961275e565b5b612ca685828601612c0f565b92509250509250929050565b60008083601f840112612cc857612cc7612763565b5b8235905067ffffffffffffffff811115612ce557612ce4612c0a565b5b602083019150836020820283011115612d0157612d00612820565b5b9250929050565b600080600060408486031215612d2157612d20612759565b5b6000612d2f86828701612878565b935050602084013567ffffffffffffffff811115612d5057612d4f61275e565b5b612d5c86828701612cb2565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d9d8161284f565b82525050565b612dac8161288d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612dea8383612da3565b60208301905092915050565b6000602082019050919050565b6000612e0e82612db2565b612e188185612dbd565b9350612e2383612dce565b8060005b83811015612e54578151612e3b8882612dde565b9750612e4683612df6565b925050600181019050612e27565b5085935050505092915050565b6000606083016000830151612e796000860182612d94565b506020830151612e8c6020860182612da3565b5060408301518482036040860152612ea48282612e03565b9150508091505092915050565b6000612ebd8383612e61565b905092915050565b6000602082019050919050565b6000612edd82612d68565b612ee78185612d73565b935083602082028501612ef985612d84565b8060005b85811015612f355784840389528151612f168582612eb1565b9450612f2183612ec5565b925060208a01995050600181019050612efd565b50829750879550505050505092915050565b60006020820190508181036000830152612f618184612ed2565b905092915050565b600080600060408486031215612f8257612f81612759565b5b6000612f9086828701612878565b935050602084013567ffffffffffffffff811115612fb157612fb061275e565b5b612fbd86828701612c0f565b92509250509250925092565b600060039050919050565b600081905092915050565b6000819050919050565b6000819050919050565b612ffc81612fe9565b82525050565b600061300e8383612ff3565b60208301905092915050565b6000602082019050919050565b61303081612fc9565b61303a8184612fd4565b925061304582612fdf565b8060005b8381101561307657815161305d8782613002565b96506130688361301a565b925050600181019050613049565b505050505050565b60006060820190506130936000830184613027565b92915050565b600080602083850312156130b0576130af612759565b5b600083013567ffffffffffffffff8111156130ce576130cd61275e565b5b6130da85828601612cb2565b92509250509250929050565b600080604083850312156130fd576130fc612759565b5b600061310b85828601612878565b925050602083013567ffffffffffffffff81111561312c5761312b61275e565b5b61313885828601612b69565b9150509250929050565b61314b81612a41565b82525050565b60006020820190506131666000830184613142565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131a657808201518184015260208101905061318b565b838111156131b5576000848401525b50505050565b60006131c68261316c565b6131d08185613177565b93506131e0818560208601613188565b6131e981612768565b840191505092915050565b6000602082019050818103600083015261320e81846131bb565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6040820160008201516132586000850182612d94565b50602082015161326b6020850182612da3565b50505050565b600061327d8383613242565b60408301905092915050565b6000602082019050919050565b60006132a182613216565b6132ab8185613221565b93506132b683613232565b8060005b838110156132e75781516132ce8882613271565b97506132d983613289565b9250506001810190506132ba565b5085935050505092915050565b6000604082019050818103600083015261330e8185613296565b905061331d6020830184612be0565b9392505050565b600082825260208201905092915050565b7f4e4f5f5045524d495353494f4e53000000000000000000000000000000000000600082015250565b600061336b600e83613324565b915061337682613335565b602082019050919050565b6000602082019050818103600083015261339a8161335e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6133d98161284f565b82525050565b60006020820190506133f460008301846133d0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061343482612fe9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613467576134666133fa565b5b600182019050919050565b600081519050613481816129b9565b92915050565b60006020828403121561349d5761349c612759565b5b60006134ab84828501613472565b91505092915050565b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126134df576134de6134b4565b5b80830191505092915050565b7f504149525f4e4f545f415641494c41424c450000000000000000000000000000600082015250565b6000613521601283613324565b915061352c826134eb565b602082019050919050565b6000602082019050818103600083015261355081613514565b9050919050565b60008083356001602003843603038112613574576135736134b4565b5b80840192508235915067ffffffffffffffff821115613596576135956134b9565b5b6020830192506020820236038313156135b2576135b16134be565b5b509250929050565b60006135c582612fe9565b91506135d083612fe9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613605576136046133fa565b5b828201905092915050565b60006020828403121561362657613625612759565b5b6000613634848285016128b1565b91505092915050565b7f4e4f545f554e495155455f53455249414c530000000000000000000000000000600082015250565b6000613673601283613324565b915061367e8261363d565b602082019050919050565b600060208201905081810360008301526136a281613666565b9050919050565b6000819050919050565b60006136c26020840184612878565b905092915050565b60006136d960208401846128b1565b905092915050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261370d5761370c6136eb565b5b83810192508235915060208301925067ffffffffffffffff821115613735576137346136e1565b5b60208202360384131561374b5761374a6136e6565b5b509250929050565b6000819050919050565b6000602082019050919050565b60006137768385612dbd565b935061378182613753565b8060005b858110156137ba5761379782846136ca565b6137a18882612dde565b97506137ac8361375d565b925050600181019050613785565b5085925050509392505050565b6000606083016137da60008401846136b3565b6137e76000860182612d94565b506137f560208401846136ca565b6138026020860182612da3565b5061381060408401846136f0565b858303604087015261382383828461376a565b925050508091505092915050565b600061383d83836137c7565b905092915050565b600082356001606003833603038112613861576138606136eb565b5b82810191505092915050565b6000602082019050919050565b60006138868385612d73565b935083602084028501613898846136a9565b8060005b878110156138dc5784840389526138b38284613845565b6138bd8582613831565b94506138c88361386d565b925060208a0199505060018101905061389c565b50829750879450505050509392505050565b6000602082019050818103600083015261390981848661387a565b90509392505050565b600081905092915050565b60006139288261316c565b6139328185613912565b9350613942818560208601613188565b80840191505092915050565b600061395a828461391d565b915081905092915050565b600082825260208201905092915050565b6000819050919050565b600061398c8383612d94565b60208301905092915050565b6000602082019050919050565b60006139b18385613965565b93506139bc82613976565b8060005b858110156139f5576139d282846136b3565b6139dc8882613980565b97506139e783613998565b9250506001810190506139c0565b5085925050509392505050565b6000604082019050613a1760008301866133d0565b8181036020830152613a2a8184866139a5565b9050949350505050565b600067ffffffffffffffff821115613a4f57613a4e612779565b5b602082029050602081019050919050565b600081519050613a6f81612861565b92915050565b600081519050613a848161289a565b92915050565b600067ffffffffffffffff821115613aa557613aa4612779565b5b602082029050602081019050919050565b6000613ac9613ac484613a8a565b6127d9565b90508083825260208201905060208402830185811115613aec57613aeb612820565b5b835b81811015613b155780613b018882613a75565b845260208401935050602081019050613aee565b5050509392505050565b600082601f830112613b3457613b33612763565b5b8151613b44848260208601613ab6565b91505092915050565b600060608284031215613b6357613b62612825565b5b613b6d60606127d9565b90506000613b7d84828501613a60565b6000830152506020613b9184828501613a75565b602083015250604082015167ffffffffffffffff811115613bb557613bb461282a565b5b613bc184828501613b1f565b60408301525092915050565b6000613be0613bdb84613a34565b6127d9565b90508083825260208201905060208402830185811115613c0357613c02612820565b5b835b81811015613c4a57805167ffffffffffffffff811115613c2857613c27612763565b5b808601613c358982613b4d565b85526020850194505050602081019050613c05565b5050509392505050565b600082601f830112613c6957613c68612763565b5b8151613c79848260208601613bcd565b91505092915050565b600060208284031215613c9857613c97612759565b5b600082015167ffffffffffffffff811115613cb657613cb561275e565b5b613cc284828501613c54565b91505092915050565b6000604082019050613ce060008301866133d0565b8181036020830152613cf381848661387a565b9050949350505050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000613d3082613cfd565b613d3a8185613965565b9350613d4583613d08565b8060005b83811015613d76578151613d5d8882613980565b9750613d6883613d18565b925050600181019050613d49565b5085935050505092915050565b6000604082019050613d9860008301856133d0565b8181036020830152613daa8184613d25565b90509392505050565b60006020820190508181036000830152613dcd8184613d25565b905092915050565b600080fd5b600067ffffffffffffffff821115613df557613df4612779565b5b613dfe82612768565b9050602081019050919050565b6000613e1e613e1984613dda565b6127d9565b905082815260208101848484011115613e3a57613e39613dd5565b5b613e45848285613188565b509392505050565b600082601f830112613e6257613e61612763565b5b8151613e72848260208601613e0b565b91505092915050565b600060208284031215613e9157613e90612759565b5b600082015167ffffffffffffffff811115613eaf57613eae61275e565b5b613ebb84828501613e4d565b91505092915050565b600060408284031215613eda57613ed9612825565b5b613ee460406127d9565b90506000613ef484828501613a60565b6000830152506020613f0884828501613a75565b60208301525092915050565b6000613f27613f22846127f4565b6127d9565b90508083825260208201905060408402830185811115613f4a57613f49612820565b5b835b81811015613f735780613f5f8882613ec4565b845260208401935050604081019050613f4c565b5050509392505050565b600082601f830112613f9257613f91612763565b5b8151613fa2848260208601613f14565b91505092915050565b60008060408385031215613fc257613fc1612759565b5b600083015167ffffffffffffffff811115613fe057613fdf61275e565b5b613fec85828601613f7d565b9250506020613ffd85828601613472565b9150509250929050565b600067ffffffffffffffff82111561402257614021612779565b5b602082029050919050565b61403681612fe9565b811461404157600080fd5b50565b6000815190506140538161402d565b92915050565b600061406c61406784614007565b6127d9565b9050806020840283018581111561408657614085612820565b5b835b818110156140af578061409b8882614044565b845260208401935050602081019050614088565b5050509392505050565b600082601f8301126140ce576140cd612763565b5b60036140db848285614059565b91505092915050565b6000606082840312156140fa576140f9612759565b5b6000614108848285016140b9565b91505092915050565b61411a81612fe9565b82525050565b600060408201905061413560008301856133d0565b6141426020830184614111565b9392505050565b60008160030b9050919050565b61415f81614149565b811461416a57600080fd5b50565b60008151905061417c81614156565b92915050565b600060a0828403121561419857614197612825565b5b6141a260a06127d9565b905060006141b284828501613472565b60008301525060206141c684828501613a60565b602083015250604082015167ffffffffffffffff8111156141ea576141e961282a565b5b6141f684828501613e4d565b604083015250606082015167ffffffffffffffff81111561421a5761421961282a565b5b61422684828501613e4d565b606083015250608061423a84828501613a60565b60808301525092915050565b6000806040838503121561425d5761425c612759565b5b600061426b8582860161416d565b925050602083015167ffffffffffffffff81111561428c5761428b61275e565b5b61429885828601614182565b915050925092905056fea26469706673582212205592542d0cd06b3d1a77d0bd8bf53b1beda8c832dec52ff66cb8d4ce8d3d203264736f6c634300080b0033"