0x60806040523480156200001157600080fd5b50604051620021d6380380620021d68339818101604052810190620000379190620005aa565b82828160039080519060200190620000519291906200031f565b5080600490805190602001906200006a9291906200031f565b5050506200008d62000081620000ce60201b60201c565b620000d660201b60201c565b80600560146101000a81548160ff021916908360ff160217905550620000c5336a084595161401484a0000006200019c60201b60201c565b505050620007f0565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200020f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200020690620006a5565b60405180910390fd5b62000223600083836200031560201b60201c565b806002600082825462000237919062000700565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200028e919062000700565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002f591906200076e565b60405180910390a362000311600083836200031a60201b60201c565b5050565b505050565b505050565b8280546200032d90620007ba565b90600052602060002090601f0160209004810192826200035157600085556200039d565b82601f106200036c57805160ff19168380011785556200039d565b828001600101855582156200039d579182015b828111156200039c5782518255916020019190600101906200037f565b5b509050620003ac9190620003b0565b5090565b5b80821115620003cb576000816000905550600101620003b1565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200043882620003ed565b810181811067ffffffffffffffff821117156200045a5762000459620003fe565b5b80604052505050565b60006200046f620003cf565b90506200047d82826200042d565b919050565b600067ffffffffffffffff821115620004a0576200049f620003fe565b5b620004ab82620003ed565b9050602081019050919050565b60005b83811015620004d8578082015181840152602081019050620004bb565b83811115620004e8576000848401525b50505050565b600062000505620004ff8462000482565b62000463565b905082815260208101848484011115620005245762000523620003e8565b5b62000531848285620004b8565b509392505050565b600082601f830112620005515762000550620003e3565b5b815162000563848260208601620004ee565b91505092915050565b600060ff82169050919050565b62000584816200056c565b81146200059057600080fd5b50565b600081519050620005a48162000579565b92915050565b600080600060608486031215620005c657620005c5620003d9565b5b600084015167ffffffffffffffff811115620005e757620005e6620003de565b5b620005f58682870162000539565b935050602084015167ffffffffffffffff811115620006195762000618620003de565b5b620006278682870162000539565b92505060406200063a8682870162000593565b9150509250925092565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200068d601f8362000644565b91506200069a8262000655565b602082019050919050565b60006020820190508181036000830152620006c0816200067e565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200070d82620006c7565b91506200071a83620006c7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007525762000751620006d1565b5b828201905092915050565b6200076881620006c7565b82525050565b60006020820190506200078560008301846200075d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007d357607f821691505b60208210811415620007ea57620007e96200078b565b5b50919050565b6119d680620008006000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806340c10f19146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f91906110d6565b60405180910390f35b610132600480360381019061012d9190611191565b6103b4565b60405161013f91906111ec565b60405180910390f35b6101506103d2565b60405161015d9190611216565b60405180910390f35b610180600480360381019061017b9190611231565b6103dc565b60405161018d91906111ec565b60405180910390f35b61019e6104d4565b6040516101ab91906112a0565b60405180910390f35b6101ce60048036038101906101c99190611191565b6104eb565b6040516101db91906111ec565b60405180910390f35b6101fe60048036038101906101f99190611191565b610597565b005b61021a600480360381019061021591906112bb565b6105a5565b6040516102279190611216565b60405180910390f35b6102386105ed565b005b610242610675565b60405161024f91906112f7565b60405180910390f35b61026061069f565b60405161026d91906110d6565b60405180910390f35b610290600480360381019061028b9190611191565b610731565b60405161029d91906111ec565b60405180910390f35b6102c060048036038101906102bb9190611191565b61081c565b6040516102cd91906111ec565b60405180910390f35b6102f060048036038101906102eb9190611312565b61083a565b6040516102fd9190611216565b60405180910390f35b610320600480360381019061031b91906112bb565b6108c1565b005b60606003805461033190611381565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611381565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b60006103c86103c16109b9565b84846109c1565b6001905092915050565b6000600254905090565b60006103e9848484610b8c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104346109b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab90611425565b60405180910390fd5b6104c8856104c06109b9565b8584036109c1565b60019150509392505050565b6000600560149054906101000a900460ff16905090565b600061058d6104f86109b9565b8484600160006105066109b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105889190611474565b6109c1565b6001905092915050565b6105a18282610e0d565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105f56109b9565b73ffffffffffffffffffffffffffffffffffffffff16610613610675565b73ffffffffffffffffffffffffffffffffffffffff1614610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066090611516565b60405180910390fd5b6106736000610f6d565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106ae90611381565b80601f01602080910402602001604051908101604052809291908181526020018280546106da90611381565b80156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b5050505050905090565b600080600160006107406109b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f4906115a8565b60405180910390fd5b6108116108086109b9565b858584036109c1565b600191505092915050565b60006108306108296109b9565b8484610b8c565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108c96109b9565b73ffffffffffffffffffffffffffffffffffffffff166108e7610675565b73ffffffffffffffffffffffffffffffffffffffff161461093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490611516565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a49061163a565b60405180910390fd5b6109b681610f6d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906116cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a989061175e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b7f9190611216565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf3906117f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6390611882565b60405180910390fd5b610c77838383611033565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490611914565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d909190611474565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610df49190611216565b60405180910390a3610e07848484611038565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7490611980565b60405180910390fd5b610e8960008383611033565b8060026000828254610e9b9190611474565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef09190611474565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f559190611216565b60405180910390a3610f6960008383611038565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561107757808201518184015260208101905061105c565b83811115611086576000848401525b50505050565b6000601f19601f8301169050919050565b60006110a88261103d565b6110b28185611048565b93506110c2818560208601611059565b6110cb8161108c565b840191505092915050565b600060208201905081810360008301526110f0818461109d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611128826110fd565b9050919050565b6111388161111d565b811461114357600080fd5b50565b6000813590506111558161112f565b92915050565b6000819050919050565b61116e8161115b565b811461117957600080fd5b50565b60008135905061118b81611165565b92915050565b600080604083850312156111a8576111a76110f8565b5b60006111b685828601611146565b92505060206111c78582860161117c565b9150509250929050565b60008115159050919050565b6111e6816111d1565b82525050565b600060208201905061120160008301846111dd565b92915050565b6112108161115b565b82525050565b600060208201905061122b6000830184611207565b92915050565b60008060006060848603121561124a576112496110f8565b5b600061125886828701611146565b935050602061126986828701611146565b925050604061127a8682870161117c565b9150509250925092565b600060ff82169050919050565b61129a81611284565b82525050565b60006020820190506112b56000830184611291565b92915050565b6000602082840312156112d1576112d06110f8565b5b60006112df84828501611146565b91505092915050565b6112f18161111d565b82525050565b600060208201905061130c60008301846112e8565b92915050565b60008060408385031215611329576113286110f8565b5b600061133785828601611146565b925050602061134885828601611146565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061139957607f821691505b602082108114156113ad576113ac611352565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061140f602883611048565b915061141a826113b3565b604082019050919050565b6000602082019050818103600083015261143e81611402565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061147f8261115b565b915061148a8361115b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114bf576114be611445565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611500602083611048565b915061150b826114ca565b602082019050919050565b6000602082019050818103600083015261152f816114f3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611592602583611048565b915061159d82611536565b604082019050919050565b600060208201905081810360008301526115c181611585565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611624602683611048565b915061162f826115c8565b604082019050919050565b6000602082019050818103600083015261165381611617565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006116b6602483611048565b91506116c18261165a565b604082019050919050565b600060208201905081810360008301526116e5816116a9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611748602283611048565b9150611753826116ec565b604082019050919050565b600060208201905081810360008301526117778161173b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006117da602583611048565b91506117e58261177e565b604082019050919050565b60006020820190508181036000830152611809816117cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061186c602383611048565b915061187782611810565b604082019050919050565b6000602082019050818103600083015261189b8161185f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006118fe602683611048565b9150611909826118a2565b604082019050919050565b6000602082019050818103600083015261192d816118f1565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061196a601f83611048565b915061197582611934565b602082019050919050565b600060208201905081810360008301526119998161195d565b905091905056fea264697066735822122007edc4f6fc0d700e64ca90ce4405595fd3e94f2c013dfb5fb2dbd42b7166fba364736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000010546f6b656e20446563696d616c2031380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034431380000000000000000000000000000000000000000000000000000000000