608060405234801561000f575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600881526020017f50494b41424153450000000000000000000000000000000000000000000000008152506001908161009391906103e0565b506040518060400160405280600881526020017f50494b4142415345000000000000000000000000000000000000000000000000815250600290816100d891906103e0565b50601260035f6101000a81548160ff021916908360ff1602179055506c0c9f2c9cd04674edea4000000060048190555060045460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104af565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061022157607f821691505b602082108103610234576102336101dd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261025b565b6102a0868361025b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6102e46102df6102da846102b8565b6102c1565b6102b8565b9050919050565b5f819050919050565b6102fd836102ca565b610311610309826102eb565b848454610267565b825550505050565b5f90565b610325610319565b6103308184846102f4565b505050565b5b81811015610353576103485f8261031d565b600181019050610336565b5050565b601f821115610398576103698161023a565b6103728461024c565b81016020851015610381578190505b61039561038d8561024c565b830182610335565b50505b505050565b5f82821c905092915050565b5f6103b85f198460080261039d565b1980831691505092915050565b5f6103d083836103a9565b9150826002028217905092915050565b6103e9826101a6565b67ffffffffffffffff811115610402576104016101b0565b5b61040c825461020a565b610417828285610357565b5f60209050601f831160018114610448575f8415610436578287015190505b61044085826103c5565b8655506104a7565b601f1984166104568661023a565b5f5b8281101561047d57848901518255600182019150602085019450602081019050610458565b8683101561049a5784890151610496601f8916826103a9565b8355505b6001600288020188555050505b505050505050565b611276806104bc5f395ff3fe608060405234801561000f575f80fd5b50600436106100f3575f3560e01c806370a0823111610095578063bfb2a54611610064578063bfb2a546146102ad578063dd62ed3e146102c9578063e9543fa2146102f9578063ff9913e814610329576100f3565b806370a08231146102115780638da5cb5b1461024157806395d89b411461025f578063a9059cbb1461027d576100f3565b806323b872dd116100d157806323b872dd1461016357806327e235e314610193578063313ce567146101c35780635c658165146101e1576100f3565b806306fdde03146100f7578063095ea7b31461011557806318160ddd14610145575b5f80fd5b6100ff610359565b60405161010c9190610e34565b60405180910390f35b61012f600480360381019061012a9190610ee5565b6103e5565b60405161013c9190610f3d565b60405180910390f35b61014d6104d2565b60405161015a9190610f65565b60405180910390f35b61017d60048036038101906101789190610f7e565b6104d8565b60405161018a9190610f3d565b60405180910390f35b6101ad60048036038101906101a89190610fce565b6108cf565b6040516101ba9190610f65565b60405180910390f35b6101cb6108e4565b6040516101d89190611014565b60405180910390f35b6101fb60048036038101906101f6919061102d565b6108f6565b6040516102089190610f65565b60405180910390f35b61022b60048036038101906102269190610fce565b610916565b6040516102389190610f65565b60405180910390f35b61024961095c565b604051610256919061107a565b60405180910390f35b61026761097f565b6040516102749190610e34565b60405180910390f35b61029760048036038101906102929190610ee5565b610a0b565b6040516102a49190610f3d565b60405180910390f35b6102c760048036038101906102c291906110bd565b610c1d565b005b6102e360048036038101906102de919061102d565b610ccb565b6040516102f09190610f65565b60405180910390f35b610313600480360381019061030e9190610fce565b610d4d565b604051610320919061110a565b60405180910390f35b610343600480360381019061033e9190610fce565b610d56565b6040516103509190610f3d565b60405180910390f35b6001805461036690611150565b80601f016020809104026020016040519081016040528092919081815260200182805461039290611150565b80156103dd5780601f106103b4576101008083540402835291602001916103dd565b820191905f5260205f20905b8154815290600101906020018083116103c057829003601f168201915b505050505081565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c09190610f65565b60405180910390a36001905092915050565b60045481565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610510575f80fd5b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610559575f80fd5b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156105dd575f80fd5b6001151560065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514610636575f80fd5b6106868260055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d7390919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506107178260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d9990919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506107e38260075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d7390919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108bc9190610f65565b60405180910390a3600190509392505050565b6005602052805f5260405f205f915090505481565b60035f9054906101000a900460ff1681565b6007602052815f5260405f20602052805f5260405f205f91509150505481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461098c90611150565b80601f01602080910402602001604051908101604052809291908181526020018280546109b890611150565b8015610a035780601f106109da57610100808354040283529160200191610a03565b820191905f5260205f20905b8154815290600101906020018083116109e657829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a43575f80fd5b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610a8c575f80fd5b610adc8260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d7390919063ffffffff16565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610b6d8260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d9990919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c0b9190610f65565b60405180910390a36001905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c73575f80fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f819050919050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f82821115610d8557610d84611180565b5b8183610d9191906111da565b905092915050565b5f808284610da7919061120d565b905083811015610dba57610db9611180565b5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610e0682610dc4565b610e108185610dce565b9350610e20818560208601610dde565b610e2981610dec565b840191505092915050565b5f6020820190508181035f830152610e4c8184610dfc565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e8182610e58565b9050919050565b610e9181610e77565b8114610e9b575f80fd5b50565b5f81359050610eac81610e88565b92915050565b5f819050919050565b610ec481610eb2565b8114610ece575f80fd5b50565b5f81359050610edf81610ebb565b92915050565b5f8060408385031215610efb57610efa610e54565b5b5f610f0885828601610e9e565b9250506020610f1985828601610ed1565b9150509250929050565b5f8115159050919050565b610f3781610f23565b82525050565b5f602082019050610f505f830184610f2e565b92915050565b610f5f81610eb2565b82525050565b5f602082019050610f785f830184610f56565b92915050565b5f805f60608486031215610f9557610f94610e54565b5b5f610fa286828701610e9e565b9350506020610fb386828701610e9e565b9250506040610fc486828701610ed1565b9150509250925092565b5f60208284031215610fe357610fe2610e54565b5b5f610ff084828501610e9e565b91505092915050565b5f60ff82169050919050565b61100e81610ff9565b82525050565b5f6020820190506110275f830184611005565b92915050565b5f806040838503121561104357611042610e54565b5b5f61105085828601610e9e565b925050602061106185828601610e9e565b9150509250929050565b61107481610e77565b82525050565b5f60208201905061108d5f83018461106b565b92915050565b61109c81610f23565b81146110a6575f80fd5b50565b5f813590506110b781611093565b92915050565b5f80604083850312156110d3576110d2610e54565b5b5f6110e085828601610e9e565b92505060206110f1858286016110a9565b9150509250929050565b61110481610e58565b82525050565b5f60208201905061111d5f8301846110fb565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061116757607f821691505b60208210810361117a57611179611123565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111e482610eb2565b91506111ef83610eb2565b9250828203905081811115611207576112066111ad565b5b92915050565b5f61121782610eb2565b915061122283610eb2565b925082820190508082111561123a576112396111ad565b5b9291505056fea2646970667358221220fbffc6ee0aed567bf824833cd39cddeebf709974c40b8cca0f38bd2bed90883464736f6c63430008190033