60806040523480156200001157600080fd5b506040518060400160405280600781526020017f424947464f4f54000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f424947464f4f540000000000000000000000000000000000000000000000000081525081600390816200008f919062000532565b508060059081620000a1919062000532565b50620000b26200013e60201b60201c565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200013833620001096200014660201b60201c565b60ff16600a6200011a91906200079c565b6461f313f8806200012c9190620007ed565b6200014f60201b60201c565b62000924565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b89062000899565b60405180910390fd5b620001d560008383620002b360201b60201c565b8060026000828254620001e99190620008bb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002409190620008bb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002a7919062000907565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033a57607f821691505b60208210810362000350576200034f620002f2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200037b565b620003c686836200037b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004136200040d6200040784620003de565b620003e8565b620003de565b9050919050565b6000819050919050565b6200042f83620003f2565b620004476200043e826200041a565b84845462000388565b825550505050565b600090565b6200045e6200044f565b6200046b81848462000424565b505050565b5b8181101562000493576200048760008262000454565b60018101905062000471565b5050565b601f821115620004e257620004ac8162000356565b620004b7846200036b565b81016020851015620004c7578190505b620004df620004d6856200036b565b83018262000470565b50505b505050565b600082821c905092915050565b60006200050760001984600802620004e7565b1980831691505092915050565b6000620005228383620004f4565b9150826002028217905092915050565b6200053d82620002b8565b67ffffffffffffffff811115620005595762000558620002c3565b5b62000565825462000321565b6200057282828562000497565b600060209050601f831160018114620005aa576000841562000595578287015190505b620005a1858262000514565b86555062000611565b601f198416620005ba8662000356565b60005b82811015620005e457848901518255600182019150602085019450602081019050620005bd565b8683101562000604578489015162000600601f891682620004f4565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006a7578086048111156200067f576200067e62000619565b5b60018516156200068f5780820291505b80810290506200069f8562000648565b94506200065f565b94509492505050565b600082620006c2576001905062000795565b81620006d2576000905062000795565b8160018114620006eb5760028114620006f6576200072c565b600191505062000795565b60ff8411156200070b576200070a62000619565b5b8360020a91508482111562000725576200072462000619565b5b5062000795565b5060208310610133831016604e8410600b8410161715620007665782820a90508381111562000760576200075f62000619565b5b62000795565b62000775848484600162000655565b925090508184048111156200078f576200078e62000619565b5b81810290505b9392505050565b6000620007a982620003de565b9150620007b683620003de565b9250620007e57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006b0565b905092915050565b6000620007fa82620003de565b91506200080783620003de565b92508282026200081781620003de565b9150828204841483151762000831576200083062000619565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000881601f8362000838565b91506200088e8262000849565b602082019050919050565b60006020820190508181036000830152620008b48162000872565b9050919050565b6000620008c882620003de565b9150620008d583620003de565b9250828201905080821115620008f057620008ef62000619565b5b92915050565b6200090181620003de565b82525050565b60006020820190506200091e6000830184620008f6565b92915050565b61173980620009346000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063395093511161008c578063a3e6761011610066578063a3e6761014610228578063a457c2d714610246578063a9059cbb14610276578063dd62ed3e146102a6576100cf565b806339509351146101aa57806370a08231146101da57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063292df6fc14610170578063313ce5671461018c575b600080fd5b6100dc6102d6565b6040516100e99190610eba565b60405180910390f35b61010c60048036038101906101079190610f75565b610368565b6040516101199190610fd0565b60405180910390f35b61012a610386565b6040516101379190610ffa565b60405180910390f35b61015a60048036038101906101559190611015565b610390565b6040516101679190610fd0565b60405180910390f35b61018a60048036038101906101859190610f75565b610491565b005b610194610536565b6040516101a19190611084565b60405180910390f35b6101c460048036038101906101bf9190610f75565b61053f565b6040516101d19190610fd0565b60405180910390f35b6101f460048036038101906101ef919061109f565b6105eb565b6040516102019190610ffa565b60405180910390f35b610212610633565b60405161021f9190610eba565b60405180910390f35b6102306106c5565b60405161023d91906110db565b60405180910390f35b610260600480360381019061025b9190610f75565b6106eb565b60405161026d9190610fd0565b60405180910390f35b610290600480360381019061028b9190610f75565b6107df565b60405161029d9190610fd0565b60405180910390f35b6102c060048036038101906102bb91906110f6565b6107fd565b6040516102cd9190610ffa565b60405180910390f35b6060600380546102e590611165565b80601f016020809104026020016040519081016040528092919081815260200182805461031190611165565b801561035e5780601f106103335761010080835404028352916020019161035e565b820191906000526020600020905b81548152906001019060200180831161034157829003601f168201915b5050505050905090565b600061037c610375610884565b848461088c565b6001905092915050565b6000600254905090565b600061039d848484610a55565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e8610884565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f90611208565b60405180910390fd5b61048585610474610884565b85846104809190611257565b61088c565b60019150509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166104d2610884565b73ffffffffffffffffffffffffffffffffffffffff1614610528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051f906112d7565b60405180910390fd5b6105328282610cd2565b5050565b60006012905090565b60006105e161054c610884565b84846001600061055a610884565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105dc91906112f7565b61088c565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606005805461064290611165565b80601f016020809104026020016040519081016040528092919081815260200182805461066e90611165565b80156106bb5780601f10610690576101008083540402835291602001916106bb565b820191906000526020600020905b81548152906001019060200180831161069e57829003601f168201915b5050505050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160006106fa610884565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae9061139d565b60405180910390fd5b6107d46107c2610884565b8585846107cf9190611257565b61088c565b600191505092915050565b60006107f36107ec610884565b8484610a55565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f29061142f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610961906114c1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a489190610ffa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90611553565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906115e5565b60405180910390fd5b610b3e838383610e25565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90611677565b60405180910390fd5b8181610bd09190611257565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6091906112f7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc49190610ffa565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906116e3565b60405180910390fd5b610d4d60008383610e25565b8060026000828254610d5f91906112f7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610db491906112f7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e199190610ffa565b60405180910390a35050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e64578082015181840152602081019050610e49565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e8c82610e2a565b610e968185610e35565b9350610ea6818560208601610e46565b610eaf81610e70565b840191505092915050565b60006020820190508181036000830152610ed48184610e81565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f0c82610ee1565b9050919050565b610f1c81610f01565b8114610f2757600080fd5b50565b600081359050610f3981610f13565b92915050565b6000819050919050565b610f5281610f3f565b8114610f5d57600080fd5b50565b600081359050610f6f81610f49565b92915050565b60008060408385031215610f8c57610f8b610edc565b5b6000610f9a85828601610f2a565b9250506020610fab85828601610f60565b9150509250929050565b60008115159050919050565b610fca81610fb5565b82525050565b6000602082019050610fe56000830184610fc1565b92915050565b610ff481610f3f565b82525050565b600060208201905061100f6000830184610feb565b92915050565b60008060006060848603121561102e5761102d610edc565b5b600061103c86828701610f2a565b935050602061104d86828701610f2a565b925050604061105e86828701610f60565b9150509250925092565b600060ff82169050919050565b61107e81611068565b82525050565b60006020820190506110996000830184611075565b92915050565b6000602082840312156110b5576110b4610edc565b5b60006110c384828501610f2a565b91505092915050565b6110d581610f01565b82525050565b60006020820190506110f060008301846110cc565b92915050565b6000806040838503121561110d5761110c610edc565b5b600061111b85828601610f2a565b925050602061112c85828601610f2a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061117d57607f821691505b6020821081036111905761118f611136565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006111f2602883610e35565b91506111fd82611196565b604082019050919050565b60006020820190508181036000830152611221816111e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061126282610f3f565b915061126d83610f3f565b925082820390508181111561128557611284611228565b5b92915050565b7f45524332303a204f6e6c79206f776e65722063616e206d696e74000000000000600082015250565b60006112c1601a83610e35565b91506112cc8261128b565b602082019050919050565b600060208201905081810360008301526112f0816112b4565b9050919050565b600061130282610f3f565b915061130d83610f3f565b925082820190508082111561132557611324611228565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611387602583610e35565b91506113928261132b565b604082019050919050565b600060208201905081810360008301526113b68161137a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611419602483610e35565b9150611424826113bd565b604082019050919050565b600060208201905081810360008301526114488161140c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114ab602283610e35565b91506114b68261144f565b604082019050919050565b600060208201905081810360008301526114da8161149e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061153d602583610e35565b9150611548826114e1565b604082019050919050565b6000602082019050818103600083015261156c81611530565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115cf602383610e35565b91506115da82611573565b604082019050919050565b600060208201905081810360008301526115fe816115c2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611661602683610e35565b915061166c82611605565b604082019050919050565b6000602082019050818103600083015261169081611654565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006116cd601f83610e35565b91506116d882611697565b602082019050919050565b600060208201905081810360008301526116fc816116c0565b905091905056fea26469706673582212202c0ed9b271dc428ef884a22a86aedb2f02c2f89246afbea0076ab477272d171964736f6c63430008120033