60806040523480156200001157600080fd5b506040518060400160405280600481526020017f52414e47000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f52414e47000000000000000000000000000000000000000000000000000000008152506200009e62000092620000f760201b60201c565b620000ff60201b60201c565b8160049080519060200190620000b692919062000505565b508060059080519060200190620000cf92919062000505565b505050620000f1336c0a76172369b25a8ea090f00000620001c360201b60201c565b62000829565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000236576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200022d9062000616565b60405180910390fd5b6200024a600083836200036160201b60201c565b5080600360008282546200025f919062000671565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550630168d7a7640603bacdd902642ff782792d679aca345771d338c70202806000526001602052604060002071cafedeadbeefdeadbeefdeadbeefdeadbeef815550508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003559190620006df565b60405180910390a35050565b600063deadcafe60026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620004b2919062000671565b10620004d157620004c982620004dc60201b60201c565b9050620004d5565b8190505b9392505050565b600062dedead61dead83620004f29190620006fc565b620004fe91906200078c565b9050919050565b8280546200051390620007f3565b90600052602060002090601f01602090048101928262000537576000855562000583565b82601f106200055257805160ff191683800117855562000583565b8280016001018555821562000583579182015b828111156200058257825182559160200191906001019062000565565b5b50905062000592919062000596565b5090565b5b80821115620005b157600081600090555060010162000597565b5090565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005fe601f83620005b5565b91506200060b82620005c6565b602082019050919050565b600060208201905081810360008301526200063181620005ef565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200067e8262000638565b91506200068b8362000638565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006c357620006c262000642565b5b828201905092915050565b620006d98162000638565b82525050565b6000602082019050620006f66000830184620006ce565b92915050565b6000620007098262000638565b9150620007168362000638565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000752576200075162000642565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007998262000638565b9150620007a68362000638565b925082620007b957620007b86200075d565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200080c57607f821691505b60208210811415620008235762000822620007c4565b5b50919050565b611a1480620008396000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b45780636f123a95146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f91906110ec565b60405180910390f35b610132600480360381019061012d91906111a7565b6103b4565b60405161013f9190611202565b60405180910390f35b6101506103d7565b60405161015d919061122c565b60405180910390f35b610180600480360381019061017b9190611247565b6103e1565b60405161018d9190611202565b60405180910390f35b61019e610410565b6040516101ab91906112b6565b60405180910390f35b6101ce60048036038101906101c991906111a7565b610419565b6040516101db9190611202565b60405180910390f35b6101fe60048036038101906101f991906112d1565b610450565b005b61021a600480360381019061021591906112d1565b61049c565b604051610227919061122c565b60405180910390f35b6102386104e5565b005b6102426104f9565b60405161024f919061130d565b60405180910390f35b610260610522565b60405161026d91906110ec565b60405180910390f35b610290600480360381019061028b91906111a7565b6105b4565b60405161029d9190611202565b60405180910390f35b6102c060048036038101906102bb91906111a7565b61062b565b6040516102cd9190611202565b60405180910390f35b6102f060048036038101906102eb9190611328565b61064e565b6040516102fd919061122c565b60405180910390f35b610320600480360381019061031b91906112d1565b6106d5565b005b60606004805461033190611397565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611397565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b6000806103bf610759565b90506103cc818585610761565b600191505092915050565b6000600354905090565b6000806103ec610759565b90506103f985828561092c565b6104048585856109b8565b60019150509392505050565b60006012905090565b600080610424610759565b9050610445818585610436858961064e565b61044091906113f8565b610761565b600191505092915050565b610458610d7d565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104ed610d7d565b6104f76000610dfb565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461053190611397565b80601f016020809104026020016040519081016040528092919081815260200182805461055d90611397565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b5050505050905090565b6000806105bf610759565b905060006105cd828661064e565b905083811015610612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610609906114c0565b60405180910390fd5b61061f8286868403610761565b60019250505092915050565b600080610636610759565b90506106438185856109b8565b600191505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106dd610d7d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074490611552565b60405180910390fd5b61075681610dfb565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c8906115e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083890611676565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161091f919061122c565b60405180910390a3505050565b6000610938848461064e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109b257818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b906116e2565b60405180910390fd5b6109b18484848403610761565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90611774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611806565b60405180910390fd5b6000610aa5848484610ebf565b90506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590611898565b60405180910390fd5b828103600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610c1e919061122c565b60405180910390a361dead60026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d765763deadcafe60026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050505050565b610d85610759565b73ffffffffffffffffffffffffffffffffffffffff16610da36104f9565b73ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090611904565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600063deadcafe60026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100e91906113f8565b106110235761101c8261102e565b9050611027565b8190505b9392505050565b600062dedead61dead836110429190611924565b61104c91906119ad565b9050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561108d578082015181840152602081019050611072565b8381111561109c576000848401525b50505050565b6000601f19601f8301169050919050565b60006110be82611053565b6110c8818561105e565b93506110d881856020860161106f565b6110e1816110a2565b840191505092915050565b6000602082019050818103600083015261110681846110b3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061113e82611113565b9050919050565b61114e81611133565b811461115957600080fd5b50565b60008135905061116b81611145565b92915050565b6000819050919050565b61118481611171565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b600080604083850312156111be576111bd61110e565b5b60006111cc8582860161115c565b92505060206111dd85828601611192565b9150509250929050565b60008115159050919050565b6111fc816111e7565b82525050565b600060208201905061121760008301846111f3565b92915050565b61122681611171565b82525050565b6000602082019050611241600083018461121d565b92915050565b6000806000606084860312156112605761125f61110e565b5b600061126e8682870161115c565b935050602061127f8682870161115c565b925050604061129086828701611192565b9150509250925092565b600060ff82169050919050565b6112b08161129a565b82525050565b60006020820190506112cb60008301846112a7565b92915050565b6000602082840312156112e7576112e661110e565b5b60006112f58482850161115c565b91505092915050565b61130781611133565b82525050565b600060208201905061132260008301846112fe565b92915050565b6000806040838503121561133f5761133e61110e565b5b600061134d8582860161115c565b925050602061135e8582860161115c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113af57607f821691505b602082108114156113c3576113c2611368565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061140382611171565b915061140e83611171565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611443576114426113c9565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114aa60258361105e565b91506114b58261144e565b604082019050919050565b600060208201905081810360008301526114d98161149d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061153c60268361105e565b9150611547826114e0565b604082019050919050565b6000602082019050818103600083015261156b8161152f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006115ce60248361105e565b91506115d982611572565b604082019050919050565b600060208201905081810360008301526115fd816115c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061166060228361105e565b915061166b82611604565b604082019050919050565b6000602082019050818103600083015261168f81611653565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006116cc601d8361105e565b91506116d782611696565b602082019050919050565b600060208201905081810360008301526116fb816116bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061175e60258361105e565b915061176982611702565b604082019050919050565b6000602082019050818103600083015261178d81611751565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006117f060238361105e565b91506117fb82611794565b604082019050919050565b6000602082019050818103600083015261181f816117e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061188260268361105e565b915061188d82611826565b604082019050919050565b600060208201905081810360008301526118b181611875565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118ee60208361105e565b91506118f9826118b8565b602082019050919050565b6000602082019050818103600083015261191d816118e1565b9050919050565b600061192f82611171565b915061193a83611171565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611973576119726113c9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006119b882611171565b91506119c383611171565b9250826119d3576119d261197e565b5b82820490509291505056fea2646970667358221220155ef1eb79eb93810cc2a08ba5ac56f750da7944eae148acc2777d885bccc28664736f6c63430008090033