60806040526000600b60146101000a81548160ff0219169083151502179055506000600b60156101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040516200489d3803806200489d83398181016040528101906200006d91906200030f565b6040518060400160405280601181526020017f4172626f726574756d20526573657276650000000000000000000000000000008152506040518060400160405280600481526020017f41525256000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000f192919062000248565b5080600190805190602001906200010a92919062000248565b50505060006200011f6200024060201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280603681526020016200486760369139600c90805190602001906200023092919062000248565b50600160108190555050620003ee565b600033905090565b82805462000256906200036f565b90600052602060002090601f0160209004810192826200027a5760008555620002c6565b82601f106200029557805160ff1916838001178555620002c6565b82800160010185558215620002c6579182015b82811115620002c5578251825591602001919060010190620002a8565b5b509050620002d59190620002d9565b5090565b5b80821115620002f4576000816000905550600101620002da565b5090565b6000815190506200030981620003d4565b92915050565b6000602082840312156200032257600080fd5b60006200033284828501620002f8565b91505092915050565b600062000348826200034f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200038857607f821691505b602082108114156200039f576200039e620003a5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620003df816200033b565b8114620003eb57600080fd5b50565b61446980620003fe6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635196e0601161011a578063a22cb465116100ad578063b88d4fde1161007c578063b88d4fde14610554578063c87b56dd14610570578063d031370b146105a0578063e985e9c5146105bc578063f2fde38b146105ec576101fb565b8063a22cb465146104f4578063a7bbbd7314610510578063a8f125f91461052c578063b3d3d37e1461054a576101fb565b8063715018a6116100e9578063715018a6146104905780638da5cb5b1461049a57806395d89b41146104b85780639fd6db12146104d6576101fb565b80635196e0601461040a57806355f804b3146104145780636352211e1461043057806370a0823114610460576101fb565b80632f745c591161019257806342966c681161016157806342966c68146103965780634d754715146103b25780634f6ccce7146103d05780634feeade414610400576101fb565b80632f745c59146103225780633d8adfd0146103525780633ee501b41461037057806342842e0e1461037a576101fb565b806318160ddd116101ce57806318160ddd1461029a57806319a857d7146102b85780631e8be7b0146102e857806323b872dd14610306576101fb565b806301ffc9a71461020057806306fdde0314610230578063081812fc1461024e578063095ea7b31461027e575b600080fd5b61021a6004803603810190610215919061319c565b610608565b604051610227919061371a565b60405180910390f35b610238610682565b6040516102459190613735565b60405180910390f35b6102686004803603810190610263919061322f565b610714565b60405161027591906136b3565b60405180910390f35b61029860048036038101906102939190613160565b610799565b005b6102a26108b1565b6040516102af9190613a17565b60405180910390f35b6102d260048036038101906102cd9190613281565b6108be565b6040516102df9190613a17565b60405180910390f35b6102f06108e3565b6040516102fd9190613a17565b60405180910390f35b610320600480360381019061031b919061305a565b6108e9565b005b61033c60048036038101906103379190613160565b610949565b6040516103499190613a17565b60405180910390f35b61035a6109ee565b6040516103679190613735565b60405180910390f35b610378610a7c565b005b610394600480360381019061038f919061305a565b610b24565b005b6103b060048036038101906103ab919061322f565b610b44565b005b6103ba610bef565b6040516103c7919061371a565b60405180910390f35b6103ea60048036038101906103e5919061322f565b610c02565b6040516103f79190613a17565b60405180910390f35b610408610c99565b005b610412610dfd565b005b61042e600480360381019061042991906131ee565b610ea5565b005b61044a6004803603810190610445919061322f565b610f3b565b60405161045791906136b3565b60405180910390f35b61047a60048036038101906104759190612fcc565b610fed565b6040516104879190613a17565b60405180910390f35b6104986110a5565b005b6104a26111e2565b6040516104af91906136b3565b60405180910390f35b6104c061120c565b6040516104cd9190613735565b60405180910390f35b6104de61129e565b6040516104eb919061371a565b60405180910390f35b61050e60048036038101906105099190613124565b6112b1565b005b61052a6004803603810190610525919061322f565b611432565b005b6105346114b8565b6040516105419190613a17565b60405180910390f35b6105526114be565b005b61056e600480360381019061056991906130a9565b6117d4565b005b61058a6004803603810190610585919061322f565b611836565b6040516105979190613735565b60405180910390f35b6105ba60048036038101906105b5919061322f565b6118dd565b005b6105d660048036038101906105d1919061301e565b6119a5565b6040516105e3919061371a565b60405180910390f35b61060660048036038101906106019190612fcc565b611a39565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061067b575061067a82611be5565b5b9050919050565b60606000805461069190613c6d565b80601f01602080910402602001604051908101604052809291908181526020018280546106bd90613c6d565b801561070a5780601f106106df5761010080835404028352916020019161070a565b820191906000526020600020905b8154815290600101906020018083116106ed57829003601f168201915b5050505050905090565b600061071f82611cc7565b61075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590613917565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107a482610f3b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c906139b7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610834611d33565b73ffffffffffffffffffffffffffffffffffffffff16148061086357506108628161085d611d33565b6119a5565b5b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990613897565b60405180910390fd5b6108ac8383611d3b565b505050565b6000600880549050905090565b600f602052816000526040600020602052806000526040600020600091509150505481565b60105481565b6108fa6108f4611d33565b82611df4565b610939576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610930906139d7565b60405180910390fd5b610944838383611ed2565b505050565b600061095483610fed565b8210610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90613777565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600c80546109fb90613c6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2790613c6d565b8015610a745780601f10610a4957610100808354040283529160200191610a74565b820191906000526020600020905b815481529060010190602001808311610a5757829003601f168201915b505050505081565b610a84611d33565b73ffffffffffffffffffffffffffffffffffffffff16610aa26111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90613937565b60405180910390fd5b600b60159054906101000a900460ff1615600b60156101000a81548160ff021916908315150217905550565b610b3f838383604051806020016040528060008152506117d4565b505050565b600b60159054906101000a900460ff16610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90613797565b60405180910390fd5b610ba4610b9e611d33565b82611df4565b610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90613997565b60405180910390fd5b610bec8161212e565b50565b600b60159054906101000a900460ff1681565b6000610c0c6108b1565b8210610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c44906139f7565b60405180910390fd5b60088281548110610c87577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b600b60149054906101000a900460ff16610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf90613757565b60405180910390fd5b601054600f6000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690613817565b60405180910390fd5b600d6000815480929190610d9290613cd0565b9190505550610da333600d5461223f565b6000600f6000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b610e05611d33565b73ffffffffffffffffffffffffffffffffffffffff16610e236111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090613937565b60405180910390fd5b600b60149054906101000a900460ff1615600b60146101000a81548160ff021916908315150217905550565b610ead611d33565b73ffffffffffffffffffffffffffffffffffffffff16610ecb6111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890613937565b60405180910390fd5b80600c9080519060200190610f37929190612dc6565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb906138d7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611055906138b7565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110ad611d33565b73ffffffffffffffffffffffffffffffffffffffff166110cb6111e2565b73ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111890613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461121b90613c6d565b80601f016020809104026020016040519081016040528092919081815260200182805461124790613c6d565b80156112945780601f1061126957610100808354040283529160200191611294565b820191906000526020600020905b81548152906001019060200180831161127757829003601f168201915b5050505050905090565b600b60149054906101000a900460ff1681565b6112b9611d33565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613857565b60405180910390fd5b8060056000611334611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166113e1611d33565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611426919061371a565b60405180910390a35050565b61143a611d33565b73ffffffffffffffffffffffffffffffffffffffff166114586111e2565b73ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613937565b60405180910390fd5b8060108190555050565b600e5481565b6114c6611d33565b73ffffffffffffffffffffffffffffffffffffffff166114e46111e2565b73ffffffffffffffffffffffffffffffffffffffff161461153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613937565b60405180910390fd5b600e600081548092919061154d90613cd0565b919050555060005b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115bd57600080fd5b505afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190613258565b8110156117d1576000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f6ccce7856040518263ffffffff1660e01b81526004016116979190613a17565b60206040518083038186803b1580156116af57600080fd5b505afa1580156116c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e79190613258565b6040518263ffffffff1660e01b81526004016117039190613a17565b60206040518083038186803b15801561171b57600080fd5b505afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190612ff5565b9050600f6000600e54815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906117b890613cd0565b91905055505080806117c990613cd0565b915050611555565b50565b6117e56117df611d33565b83611df4565b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b906139d7565b60405180910390fd5b6118308484848461225d565b50505050565b606061184182611cc7565b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790613977565b60405180910390fd5b600061188a6122b9565b905060008151116118aa57604051806020016040528060008152506118d5565b806118b48461234b565b6040516020016118c592919061368f565b6040516020818303038152906040525b915050919050565b6118e5611d33565b73ffffffffffffffffffffffffffffffffffffffff166119036111e2565b73ffffffffffffffffffffffffffffffffffffffff1614611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195090613937565b60405180910390fd5b60005b818110156119a157600d600081548092919061197790613cd0565b91905055506000600d54905061198d338261223f565b50808061199990613cd0565b91505061195c565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a41611d33565b73ffffffffffffffffffffffffffffffffffffffff16611a5f6111e2565b73ffffffffffffffffffffffffffffffffffffffff1614611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1c906137d7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611cb057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611cc05750611cbf826124f8565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611dae83610f3b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611dff82611cc7565b611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3590613877565b60405180910390fd5b6000611e4983610f3b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611eb857508373ffffffffffffffffffffffffffffffffffffffff16611ea084610714565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ec95750611ec881856119a5565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ef282610f3b565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613957565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf90613837565b60405180910390fd5b611fc3838383612562565b611fce600082611d3b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461201e9190613b83565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120759190613afc565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061213982610f3b565b905061214781600084612562565b612152600083611d3b565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121a29190613b83565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612259828260405180602001604052806000815250612676565b5050565b612268848484611ed2565b612274848484846126d1565b6122b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122aa906137b7565b60405180910390fd5b50505050565b6060600c80546122c890613c6d565b80601f01602080910402602001604051908101604052809291908181526020018280546122f490613c6d565b80156123415780601f1061231657610100808354040283529160200191612341565b820191906000526020600020905b81548152906001019060200180831161232457829003601f168201915b5050505050905090565b60606000821415612393576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124f3565b600082905060005b600082146123c55780806123ae90613cd0565b915050600a826123be9190613b52565b915061239b565b60008167ffffffffffffffff811115612407577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156124395781602001600182028036833780820191505090505b5090505b600085146124ec576001826124529190613b83565b9150600a856124619190613d19565b603061246d9190613afc565b60f81b8183815181106124a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124e59190613b52565b945061243d565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61256d838383612868565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b0576125ab8161286d565b6125ef565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125ee576125ed83826128b6565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126325761262d81612a23565b612671565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126705761266f8282612b66565b5b5b505050565b6126808383612be5565b61268d60008484846126d1565b6126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c3906137b7565b60405180910390fd5b505050565b60006126f28473ffffffffffffffffffffffffffffffffffffffff16612db3565b1561285b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261271b611d33565b8786866040518563ffffffff1660e01b815260040161273d94939291906136ce565b602060405180830381600087803b15801561275757600080fd5b505af192505050801561278857506040513d601f19601f8201168201806040525081019061278591906131c5565b60015b61280b573d80600081146127b8576040519150601f19603f3d011682016040523d82523d6000602084013e6127bd565b606091505b50600081511415612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa906137b7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612860565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016128c384610fed565b6128cd9190613b83565b90506000600760008481526020019081526020016000205490508181146129b2576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612a379190613b83565b9050600060096000848152602001908152602001600020549050600060088381548110612a8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612ad5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612b4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612b7183610fed565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c906138f7565b60405180910390fd5b612c5e81611cc7565b15612c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c95906137f7565b60405180910390fd5b612caa60008383612562565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cfa9190613afc565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612dd290613c6d565b90600052602060002090601f016020900481019282612df45760008555612e3b565b82601f10612e0d57805160ff1916838001178555612e3b565b82800160010185558215612e3b579182015b82811115612e3a578251825591602001919060010190612e1f565b5b509050612e489190612e4c565b5090565b5b80821115612e65576000816000905550600101612e4d565b5090565b6000612e7c612e7784613a57565b613a32565b905082815260208101848484011115612e9457600080fd5b612e9f848285613c2b565b509392505050565b6000612eba612eb584613a88565b613a32565b905082815260208101848484011115612ed257600080fd5b612edd848285613c2b565b509392505050565b600081359050612ef4816143d7565b92915050565b600081519050612f09816143d7565b92915050565b600081359050612f1e816143ee565b92915050565b600081359050612f3381614405565b92915050565b600081519050612f4881614405565b92915050565b600082601f830112612f5f57600080fd5b8135612f6f848260208601612e69565b91505092915050565b600082601f830112612f8957600080fd5b8135612f99848260208601612ea7565b91505092915050565b600081359050612fb18161441c565b92915050565b600081519050612fc68161441c565b92915050565b600060208284031215612fde57600080fd5b6000612fec84828501612ee5565b91505092915050565b60006020828403121561300757600080fd5b600061301584828501612efa565b91505092915050565b6000806040838503121561303157600080fd5b600061303f85828601612ee5565b925050602061305085828601612ee5565b9150509250929050565b60008060006060848603121561306f57600080fd5b600061307d86828701612ee5565b935050602061308e86828701612ee5565b925050604061309f86828701612fa2565b9150509250925092565b600080600080608085870312156130bf57600080fd5b60006130cd87828801612ee5565b94505060206130de87828801612ee5565b93505060406130ef87828801612fa2565b925050606085013567ffffffffffffffff81111561310c57600080fd5b61311887828801612f4e565b91505092959194509250565b6000806040838503121561313757600080fd5b600061314585828601612ee5565b925050602061315685828601612f0f565b9150509250929050565b6000806040838503121561317357600080fd5b600061318185828601612ee5565b925050602061319285828601612fa2565b9150509250929050565b6000602082840312156131ae57600080fd5b60006131bc84828501612f24565b91505092915050565b6000602082840312156131d757600080fd5b60006131e584828501612f39565b91505092915050565b60006020828403121561320057600080fd5b600082013567ffffffffffffffff81111561321a57600080fd5b61322684828501612f78565b91505092915050565b60006020828403121561324157600080fd5b600061324f84828501612fa2565b91505092915050565b60006020828403121561326a57600080fd5b600061327884828501612fb7565b91505092915050565b6000806040838503121561329457600080fd5b60006132a285828601612fa2565b92505060206132b385828601612ee5565b9150509250929050565b6132c681613bb7565b82525050565b6132d581613bc9565b82525050565b60006132e682613ab9565b6132f08185613acf565b9350613300818560208601613c3a565b61330981613e06565b840191505092915050565b600061331f82613ac4565b6133298185613ae0565b9350613339818560208601613c3a565b61334281613e06565b840191505092915050565b600061335882613ac4565b6133628185613af1565b9350613372818560208601613c3a565b80840191505092915050565b600061338b601a83613ae0565b915061339682613e17565b602082019050919050565b60006133ae602b83613ae0565b91506133b982613e40565b604082019050919050565b60006133d1601a83613ae0565b91506133dc82613e8f565b602082019050919050565b60006133f4603283613ae0565b91506133ff82613eb8565b604082019050919050565b6000613417602683613ae0565b915061342282613f07565b604082019050919050565b600061343a601c83613ae0565b915061344582613f56565b602082019050919050565b600061345d602183613ae0565b915061346882613f7f565b604082019050919050565b6000613480602483613ae0565b915061348b82613fce565b604082019050919050565b60006134a3601983613ae0565b91506134ae8261401d565b602082019050919050565b60006134c6602c83613ae0565b91506134d182614046565b604082019050919050565b60006134e9603883613ae0565b91506134f482614095565b604082019050919050565b600061350c602a83613ae0565b9150613517826140e4565b604082019050919050565b600061352f602983613ae0565b915061353a82614133565b604082019050919050565b6000613552602083613ae0565b915061355d82614182565b602082019050919050565b6000613575602c83613ae0565b9150613580826141ab565b604082019050919050565b6000613598602083613ae0565b91506135a3826141fa565b602082019050919050565b60006135bb602983613ae0565b91506135c682614223565b604082019050919050565b60006135de602f83613ae0565b91506135e982614272565b604082019050919050565b6000613601602083613ae0565b915061360c826142c1565b602082019050919050565b6000613624602183613ae0565b915061362f826142ea565b604082019050919050565b6000613647603183613ae0565b915061365282614339565b604082019050919050565b600061366a602c83613ae0565b915061367582614388565b604082019050919050565b61368981613c21565b82525050565b600061369b828561334d565b91506136a7828461334d565b91508190509392505050565b60006020820190506136c860008301846132bd565b92915050565b60006080820190506136e360008301876132bd565b6136f060208301866132bd565b6136fd6040830185613680565b818103606083015261370f81846132db565b905095945050505050565b600060208201905061372f60008301846132cc565b92915050565b6000602082019050818103600083015261374f8184613314565b905092915050565b600060208201905081810360008301526137708161337e565b9050919050565b60006020820190508181036000830152613790816133a1565b9050919050565b600060208201905081810360008301526137b0816133c4565b9050919050565b600060208201905081810360008301526137d0816133e7565b9050919050565b600060208201905081810360008301526137f08161340a565b9050919050565b600060208201905081810360008301526138108161342d565b9050919050565b6000602082019050818103600083015261383081613450565b9050919050565b6000602082019050818103600083015261385081613473565b9050919050565b6000602082019050818103600083015261387081613496565b9050919050565b60006020820190508181036000830152613890816134b9565b9050919050565b600060208201905081810360008301526138b0816134dc565b9050919050565b600060208201905081810360008301526138d0816134ff565b9050919050565b600060208201905081810360008301526138f081613522565b9050919050565b6000602082019050818103600083015261391081613545565b9050919050565b6000602082019050818103600083015261393081613568565b9050919050565b600060208201905081810360008301526139508161358b565b9050919050565b60006020820190508181036000830152613970816135ae565b9050919050565b60006020820190508181036000830152613990816135d1565b9050919050565b600060208201905081810360008301526139b0816135f4565b9050919050565b600060208201905081810360008301526139d081613617565b9050919050565b600060208201905081810360008301526139f08161363a565b9050919050565b60006020820190508181036000830152613a108161365d565b9050919050565b6000602082019050613a2c6000830184613680565b92915050565b6000613a3c613a4d565b9050613a488282613c9f565b919050565b6000604051905090565b600067ffffffffffffffff821115613a7257613a71613dd7565b5b613a7b82613e06565b9050602081019050919050565b600067ffffffffffffffff821115613aa357613aa2613dd7565b5b613aac82613e06565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613b0782613c21565b9150613b1283613c21565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b4757613b46613d4a565b5b828201905092915050565b6000613b5d82613c21565b9150613b6883613c21565b925082613b7857613b77613d79565b5b828204905092915050565b6000613b8e82613c21565b9150613b9983613c21565b925082821015613bac57613bab613d4a565b5b828203905092915050565b6000613bc282613c01565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613c58578082015181840152602081019050613c3d565b83811115613c67576000848401525b50505050565b60006002820490506001821680613c8557607f821691505b60208210811415613c9957613c98613da8565b5b50919050565b613ca882613e06565b810181811067ffffffffffffffff82111715613cc757613cc6613dd7565b5b80604052505050565b6000613cdb82613c21565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d0e57613d0d613d4a565b5b600182019050919050565b6000613d2482613c21565b9150613d2f83613c21565b925082613d3f57613d3e613d79565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f6d696e74696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f6275726e696e67206973206e6f742079657420656e61626c6564000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f6e6f20726571756972656420746f6b656e7320666f722074686973206576656e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f63616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6143e081613bb7565b81146143eb57600080fd5b50565b6143f781613bc9565b811461440257600080fd5b50565b61440e81613bd5565b811461441957600080fd5b50565b61442581613c21565b811461443057600080fd5b5056fea2646970667358221220e8e6f66d47d649e272bc605d02a59c25678ac53eb46fc7e141bfa5a7edbcf13364736f6c63430008040033697066733a2f2f516d5450696f343479646472356b4a4a5332756452726463785370376245433478695858444154324478554342532f000000000000000000000000e731af8f99d41f0dfb081c3b85649e1bab9d3bd4