60806040526000600560006101000a81548160ff02191690831515021790555073ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000d657600080fd5b506040518060400160405280600481526020017f42696261000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42494241000000000000000000000000000000000000000000000000000000008152506200016362000157620001df60201b60201c565b620001e760201b60201c565b81600690805190602001906200017b9291906200042d565b508060079080519060200190620001949291906200042d565b505050620001d933620001ac620002ab60201b60201c565b600a620001ba919062000677565b6509184e72a000620001cd9190620006c8565b620002b460201b60201c565b6200089c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000327576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031e906200078a565b60405180910390fd5b6200033b600083836200042360201b60201c565b80600460008282546200034f9190620007ac565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200040391906200081a565b60405180910390a36200041f600083836200042860201b60201c565b5050565b505050565b505050565b8280546200043b9062000866565b90600052602060002090601f0160209004810192826200045f5760008555620004ab565b82601f106200047a57805160ff1916838001178555620004ab565b82800160010185558215620004ab579182015b82811115620004aa5782518255916020019190600101906200048d565b5b509050620004ba9190620004be565b5090565b5b80821115620004d9576000816000905550600101620004bf565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200056b57808604811115620005435762000542620004dd565b5b6001851615620005535780820291505b808102905062000563856200050c565b945062000523565b94509492505050565b60008262000586576001905062000659565b8162000596576000905062000659565b8160018114620005af5760028114620005ba57620005f0565b600191505062000659565b60ff841115620005cf57620005ce620004dd565b5b8360020a915084821115620005e957620005e8620004dd565b5b5062000659565b5060208310610133831016604e8410600b84101617156200062a5782820a905083811115620006245762000623620004dd565b5b62000659565b62000639848484600162000519565b92509050818404811115620006535762000652620004dd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006848262000660565b915062000691836200066a565b9250620006c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000574565b905092915050565b6000620006d58262000660565b9150620006e28362000660565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200071e576200071d620004dd565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000772601f8362000729565b91506200077f826200073a565b602082019050919050565b60006020820190508181036000830152620007a58162000763565b9050919050565b6000620007b98262000660565b9150620007c68362000660565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007fe57620007fd620004dd565b5b828201905092915050565b620008148162000660565b82525050565b600060208201905062000831600083018462000809565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087f57607f821691505b6020821081141562000896576200089562000837565b5b50919050565b61212580620008ac6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063a1c617f51161007c578063a1c617f51461033c578063a457c2d714610358578063a9059cbb14610388578063beabacc8146103b8578063dd62ed3e146103d4578063f2fde38b1461040457610137565b8063715018a6146102aa5780637aac697b146102b45780638da5cb5b146102d057806390135fe4146102ee57806395d89b411461031e57610137565b8063313ce567116100ff578063313ce567146101f45780633950935114610212578063477e19441461024257806366d382031461025e57806370a082311461027a57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a5780631943943a146101a857806323b872dd146101c4575b600080fd5b610144610420565b60405161015191906115ff565b60405180910390f35b610174600480360381019061016f91906116bf565b6104b2565b604051610181919061171a565b60405180910390f35b6101926104d5565b60405161019f9190611744565b60405180910390f35b6101c260048036038101906101bd91906117c4565b6104df565b005b6101de60048036038101906101d99190611811565b610647565b6040516101eb919061171a565b60405180910390f35b6101fc610676565b6040516102099190611880565b60405180910390f35b61022c600480360381019061022791906116bf565b61067f565b604051610239919061171a565b60405180910390f35b61025c600480360381019061025791906117c4565b6106b6565b005b6102786004803603810190610273919061189b565b610763565b005b610294600480360381019061028f919061189b565b6107af565b6040516102a19190611744565b60405180910390f35b6102b26107f8565b005b6102ce60048036038101906102c991906118c8565b61080c565b005b6102d8610998565b6040516102e5919061194b565b60405180910390f35b6103086004803603810190610303919061189b565b6109c1565b604051610315919061171a565b60405180910390f35b610326610a17565b60405161033391906115ff565b60405180910390f35b610356600480360381019061035191906118c8565b610aa9565b005b610372600480360381019061036d91906116bf565b610c34565b60405161037f919061171a565b60405180910390f35b6103a2600480360381019061039d91906116bf565b610cab565b6040516103af919061171a565b60405180910390f35b6103d260048036038101906103cd9190611811565b610cce565b005b6103ee60048036038101906103e99190611966565b610d38565b6040516103fb9190611744565b60405180910390f35b61041e6004803603810190610419919061189b565b610dbf565b005b60606006805461042f906119d5565b80601f016020809104026020016040519081016040528092919081815260200182805461045b906119d5565b80156104a85780601f1061047d576101008083540402835291602001916104a8565b820191906000526020600020905b81548152906001019060200180831161048b57829003601f168201915b5050505050905090565b6000806104bd610e43565b90506104ca818585610e4b565b600191505092915050565b6000600454905090565b6104e7611016565b60005b828290508110156106425760016002600085858581811061050e5761050d611a07565b5b9050602002016020810190610523919061189b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1683838381811061059e5761059d611a07565b5b90506020020160208101906105b3919061189b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561061a868686818110610600576105ff611a07565b5b9050602002016020810190610615919061189b565b6107af565b6040516106279190611744565b60405180910390a3808061063a90611a65565b9150506104ea565b505050565b600080610652610e43565b905061065f858285611094565b61066a858585611120565b60019150509392505050565b60006012905090565b60008061068a610e43565b90506106ab81858561069c8589610d38565b6106a69190611aae565b610e4b565b600191505092915050565b6106be611016565b60005b8282905081101561075e576000600260008585858181106106e5576106e4611a07565b5b90506020020160208101906106fa919061189b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061075690611a65565b9150506106c1565b505050565b61076b611016565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610800611016565b61080a6000611498565b565b60005b848490508110156109915784848281811061082d5761082c611a07565b5b9050602002016020810190610842919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8226000868660006040516108c89493929190611b49565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061091c5761091b611a07565b5b9050602002016020810190610931919061189b565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109769190611744565b60405180910390a3808061098990611a65565b91505061080f565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054610a26906119d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a52906119d5565b8015610a9f5780601f10610a7457610100808354040283529160200191610a9f565b820191906000526020600020905b815481529060010190602001808311610a8257829003601f168201915b5050505050905090565b60005b84849050811015610c2d57848482818110610aca57610ac9611a07565b5b9050602002016020810190610adf919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610b649493929190611b8e565b60405180910390a3848482818110610b7f57610b7e611a07565b5b9050602002016020810190610b94919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c129190611744565b60405180910390a38080610c2590611a65565b915050610aac565b5050505050565b600080610c3f610e43565b90506000610c4d8286610d38565b905083811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990611c45565b60405180910390fd5b610c9f8286868403610e4b565b60019250505092915050565b600080610cb6610e43565b9050610cc3818585611120565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d2b9190611744565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dc7611016565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90611cd7565b60405180910390fd5b610e4081611498565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290611d69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290611dfb565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110099190611744565b60405180910390a3505050565b61101e610e43565b73ffffffffffffffffffffffffffffffffffffffff1661103c610998565b73ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990611e67565b60405180910390fd5b565b60006110a08484610d38565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461111a578181101561110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390611ed3565b60405180910390fd5b6111198484848403610e4b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790611f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790611ff7565b60405180910390fd5b61120b83838361155c565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990612089565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113c65750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156114225760011515600560009054906101000a900460ff16151514611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611418906120cf565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161147f9190611744565b60405180910390a3611492848484611561565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115a0578082015181840152602081019050611585565b838111156115af576000848401525b50505050565b6000601f19601f8301169050919050565b60006115d182611566565b6115db8185611571565b93506115eb818560208601611582565b6115f4816115b5565b840191505092915050565b6000602082019050818103600083015261161981846115c6565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116568261162b565b9050919050565b6116668161164b565b811461167157600080fd5b50565b6000813590506116838161165d565b92915050565b6000819050919050565b61169c81611689565b81146116a757600080fd5b50565b6000813590506116b981611693565b92915050565b600080604083850312156116d6576116d5611621565b5b60006116e485828601611674565b92505060206116f5858286016116aa565b9150509250929050565b60008115159050919050565b611714816116ff565b82525050565b600060208201905061172f600083018461170b565b92915050565b61173e81611689565b82525050565b60006020820190506117596000830184611735565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117845761178361175f565b5b8235905067ffffffffffffffff8111156117a1576117a0611764565b5b6020830191508360208202830111156117bd576117bc611769565b5b9250929050565b600080602083850312156117db576117da611621565b5b600083013567ffffffffffffffff8111156117f9576117f8611626565b5b6118058582860161176e565b92509250509250929050565b60008060006060848603121561182a57611829611621565b5b600061183886828701611674565b935050602061184986828701611674565b925050604061185a868287016116aa565b9150509250925092565b600060ff82169050919050565b61187a81611864565b82525050565b60006020820190506118956000830184611871565b92915050565b6000602082840312156118b1576118b0611621565b5b60006118bf84828501611674565b91505092915050565b600080600080606085870312156118e2576118e1611621565b5b600085013567ffffffffffffffff811115611900576118ff611626565b5b61190c8782880161176e565b9450945050602061191f878288016116aa565b9250506040611930878288016116aa565b91505092959194509250565b6119458161164b565b82525050565b6000602082019050611960600083018461193c565b92915050565b6000806040838503121561197d5761197c611621565b5b600061198b85828601611674565b925050602061199c85828601611674565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ed57607f821691505b60208210811415611a0157611a006119a6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a7082611689565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611aa357611aa2611a36565b5b600182019050919050565b6000611ab982611689565b9150611ac483611689565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611af957611af8611a36565b5b828201905092915050565b6000819050919050565b6000819050919050565b6000611b33611b2e611b2984611b04565b611b0e565b611689565b9050919050565b611b4381611b18565b82525050565b6000608082019050611b5e6000830187611b3a565b611b6b6020830186611735565b611b786040830185611735565b611b856060830184611b3a565b95945050505050565b6000608082019050611ba36000830187611735565b611bb06020830186611b3a565b611bbd6040830185611b3a565b611bca6060830184611735565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c2f602583611571565b9150611c3a82611bd3565b604082019050919050565b60006020820190508181036000830152611c5e81611c22565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cc1602683611571565b9150611ccc82611c65565b604082019050919050565b60006020820190508181036000830152611cf081611cb4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d53602483611571565b9150611d5e82611cf7565b604082019050919050565b60006020820190508181036000830152611d8281611d46565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611de5602283611571565b9150611df082611d89565b604082019050919050565b60006020820190508181036000830152611e1481611dd8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e51602083611571565b9150611e5c82611e1b565b602082019050919050565b60006020820190508181036000830152611e8081611e44565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ebd601d83611571565b9150611ec882611e87565b602082019050919050565b60006020820190508181036000830152611eec81611eb0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f4f602583611571565b9150611f5a82611ef3565b604082019050919050565b60006020820190508181036000830152611f7e81611f42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fe1602383611571565b9150611fec82611f85565b604082019050919050565b6000602082019050818103600083015261201081611fd4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612073602683611571565b915061207e82612017565b604082019050919050565b600060208201905081810360008301526120a281612066565b9050919050565b50565b60006120b9600083611571565b91506120c4826120a9565b600082019050919050565b600060208201905081810360008301526120e8816120ac565b905091905056fea2646970667358221220c53c642e1605f0baa08f5cca7dcad52a9c8f4127c56b3a827797eea7a9d28b4564736f6c634300080c0033