60806040523480156200001157600080fd5b506040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f555344540000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004bc565b508060049081620000a19190620004bc565b505050620000c5336e13426172c74d822b878fe800000000620000cb60201b60201c565b620006be565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200013d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001349062000604565b60405180910390fd5b62000151600083836200023860201b60201c565b806002600082825462000165919062000655565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002189190620006a1565b60405180910390a362000234600083836200023d60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002c457607f821691505b602082108103620002da57620002d96200027c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000305565b62000350868362000305565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200039d62000397620003918462000368565b62000372565b62000368565b9050919050565b6000819050919050565b620003b9836200037c565b620003d1620003c882620003a4565b84845462000312565b825550505050565b600090565b620003e8620003d9565b620003f5818484620003ae565b505050565b5b818110156200041d5762000411600082620003de565b600181019050620003fb565b5050565b601f8211156200046c576200043681620002e0565b6200044184620002f5565b8101602085101562000451578190505b620004696200046085620002f5565b830182620003fa565b50505b505050565b600082821c905092915050565b6000620004916000198460080262000471565b1980831691505092915050565b6000620004ac83836200047e565b9150826002028217905092915050565b620004c78262000242565b67ffffffffffffffff811115620004e357620004e26200024d565b5b620004ef8254620002ab565b620004fc82828562000421565b600060209050601f8311600181146200053457600084156200051f578287015190505b6200052b85826200049e565b8655506200059b565b601f1984166200054486620002e0565b60005b828110156200056e5784890151825560018201915060208501945060208101905062000547565b868310156200058e57848901516200058a601f8916826200047e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005ec601f83620005a3565b9150620005f982620005b4565b602082019050919050565b600060208201905081810360008301526200061f81620005dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006628262000368565b91506200066f8362000368565b92508282019050808211156200068a576200068962000626565b5b92915050565b6200069b8162000368565b82525050565b6000602082019050620006b8600083018462000690565b92915050565b61160980620006ce6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063dd62ed3e14610288578063f11aafe1146102b8576100cf565b806340c10f19146101be57806370a08231146101da57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190610db5565b60405180910390f35b61010c60048036038101906101079190610e70565b610366565b6040516101199190610ecb565b60405180910390f35b61012a610389565b6040516101379190610ef5565b60405180910390f35b61015a60048036038101906101559190610f10565b610393565b6040516101679190610ecb565b60405180910390f35b6101786103f9565b6040516101859190610f7f565b60405180910390f35b6101a860048036038101906101a39190610e70565b610402565b6040516101b59190610ecb565b60405180910390f35b6101d860048036038101906101d39190610e70565b610439565b005b6101f460048036038101906101ef9190610f9a565b610447565b6040516102019190610ef5565b60405180910390f35b61021261048f565b60405161021f9190610db5565b60405180910390f35b610242600480360381019061023d9190610e70565b610521565b60405161024f9190610ecb565b60405180910390f35b610272600480360381019061026d9190610e70565b610598565b60405161027f9190610ecb565b60405180910390f35b6102a2600480360381019061029d9190610fc7565b6105fc565b6040516102af9190610ef5565b60405180910390f35b6102d260048036038101906102cd9190611033565b610683565b005b6060600380546102e39061108f565b80601f016020809104026020016040519081016040528092919081815260200182805461030f9061108f565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b6000806103716106a0565b905061037e8185856106a8565b600191505092915050565b6000600254905090565b6000600560009054906101000a900460ff16156103e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dc9061110c565b60405180910390fd5b6103f0848484610871565b90509392505050565b60006006905090565b60008061040d6106a0565b905061042e81858561041f85896105fc565b610429919061115b565b6106a8565b600191505092915050565b61044382826108a0565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461049e9061108f565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca9061108f565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60008061052c6106a0565b9050600061053a82866105fc565b90508381101561057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611201565b60405180910390fd5b61058c82868684036106a8565b60019250505092915050565b6000600560009054906101000a900460ff16156105ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e19061110c565b60405180910390fd5b6105f483836109f6565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b80600560006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90611293565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d90611325565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108649190610ef5565b60405180910390a3505050565b60008061087c6106a0565b9050610889858285610a19565b610894858585610aa5565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690611391565b60405180910390fd5b61091b60008383610d1b565b806002600082825461092d919061115b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109de9190610ef5565b60405180910390a36109f260008383610d20565b5050565b600080610a016106a0565b9050610a0e818585610aa5565b600191505092915050565b6000610a2584846105fc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a9f5781811015610a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a88906113fd565b60405180910390fd5b610a9e84848484036106a8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b9061148f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a90611521565b60405180910390fd5b610b8e838383610d1b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906115b3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d029190610ef5565b60405180910390a3610d15848484610d20565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d5f578082015181840152602081019050610d44565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d8782610d25565b610d918185610d30565b9350610da1818560208601610d41565b610daa81610d6b565b840191505092915050565b60006020820190508181036000830152610dcf8184610d7c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e0782610ddc565b9050919050565b610e1781610dfc565b8114610e2257600080fd5b50565b600081359050610e3481610e0e565b92915050565b6000819050919050565b610e4d81610e3a565b8114610e5857600080fd5b50565b600081359050610e6a81610e44565b92915050565b60008060408385031215610e8757610e86610dd7565b5b6000610e9585828601610e25565b9250506020610ea685828601610e5b565b9150509250929050565b60008115159050919050565b610ec581610eb0565b82525050565b6000602082019050610ee06000830184610ebc565b92915050565b610eef81610e3a565b82525050565b6000602082019050610f0a6000830184610ee6565b92915050565b600080600060608486031215610f2957610f28610dd7565b5b6000610f3786828701610e25565b9350506020610f4886828701610e25565b9250506040610f5986828701610e5b565b9150509250925092565b600060ff82169050919050565b610f7981610f63565b82525050565b6000602082019050610f946000830184610f70565b92915050565b600060208284031215610fb057610faf610dd7565b5b6000610fbe84828501610e25565b91505092915050565b60008060408385031215610fde57610fdd610dd7565b5b6000610fec85828601610e25565b9250506020610ffd85828601610e25565b9150509250929050565b61101081610eb0565b811461101b57600080fd5b50565b60008135905061102d81611007565b92915050565b60006020828403121561104957611048610dd7565b5b60006110578482850161101e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110a757607f821691505b6020821081036110ba576110b9611060565b5b50919050565b7f4661696c6564207472616e736665722064756520746f20706175736500000000600082015250565b60006110f6601c83610d30565b9150611101826110c0565b602082019050919050565b60006020820190508181036000830152611125816110e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061116682610e3a565b915061117183610e3a565b92508282019050808211156111895761118861112c565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006111eb602583610d30565b91506111f68261118f565b604082019050919050565b6000602082019050818103600083015261121a816111de565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061127d602483610d30565b915061128882611221565b604082019050919050565b600060208201905081810360008301526112ac81611270565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061130f602283610d30565b915061131a826112b3565b604082019050919050565b6000602082019050818103600083015261133e81611302565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061137b601f83610d30565b915061138682611345565b602082019050919050565b600060208201905081810360008301526113aa8161136e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006113e7601d83610d30565b91506113f2826113b1565b602082019050919050565b60006020820190508181036000830152611416816113da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611479602583610d30565b91506114848261141d565b604082019050919050565b600060208201905081810360008301526114a88161146c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061150b602383610d30565b9150611516826114af565b604082019050919050565b6000602082019050818103600083015261153a816114fe565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061159d602683610d30565b91506115a882611541565b604082019050919050565b600060208201905081810360008301526115cc81611590565b905091905056fea2646970667358221220db8cb042944d06668624ec2f6deef1f8ea407fa1540d1078e9a43a2c7a1bec6264736f6c63430008120033