0x60806040526000600a556000600b556000600c556008600d60006101000a81548160ff021916908360ff160217905550600d60009054906101000a900460ff1660ff16600a0a6305f5e10002600e55600d60009054906101000a900460ff1660ff16600a0a6301c9c38002600f553480156200007a57600080fd5b50600e546040518060400160405280600e81526020017f547275737470617920546f6b656e0000000000000000000000000000000000008152506040518060400160405280600381526020017f5450480000000000000000000000000000000000000000000000000000000000815250600d60009054906101000a900460ff16826003908051906020019062000112929190620008cf565b5081600490805190602001906200012b929190620008cf565b5080600560006101000a81548160ff021916908360ff1602179055505050506200016a6200015e620002fe60201b60201c565b6200030660201b60201c565b60008111620001e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4b524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b806007819055505062000209620001fd620002fe60201b60201c565b6200036760201b60201c565b6000600960006101000a81548160ff021916908315150217905550600062000236620002fe60201b60201c565b905080600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002f8620002e9620003c860201b60201c565b600f54620003f260201b60201c565b6200097e565b600033905090565b62000321816006620004ae60201b6200327b1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b62000382816008620004ae60201b6200327b1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007546200041e826200040a6200059260201b60201c565b6200059c60201b62002f7b1790919060201c565b111562000493576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4b524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b620004aa82826200062560201b620030031760201c565b5050565b620004c08282620007ef60201b60201c565b1562000534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000808284019050838110156200061b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4b524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620006e5816002546200059c60201b62002f7b1790919060201c565b60028190555062000743816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200059c60201b62002f7b1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000878576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620042216022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200091257805160ff191683800117855562000943565b8280016001018555821562000943579182015b828111156200094257825182559160200191906001019062000925565b5b50905062000952919062000956565b5090565b6200097b91905b80821115620009775760008160009055506001016200095d565b5090565b90565b613893806200098e6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a082311161013057806398650275116100b8578063dd644f721161007c578063dd644f7214610ab0578063e47d606014610ace578063e4997dc514610b2a578063f2fde38b14610b86578063f3bdc22814610bca57610227565b80639865027514610906578063a457c2d714610910578063a9059cbb14610976578063aa271e1a146109dc578063dd62ed3e14610a3857610227565b80638456cb59116100ff5780638456cb59146107c95780638da5cb5b146107d35780638f32d59b1461081d57806395d89b411461083f578063983b2d56146108c257610227565b806370a08231146106d5578063715018a61461072d57806379cc67901461073757806382dc1ec41461078557610227565b806339509351116101b357806346fbf68e1161018257806346fbf68e1461059757806359bf1abe146105f35780635a0ce6761461064f5780635c975abb146106a95780636ef8d66d146106cb57610227565b806339509351146104935780633f4ba83a146104f957806340c10f191461050357806342966c681461056957610227565b80631a7626e7116101fa5780631a7626e71461038f57806323b872dd146103ad578063313ce567146104335780633539071414610457578063355274ea1461047557610227565b806306fdde031461022c578063095ea7b3146102af5780630ecb93c01461031557806318160ddd14610371575b600080fd5b610234610c26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610274578082015181840152602081019050610259565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc8565b604051808215151515815260200191505060405180910390f35b6103576004803603602081101561032b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5f565b604051808215151515815260200191505060405180910390f35b610379610e9f565b6040518082815260200191505060405180910390f35b610397610ea9565b6040518082815260200191505060405180910390f35b610419600480360360608110156103c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eaf565b604051808215151515815260200191505060405180910390f35b61043b6110ca565b604051808260ff1660ff16815260200191505060405180910390f35b61045f6110e1565b6040518082815260200191505060405180910390f35b61047d6110e7565b6040518082815260200191505060405180910390f35b6104df600480360360408110156104a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f1565b604051808215151515815260200191505060405180910390f35b610501611188565b005b61054f6004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f6565b604051808215151515815260200191505060405180910390f35b6105956004803603602081101561057f57600080fd5b8101908080359060200190929190505050611371565b005b6105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611385565b604051808215151515815260200191505060405180910390f35b6106356004803603602081101561060957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a2565b604051808215151515815260200191505060405180910390f35b61068f6004803603606081101561066557600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506113f8565b604051808215151515815260200191505060405180910390f35b6106b16114e1565b604051808215151515815260200191505060405180910390f35b6106d36114f8565b005b610717600480360360208110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061150a565b6040518082815260200191505060405180910390f35b610735611552565b005b6107836004803603604081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061168d565b005b6107c76004803603602081101561079b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169b565b005b6107d161170c565b005b6107db61187b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108256118a5565b604051808215151515815260200191505060405180910390f35b610847611904565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088757808201518184015260208101905061086c565b50505050905090810190601f1680156108b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610904600480360360208110156108d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a6565b005b61090e611a17565b005b61095c6004803603604081101561092657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a29565b604051808215151515815260200191505060405180910390f35b6109c26004803603604081101561098c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ac0565b604051808215151515815260200191505060405180910390f35b610a1e600480360360208110156109f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c77565b604051808215151515815260200191505060405180910390f35b610a9a60048036036040811015610a4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c94565b6040518082815260200191505060405180910390f35b610ab8611d1b565b6040518082815260200191505060405180910390f35b610b1060048036036020811015610ae457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d21565b604051808215151515815260200191505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d41565b604051808215151515815260200191505060405180910390f35b610bc860048036036020811015610b9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e81565b005b610c0c60048036036020811015610be057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f07565b604051808215151515815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbe5780601f10610c9357610100808354040283529160200191610cbe565b820191906000526020600020905b815481529060010190602001808311610ca157829003601f168201915b5050505050905090565b6000600960009054906101000a900460ff1615610d4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610d578383612065565b905092915050565b6000610d696118a5565b610ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160019050919050565b6000600254905090565b600c5481565b6000600960009054906101000a900460ff1615610f34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f8b57600080fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fe257600080fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561103957600080fd5b6000611064612710611056600a548661208390919063ffffffff16565b61210990919063ffffffff16565b9050600b5481111561107657600b5490505b600061108b828561215390919063ffffffff16565b905060008211156110b4576110a76110a161187b565b8361219d565b506110b3868683612234565b5b6110bf86868361242b565b925050509392505050565b6000600560009054906101000a900460ff16905090565b600b5481565b6000600754905090565b6000600960009054906101000a900460ff1615611176576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61118083836124c4565b905092915050565b611198611193612577565b611385565b6111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061360d6030913960400191505060405180910390fd5b600960009054906101000a900460ff1661126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6112b3612577565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611308611303612577565b611c77565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061375b6030913960400191505060405180910390fd5b611367838361257f565b6001905092915050565b61138261137c612577565b8261261e565b50565b600061139b8260086127d690919063ffffffff16565b9050919050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006114026118a5565b611474576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b83600a8190555081600c8190555082600b819055507fd16858b87f79d06c5d7f4cdf7f0943a3b343a9eb149c10ec26e7bcaae7f19bc5600a54600b54600c5460405180848152602001838152602001828152602001935050505060405180910390a1600190509392505050565b6000600960009054906101000a900460ff16905090565b611508611503612577565b6128b4565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61155a6118a5565b6115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611697828261290e565b5050565b6116ab6116a6612577565b611385565b611700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061360d6030913960400191505060405180910390fd5b611709816129dd565b50565b61171c611717612577565b611385565b611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061360d6030913960400191505060405180910390fd5b600960009054906101000a900460ff16156117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611838612577565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e8612577565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199c5780601f106119715761010080835404028352916020019161199c565b820191906000526020600020905b81548152906001019060200180831161197f57829003601f168201915b5050505050905090565b6119b66119b1612577565b611c77565b611a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061375b6030913960400191505060405180910390fd5b611a1481612a37565b50565b611a27611a22612577565b612a91565b565b6000600960009054906101000a900460ff1615611aae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611ab88383612aeb565b905092915050565b6000600960009054906101000a900460ff1615611b45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b9c57600080fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bf357600080fd5b6000611c1e612710611c10600a548661208390919063ffffffff16565b61210990919063ffffffff16565b9050600b54811115611c3057600b5490505b6000611c45828561215390919063ffffffff16565b90506000821115611c6357611c61611c5b61187b565b8361219d565b505b611c6d858261219d565b9250505092915050565b6000611c8d8260066127d690919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60106020528060005260406000206000915054906101000a900460ff1681565b6000611d4b6118a5565b611dbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160019050919050565b611e896118a5565b611efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611f0481612bb8565b50565b6000611f116118a5565b611f83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fd957600080fd5b6000611fe48361150a565b9050611ff0838261261e565b7f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c68382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001915050919050565b6000612079612072612577565b8484612234565b6001905092915050565b6000808314156120965760009050612103565b60008284029050828482816120a757fe5b04146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137d46021913960400191505060405180910390fd5b809150505b92915050565b600061214b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cfe565b905092915050565b600061219583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dc4565b905092915050565b6000600960009054906101000a900460ff1615612222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61222c8383612e84565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137f56024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806136636022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600960009054906101000a900460ff16156124b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6124bb848484612ea2565b90509392505050565b600061256d6124d1612577565b8461256885600160006124e2612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7b90919063ffffffff16565b612234565b6001905092915050565b600033905090565b60075461259c8261258e610e9f565b612f7b90919063ffffffff16565b1115612610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4b524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b61261a8282613003565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137146021913960400191505060405180910390fd5b61270f816040518060600160405280602281526020016136cf602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127668160025461215390919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561285d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138196022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6128c88160086131be90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b612918828261261e565b6129d982612924612577565b6129d48460405180606001604052806024815260200161383b60249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061298a612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b612234565b5050565b6129f181600861327b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b612a4b81600661327b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b612aa58160066131be90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000612bae612af8612577565b84612ba9856040518060600160405280602581526020016136aa6025913960016000612b22612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b612234565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061363d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290612daa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d6f578082015181840152602081019050612d54565b50505050905090810190601f168015612d9c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612db657fe5b049050809150509392505050565b6000838311158290612e71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e36578082015181840152602081019050612e1b565b50505050905090810190601f168015612e635780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000612e98612e91612577565b8484613356565b6001905092915050565b6000612eaf848484613356565b612f7084612ebb612577565b612f6b856040518060600160405280602881526020016137ac60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000612f21612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b612234565b600190509392505050565b600080828401905083811015612ff9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4b524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6130bb81600254612f7b90919063ffffffff16565b600281905550613112816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6131c882826127d6565b61321d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061378b6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61328582826127d6565b156132f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806136856025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136f16023913960400191505060405180910390fd5b6134cd81604051806060016040528060268152602001613735602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613560816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734b524332303a20617070726f766520746f20746865207a65726f20616464726573734b524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734b524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4b524332303a206275726e20616d6f756e7420657863656564732062616c616e63654b524332303a207472616e7366657220746f20746865207a65726f20616464726573734b524332303a206275726e2066726f6d20746865207a65726f20616464726573734b524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654b524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774b524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734b524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365a265627a7a7231582033e9403c48a8cebb54769dd4f59c0fd89d33cdcddd271ec415a5b9dc1322b3f464736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373
0x608060405234801561001057600080fd5b50600436106102275760003560e01c806370a082311161013057806398650275116100b8578063dd644f721161007c578063dd644f7214610ab0578063e47d606014610ace578063e4997dc514610b2a578063f2fde38b14610b86578063f3bdc22814610bca57610227565b80639865027514610906578063a457c2d714610910578063a9059cbb14610976578063aa271e1a146109dc578063dd62ed3e14610a3857610227565b80638456cb59116100ff5780638456cb59146107c95780638da5cb5b146107d35780638f32d59b1461081d57806395d89b411461083f578063983b2d56146108c257610227565b806370a08231146106d5578063715018a61461072d57806379cc67901461073757806382dc1ec41461078557610227565b806339509351116101b357806346fbf68e1161018257806346fbf68e1461059757806359bf1abe146105f35780635a0ce6761461064f5780635c975abb146106a95780636ef8d66d146106cb57610227565b806339509351146104935780633f4ba83a146104f957806340c10f191461050357806342966c681461056957610227565b80631a7626e7116101fa5780631a7626e71461038f57806323b872dd146103ad578063313ce567146104335780633539071414610457578063355274ea1461047557610227565b806306fdde031461022c578063095ea7b3146102af5780630ecb93c01461031557806318160ddd14610371575b600080fd5b610234610c26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610274578082015181840152602081019050610259565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc8565b604051808215151515815260200191505060405180910390f35b6103576004803603602081101561032b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5f565b604051808215151515815260200191505060405180910390f35b610379610e9f565b6040518082815260200191505060405180910390f35b610397610ea9565b6040518082815260200191505060405180910390f35b610419600480360360608110156103c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eaf565b604051808215151515815260200191505060405180910390f35b61043b6110ca565b604051808260ff1660ff16815260200191505060405180910390f35b61045f6110e1565b6040518082815260200191505060405180910390f35b61047d6110e7565b6040518082815260200191505060405180910390f35b6104df600480360360408110156104a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f1565b604051808215151515815260200191505060405180910390f35b610501611188565b005b61054f6004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f6565b604051808215151515815260200191505060405180910390f35b6105956004803603602081101561057f57600080fd5b8101908080359060200190929190505050611371565b005b6105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611385565b604051808215151515815260200191505060405180910390f35b6106356004803603602081101561060957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a2565b604051808215151515815260200191505060405180910390f35b61068f6004803603606081101561066557600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506113f8565b604051808215151515815260200191505060405180910390f35b6106b16114e1565b604051808215151515815260200191505060405180910390f35b6106d36114f8565b005b610717600480360360208110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061150a565b6040518082815260200191505060405180910390f35b610735611552565b005b6107836004803603604081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061168d565b005b6107c76004803603602081101561079b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169b565b005b6107d161170c565b005b6107db61187b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108256118a5565b604051808215151515815260200191505060405180910390f35b610847611904565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088757808201518184015260208101905061086c565b50505050905090810190601f1680156108b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610904600480360360208110156108d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a6565b005b61090e611a17565b005b61095c6004803603604081101561092657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a29565b604051808215151515815260200191505060405180910390f35b6109c26004803603604081101561098c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ac0565b604051808215151515815260200191505060405180910390f35b610a1e600480360360208110156109f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c77565b604051808215151515815260200191505060405180910390f35b610a9a60048036036040811015610a4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c94565b6040518082815260200191505060405180910390f35b610ab8611d1b565b6040518082815260200191505060405180910390f35b610b1060048036036020811015610ae457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d21565b604051808215151515815260200191505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d41565b604051808215151515815260200191505060405180910390f35b610bc860048036036020811015610b9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e81565b005b610c0c60048036036020811015610be057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f07565b604051808215151515815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbe5780601f10610c9357610100808354040283529160200191610cbe565b820191906000526020600020905b815481529060010190602001808311610ca157829003601f168201915b5050505050905090565b6000600960009054906101000a900460ff1615610d4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610d578383612065565b905092915050565b6000610d696118a5565b610ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160019050919050565b6000600254905090565b600c5481565b6000600960009054906101000a900460ff1615610f34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f8b57600080fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fe257600080fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561103957600080fd5b6000611064612710611056600a548661208390919063ffffffff16565b61210990919063ffffffff16565b9050600b5481111561107657600b5490505b600061108b828561215390919063ffffffff16565b905060008211156110b4576110a76110a161187b565b8361219d565b506110b3868683612234565b5b6110bf86868361242b565b925050509392505050565b6000600560009054906101000a900460ff16905090565b600b5481565b6000600754905090565b6000600960009054906101000a900460ff1615611176576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61118083836124c4565b905092915050565b611198611193612577565b611385565b6111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061360d6030913960400191505060405180910390fd5b600960009054906101000a900460ff1661126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6112b3612577565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611308611303612577565b611c77565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061375b6030913960400191505060405180910390fd5b611367838361257f565b6001905092915050565b61138261137c612577565b8261261e565b50565b600061139b8260086127d690919063ffffffff16565b9050919050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006114026118a5565b611474576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b83600a8190555081600c8190555082600b819055507fd16858b87f79d06c5d7f4cdf7f0943a3b343a9eb149c10ec26e7bcaae7f19bc5600a54600b54600c5460405180848152602001838152602001828152602001935050505060405180910390a1600190509392505050565b6000600960009054906101000a900460ff16905090565b611508611503612577565b6128b4565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61155a6118a5565b6115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611697828261290e565b5050565b6116ab6116a6612577565b611385565b611700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061360d6030913960400191505060405180910390fd5b611709816129dd565b50565b61171c611717612577565b611385565b611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061360d6030913960400191505060405180910390fd5b600960009054906101000a900460ff16156117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611838612577565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e8612577565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199c5780601f106119715761010080835404028352916020019161199c565b820191906000526020600020905b81548152906001019060200180831161197f57829003601f168201915b5050505050905090565b6119b66119b1612577565b611c77565b611a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061375b6030913960400191505060405180910390fd5b611a1481612a37565b50565b611a27611a22612577565b612a91565b565b6000600960009054906101000a900460ff1615611aae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611ab88383612aeb565b905092915050565b6000600960009054906101000a900460ff1615611b45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b9c57600080fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bf357600080fd5b6000611c1e612710611c10600a548661208390919063ffffffff16565b61210990919063ffffffff16565b9050600b54811115611c3057600b5490505b6000611c45828561215390919063ffffffff16565b90506000821115611c6357611c61611c5b61187b565b8361219d565b505b611c6d858261219d565b9250505092915050565b6000611c8d8260066127d690919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60106020528060005260406000206000915054906101000a900460ff1681565b6000611d4b6118a5565b611dbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160019050919050565b611e896118a5565b611efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611f0481612bb8565b50565b6000611f116118a5565b611f83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fd957600080fd5b6000611fe48361150a565b9050611ff0838261261e565b7f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c68382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001915050919050565b6000612079612072612577565b8484612234565b6001905092915050565b6000808314156120965760009050612103565b60008284029050828482816120a757fe5b04146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137d46021913960400191505060405180910390fd5b809150505b92915050565b600061214b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cfe565b905092915050565b600061219583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dc4565b905092915050565b6000600960009054906101000a900460ff1615612222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61222c8383612e84565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137f56024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806136636022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600960009054906101000a900460ff16156124b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6124bb848484612ea2565b90509392505050565b600061256d6124d1612577565b8461256885600160006124e2612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7b90919063ffffffff16565b612234565b6001905092915050565b600033905090565b60075461259c8261258e610e9f565b612f7b90919063ffffffff16565b1115612610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4b524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b61261a8282613003565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137146021913960400191505060405180910390fd5b61270f816040518060600160405280602281526020016136cf602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127668160025461215390919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561285d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138196022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6128c88160086131be90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b612918828261261e565b6129d982612924612577565b6129d48460405180606001604052806024815260200161383b60249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061298a612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b612234565b5050565b6129f181600861327b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b612a4b81600661327b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b612aa58160066131be90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000612bae612af8612577565b84612ba9856040518060600160405280602581526020016136aa6025913960016000612b22612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b612234565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061363d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290612daa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d6f578082015181840152602081019050612d54565b50505050905090810190601f168015612d9c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612db657fe5b049050809150509392505050565b6000838311158290612e71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e36578082015181840152602081019050612e1b565b50505050905090810190601f168015612e635780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000612e98612e91612577565b8484613356565b6001905092915050565b6000612eaf848484613356565b612f7084612ebb612577565b612f6b856040518060600160405280602881526020016137ac60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000612f21612577565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b612234565b600190509392505050565b600080828401905083811015612ff9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4b524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6130bb81600254612f7b90919063ffffffff16565b600281905550613112816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6131c882826127d6565b61321d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061378b6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61328582826127d6565b156132f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806136856025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136f16023913960400191505060405180910390fd5b6134cd81604051806060016040528060268152602001613735602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc49092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613560816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734b524332303a20617070726f766520746f20746865207a65726f20616464726573734b524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734b524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4b524332303a206275726e20616d6f756e7420657863656564732062616c616e63654b524332303a207472616e7366657220746f20746865207a65726f20616464726573734b524332303a206275726e2066726f6d20746865207a65726f20616464726573734b524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654b524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774b524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734b524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365a265627a7a7231582033e9403c48a8cebb54769dd4f59c0fd89d33cdcddd271ec415a5b9dc1322b3f464736f6c63430005110032