0x60806040523480156200001157600080fd5b506040516200546a3803806200546a833981810160405262000037919081019062000119565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001bd565b6000815190506200011381620001a3565b92915050565b6000806000606084860312156200012f57600080fd5b60006200013f8682870162000102565b9350506020620001528682870162000102565b9250506040620001658682870162000102565b9150509250925092565b60006200017c8262000183565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001ae816200016f565b8114620001ba57600080fd5b50565b61529d80620001cd6000396000f3fe60806040526004361061019c5760003560e01c80634634c61f116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b009146105b1578063deaaa7cc146105da578063e23a9a5214610605578063fe0d94c1146106425761019c565b8063d33219b41461051e578063da35c66414610549578063da95691a146105745761019c565b80637bdbe4d0116100c65780637bdbe4d01461048857806391500671146104b3578063b58131b0146104dc578063b9a61961146105075761019c565b80634634c61f1461041d5780634923250014610446578063760fbc13146104715761019c565b806321f43e42116101595780633932abb1116101335780633932abb1146103615780633e4f49e61461038c57806340e58ee5146103c9578063452a9320146103f25761019c565b806321f43e42146102cd57806324bc1a64146102f6578063328dd982146103215761019c565b8063013cf08b146101a157806302a251a3146101e657806306fdde031461021157806315373e3d1461023c57806317977c611461026557806320606b70146102a2575b600080fd5b3480156101ad57600080fd5b506101c860048036036101c39190810190613371565b61065e565b6040516101dd99989796959493929190614c6c565b60405180910390f35b3480156101f257600080fd5b506101fb6106e6565b6040516102089190614ba1565b60405180910390f35b34801561021d57600080fd5b506102266106f0565b60405161023391906148c4565b60405180910390f35b34801561024857600080fd5b50610263600480360361025e91908101906133ff565b610729565b005b34801561027157600080fd5b5061028c6004803603610287919081019061318a565b610738565b6040516102999190614ba1565b60405180910390f35b3480156102ae57600080fd5b506102b7610750565b6040516102c49190614797565b60405180910390f35b3480156102d957600080fd5b506102f460048036036102ef91908101906131b3565b610767565b005b34801561030257600080fd5b5061030b6108f4565b6040516103189190614ba1565b60405180910390f35b34801561032d57600080fd5b5061034860048036036103439190810190613371565b610906565b6040516103589493929190614736565b60405180910390f35b34801561036d57600080fd5b50610376610be3565b6040516103839190614ba1565b60405180910390f35b34801561039857600080fd5b506103b360048036036103ae9190810190613371565b610bec565b6040516103c091906148a9565b60405180910390f35b3480156103d557600080fd5b506103f060048036036103eb9190810190613371565b610dd0565b005b3480156103fe57600080fd5b5061040761116c565b6040516104149190614563565b60405180910390f35b34801561042957600080fd5b50610444600480360361043f919081019061343b565b611192565b005b34801561045257600080fd5b5061045b611361565b604051610468919061488e565b60405180910390f35b34801561047d57600080fd5b50610486611387565b005b34801561049457600080fd5b5061049d61145b565b6040516104aa9190614ba1565b60405180910390f35b3480156104bf57600080fd5b506104da60048036036104d591908101906131b3565b611464565b005b3480156104e857600080fd5b506104f16115ec565b6040516104fe9190614ba1565b60405180910390f35b34801561051357600080fd5b5061051c6115fe565b005b34801561052a57600080fd5b50610533611711565b6040516105409190614873565b60405180910390f35b34801561055557600080fd5b5061055e611736565b60405161056b9190614ba1565b60405180910390f35b34801561058057600080fd5b5061059b600480360361059691908101906131ef565b61173c565b6040516105a89190614ba1565b60405180910390f35b3480156105bd57600080fd5b506105d860048036036105d39190810190613371565b611d09565b005b3480156105e657600080fd5b506105ef612058565b6040516105fc9190614797565b60405180910390f35b34801561061157600080fd5b5061062c600480360361062791908101906133c3565b61206f565b6040516106399190614b86565b60405180910390f35b61065c60048036036106579190810190613371565b612151565b005b60046020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600701549080600801549080600901549080600a01549080600b0160009054906101000a900460ff169080600b0160019054906101000a900460ff16905089565b6000614380905090565b6040518060400160405280601881526020017f556e736c617368656420476f7665726e6f7220416c706861000000000000000081525081565b61073433838361239e565b5050565b60056020528060005260406000206000915090505481565b60405161075c90614539565b604051809103902081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee90614946565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000856040516020016108699190614563565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161089894939291906145a7565b600060405180830381600087803b1580156108b257600080fd5b505af11580156108c6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506108ef9190810190613330565b505050565b60006954b40b1f852bda000000905090565b606080606080600060046000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156109b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161096a575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610a0657602002820191906000526020600020905b8154815260200190600101908083116109f2575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610aea578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b505050505081526020019060010190610a2e565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610bcd578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b505050505081526020019060010190610b11565b5050505090509450945094509450509193509193565b60006001905090565b60008160035410158015610c005750600082115b610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690614966565b60405180910390fd5b600060046000848152602001908152602001600020905080600b0160009054906101000a900460ff1615610c77576002915050610dcb565b80600701544311610c8c576000915050610dcb565b80600801544311610ca1576001915050610dcb565b80600a01548160090154111580610cc25750610cbb6108f4565b8160090154105b15610cd1576003915050610dcb565b600081600201541415610ce8576004915050610dcb565b80600b0160019054906101000a900460ff1615610d09576007915050610dcb565b610db581600201546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db0919081019061339a565b61266d565b4210610dc5576006915050610dcb565b60059150505b919050565b6000610ddb82610bec565b9050600780811115610de957fe5b816007811115610df557fe5b1415610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90614b06565b60405180910390fd5b6000600460008481526020019081526020016000209050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f975750610eac6115ec565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f1a4360016126c2565b6040518363ffffffff1660e01b8152600401610f37929190614606565b60206040518083038186803b158015610f4f57600080fd5b505afa158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f8791908101906134b2565b6bffffffffffffffffffffffff16105b610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90614a46565b60405180910390fd5b600181600b0160006101000a81548160ff02191690831515021790555060008090505b816003018054905081101561112f576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591fcdfe83600301838154811061105457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600401848154811061108e57fe5b90600052602060002001548560050185815481106110a857fe5b906000526020600020018660060186815481106110c157fe5b9060005260206000200187600201546040518663ffffffff1660e01b81526004016110f09594939291906146d5565b600060405180830381600087803b15801561110a57600080fd5b505af115801561111e573d6000803e3d6000fd5b505050508080600101915050610ff9565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c8360405161115f9190614ba1565b60405180910390a1505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040516111a090614539565b60405180910390206040518060400160405280601881526020017f556e736c617368656420476f7665726e6f7220416c7068610000000000000000815250805190602001206111ed612712565b3060405160200161120194939291906147b2565b60405160208183030381529060405280519060200120905060006040516112279061454e565b60405180910390208787604051602001611243939291906147f7565b60405160208183030381529060405280519060200120905060008282604051602001611270929190614502565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516112ad949392919061482e565b6020604051602081039080840390855afa1580156112cf573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561134b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290614ac6565b60405180910390fd5b611356818a8a61239e565b505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90614b66565b60405180910390fd5b6000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906149c6565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f9016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000856040516020016115669190614563565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161159594939291906145a7565b602060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115e79190810190613307565b505050565b600069152d02c7e14af6800000905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611685906148e6565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60006117466115ec565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe1336117904360016126c2565b6040518363ffffffff1660e01b81526004016117ad92919061457e565b60206040518083038186803b1580156117c557600080fd5b505afa1580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117fd91908101906134b2565b6bffffffffffffffffffffffff161161184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614aa6565b60405180910390fd5b8451865114801561185d575083518651145b801561186a575082518651145b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090614a26565b60405180910390fd5b6000865114156118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614a86565b60405180910390fd5b6118f661145b565b86511115611939576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611930906149e6565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114611a4857600061199082610bec565b90506001600781111561199f57fe5b8160078111156119ab57fe5b14156119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e390614ae6565b60405180910390fd5b600060078111156119f957fe5b816007811115611a0557fe5b1415611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d906149a6565b60405180910390fd5b505b6000611a5b43611a56610be3565b61266d565b90506000611a7082611a6b6106e6565b61266d565b9050600360008154809291906001019190505550611a8c6128f3565b604051806101a0016040528060035481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611b96929190612975565b506080820151816004019080519060200190611bb39291906129ff565b5060a0820151816005019080519060200190611bd0929190612a4c565b5060c0820151816006019080519060200190611bed929190612aac565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160056000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e604051611ced99989796959493929190614bbc565b60405180910390a1806000015194505050505095945050505050565b60046007811115611d1657fe5b611d1f82610bec565b6007811115611d2a57fe5b14611d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6190614906565b60405180910390fd5b60006004600083815260200190815260200160002090506000611e2b426000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015611dee57600080fd5b505afa158015611e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e26919081019061339a565b61266d565b905060008090505b826003018054905081101561201057612003836003018281548110611e5457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018381548110611e8e57fe5b9060005260206000200154856005018481548110611ea857fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f465780601f10611f1b57610100808354040283529160200191611f46565b820191906000526020600020905b815481529060010190602001808311611f2957829003601f168201915b5050505050866006018581548110611f5a57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ff85780601f10611fcd57610100808354040283529160200191611ff8565b820191906000526020600020905b815481529060010190602001808311611fdb57829003601f168201915b50505050508661271f565b8080600101915050611e33565b508082600201819055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892838260405161204b929190614cf9565b60405180910390a1505050565b6040516120649061454e565b604051809103902081565b612077612b0c565b60046000848152602001908152602001600020600c0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6005600781111561215e57fe5b61216782610bec565b600781111561217257fe5b146121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990614926565b60405180910390fd5b6000600460008381526020019081526020016000209050600181600b0160016101000a81548160ff02191690831515021790555060008090505b8160030180549050811015612362576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f83600401838154811061224757fe5b906000526020600020015484600301848154811061226157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401858154811061229b57fe5b90600052602060002001548660050186815481106122b557fe5b906000526020600020018760060187815481106122ce57fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016122fd9594939291906146d5565b6000604051808303818588803b15801561231657600080fd5b505af115801561232a573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052506123549190810190613330565b5080806001019150506121ec565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516123929190614ba1565b60405180910390a15050565b600160078111156123ab57fe5b6123b483610bec565b60078111156123bf57fe5b146123ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f690614b26565b60405180910390fd5b6000600460008481526020019081526020016000209050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff161515146124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90614986565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18785600701546040518363ffffffff1660e01b8152600401612516929190614606565b60206040518083038186803b15801561252e57600080fd5b505afa158015612542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061256691908101906134b2565b905083156125975761258a8360090154826bffffffffffffffffffffffff1661266d565b83600901819055506125bc565b6125b383600a0154826bffffffffffffffffffffffff1661266d565b83600a01819055505b60018260000160006101000a81548160ff021916908315150217905550838260000160016101000a81548160ff021916908315150217905550808260000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c468686868460405161265d949392919061462f565b60405180910390a1505050505050565b6000808284019050838110156126b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126af90614a06565b60405180910390fd5b8091505092915050565b600082821115612707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fe90614b46565b60405180910390fd5b818303905092915050565b6000804690508091505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001612775959493929190614674565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016127a79190614797565b60206040518083038186803b1580156127bf57600080fd5b505afa1580156127d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f791908101906132de565b15612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282e90614a66565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f90186868686866040518663ffffffff1660e01b8152600401612899959493929190614674565b602060405180830381600087803b1580156128b357600080fd5b505af11580156128c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128eb9190810190613307565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156129ee579160200282015b828111156129ed5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612995565b5b5090506129fb9190612b3f565b5090565b828054828255906000526020600020908101928215612a3b579160200282015b82811115612a3a578251825591602001919060010190612a1f565b5b509050612a489190612b82565b5090565b828054828255906000526020600020908101928215612a9b579160200282015b82811115612a9a578251829080519060200190612a8a929190612ba7565b5091602001919060010190612a6c565b5b509050612aa89190612c27565b5090565b828054828255906000526020600020908101928215612afb579160200282015b82811115612afa578251829080519060200190612aea929190612c53565b5091602001919060010190612acc565b5b509050612b089190612cd3565b5090565b604051806060016040528060001515815260200160001515815260200160006bffffffffffffffffffffffff1681525090565b612b7f91905b80821115612b7b57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612b45565b5090565b90565b612ba491905b80821115612ba0576000816000905550600101612b88565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612be857805160ff1916838001178555612c16565b82800160010185558215612c16579182015b82811115612c15578251825591602001919060010190612bfa565b5b509050612c239190612b82565b5090565b612c5091905b80821115612c4c5760008181612c439190612cff565b50600101612c2d565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c9457805160ff1916838001178555612cc2565b82800160010185558215612cc2579182015b82811115612cc1578251825591602001919060010190612ca6565b5b509050612ccf9190612b82565b5090565b612cfc91905b80821115612cf85760008181612cef9190612d47565b50600101612cd9565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612d255750612d44565b601f016020900490600052602060002090810190612d439190612b82565b5b50565b50805460018160011615610100020316600290046000825580601f10612d6d5750612d8c565b601f016020900490600052602060002090810190612d8b9190612b82565b5b50565b600081359050612d9e816151d0565b92915050565b600082601f830112612db557600080fd5b8135612dc8612dc382614d4f565b614d22565b91508181835260208401935060208101905083856020840282011115612ded57600080fd5b60005b83811015612e1d5781612e038882612d8f565b845260208401935060208301925050600181019050612df0565b5050505092915050565b600082601f830112612e3857600080fd5b8135612e4b612e4682614d77565b614d22565b9150818183526020840193506020810190508360005b83811015612e915781358601612e778882612fe6565b845260208401935060208301925050600181019050612e61565b5050505092915050565b600082601f830112612eac57600080fd5b8135612ebf612eba82614d9f565b614d22565b9150818183526020840193506020810190508360005b83811015612f055781358601612eeb888261308e565b845260208401935060208301925050600181019050612ed5565b5050505092915050565b600082601f830112612f2057600080fd5b8135612f33612f2e82614dc7565b614d22565b91508181835260208401935060208101905083856020840282011115612f5857600080fd5b60005b83811015612f885781612f6e8882613136565b845260208401935060208301925050600181019050612f5b565b5050505092915050565b600081359050612fa1816151e7565b92915050565b600081519050612fb6816151e7565b92915050565b600081359050612fcb816151fe565b92915050565b600081519050612fe0816151fe565b92915050565b600082601f830112612ff757600080fd5b813561300a61300582614def565b614d22565b9150808252602083016020830185838301111561302657600080fd5b613031838284615166565b50505092915050565b600082601f83011261304b57600080fd5b815161305e61305982614e1b565b614d22565b9150808252602083016020830185838301111561307a57600080fd5b613085838284615175565b50505092915050565b600082601f83011261309f57600080fd5b81356130b26130ad82614e47565b614d22565b915080825260208301602083018583830111156130ce57600080fd5b6130d9838284615166565b50505092915050565b600082601f8301126130f357600080fd5b813561310661310182614e73565b614d22565b9150808252602083016020830185838301111561312257600080fd5b61312d838284615166565b50505092915050565b60008135905061314581615215565b92915050565b60008151905061315a81615215565b92915050565b60008135905061316f8161522c565b92915050565b60008151905061318481615243565b92915050565b60006020828403121561319c57600080fd5b60006131aa84828501612d8f565b91505092915050565b600080604083850312156131c657600080fd5b60006131d485828601612d8f565b92505060206131e585828601613136565b9150509250929050565b600080600080600060a0868803121561320757600080fd5b600086013567ffffffffffffffff81111561322157600080fd5b61322d88828901612da4565b955050602086013567ffffffffffffffff81111561324a57600080fd5b61325688828901612f0f565b945050604086013567ffffffffffffffff81111561327357600080fd5b61327f88828901612e9b565b935050606086013567ffffffffffffffff81111561329c57600080fd5b6132a888828901612e27565b925050608086013567ffffffffffffffff8111156132c557600080fd5b6132d1888289016130e2565b9150509295509295909350565b6000602082840312156132f057600080fd5b60006132fe84828501612fa7565b91505092915050565b60006020828403121561331957600080fd5b600061332784828501612fd1565b91505092915050565b60006020828403121561334257600080fd5b600082015167ffffffffffffffff81111561335c57600080fd5b6133688482850161303a565b91505092915050565b60006020828403121561338357600080fd5b600061339184828501613136565b91505092915050565b6000602082840312156133ac57600080fd5b60006133ba8482850161314b565b91505092915050565b600080604083850312156133d657600080fd5b60006133e485828601613136565b92505060206133f585828601612d8f565b9150509250929050565b6000806040838503121561341257600080fd5b600061342085828601613136565b925050602061343185828601612f92565b9150509250929050565b600080600080600060a0868803121561345357600080fd5b600061346188828901613136565b955050602061347288828901612f92565b945050604061348388828901613160565b935050606061349488828901612fbc565b92505060806134a588828901612fbc565b9150509295509295909350565b6000602082840312156134c457600080fd5b60006134d284828501613175565b91505092915050565b60006134e78383613542565b60208301905092915050565b60006134ff8383613783565b905092915050565b600061351383836138c0565b905092915050565b600061352783836144b7565b60208301905092915050565b61353c816150b2565b82525050565b61354b81615028565b82525050565b61355a81615028565b82525050565b600061356b82614f09565b6135758185614f95565b935061358083614e9f565b8060005b838110156135b157815161359888826134db565b97506135a383614f61565b925050600181019050613584565b5085935050505092915050565b60006135c982614f14565b6135d38185614fa6565b9350836020820285016135e585614eaf565b8060005b85811015613621578484038952815161360285826134f3565b945061360d83614f6e565b925060208a019950506001810190506135e9565b50829750879550505050505092915050565b600061363e82614f1f565b6136488185614fb7565b93508360208202850161365a85614ebf565b8060005b8581101561369657848403895281516136778582613507565b945061368283614f7b565b925060208a0199505060018101905061365e565b50829750879550505050505092915050565b60006136b382614f2a565b6136bd8185614fc8565b93506136c883614ecf565b8060005b838110156136f95781516136e0888261351b565b97506136eb83614f88565b9250506001810190506136cc565b5085935050505092915050565b61370f8161503a565b82525050565b61371e8161503a565b82525050565b61372d81615046565b82525050565b61374461373f82615046565b6151a8565b82525050565b600061375582614f40565b61375f8185614fea565b935061376f818560208601615175565b613778816151b2565b840191505092915050565b600061378e82614f35565b6137988185614fd9565b93506137a8818560208601615175565b6137b1816151b2565b840191505092915050565b6000815460018116600081146137d957600181146137ff57613843565b607f60028304166137ea8187614fea565b955060ff198316865260208601935050613843565b6002820461380d8187614fea565b955061381885614edf565b60005b8281101561383a5781548189015260018201915060208101905061381b565b80880195505050505b505092915050565b613854816150c4565b82525050565b613863816150e8565b82525050565b6138728161510c565b82525050565b6138818161511e565b82525050565b600061389282614f56565b61389c818561500c565b93506138ac818560208601615175565b6138b5816151b2565b840191505092915050565b60006138cb82614f4b565b6138d58185614ffb565b93506138e5818560208601615175565b6138ee816151b2565b840191505092915050565b600061390482614f4b565b61390e818561500c565b935061391e818560208601615175565b613927816151b2565b840191505092915050565b60008154600181166000811461394f5760018114613975576139b9565b607f6002830416613960818761500c565b955060ff1983168652602086019350506139b9565b60028204613983818761500c565b955061398e85614ef4565b60005b828110156139b057815481890152600182019150602081019050613991565b80880195505050505b505092915050565b60006139ce60398361500c565b91507f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736560008301527f6e646572206d75737420626520676f7620677561726469616e000000000000006020830152604082019050919050565b6000613a3460448361500c565b91507f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360008301527f616e206f6e6c792062652071756575656420696620697420697320737563636560208301527f65646564000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613ac060458361500c565b91507f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60008301527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208301527f75657565640000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613b4c60028361501d565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000613b8c604c8361500c565b91507f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c60008301527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208301527f676f7620677561726469616e00000000000000000000000000000000000000006040830152606082019050919050565b6000613c1860188361500c565b91507f73657450656e64696e6741646d696e28616464726573732900000000000000006000830152602082019050919050565b6000613c5860298361500c565b91507f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260008301527f6f706f73616c20696400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cbe602d8361500c565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060008301527f616c726561647920766f746564000000000000000000000000000000000000006020830152604082019050919050565b6000613d2460598361500c565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c72656164792070656e64696e672070726f706f73616c000000000000006040830152606082019050919050565b6000613db0604a8361500c565b91507f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6360008301527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60208301527f7620677561726469616e000000000000000000000000000000000000000000006040830152606082019050919050565b6000613e3c60288361500c565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960008301527f20616374696f6e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ea260118361500c565b91507f6164646974696f6e206f766572666c6f770000000000000000000000000000006000830152602082019050919050565b6000613ee260438361501d565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000613f6e60278361501d565b91507f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207360008301527f7570706f727429000000000000000000000000000000000000000000000000006020830152602782019050919050565b6000613fd460448361500c565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60008301527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208301527f61746368000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614060602f8361500c565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060008301527f61626f7665207468726573686f6c6400000000000000000000000000000000006020830152604082019050919050565b60006140c660448361500c565b91507f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060008301527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208301527f20657461000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614152602c8361500c565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60008301527f7669646520616374696f6e7300000000000000000000000000000000000000006020830152604082019050919050565b60006141b8603f8361500c565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260008301527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c64006020830152604082019050919050565b600061421e602f8361500c565b91507f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60008301527f76616c6964207369676e617475726500000000000000000000000000000000006020830152604082019050919050565b600061428460588361500c565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c7265616479206163746976652070726f706f73616c00000000000000006040830152606082019050919050565b600061431060368361500c565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160008301527f6e63656c2065786563757465642070726f706f73616c000000000000000000006020830152604082019050919050565b6000614376602a8361500c565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760008301527f20697320636c6f736564000000000000000000000000000000000000000000006020830152604082019050919050565b60006143dc60158361500c565b91507f7375627472616374696f6e20756e646572666c6f7700000000000000000000006000830152602082019050919050565b600061441c60368361500c565b91507f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646560008301527f72206d75737420626520676f7620677561726469616e000000000000000000006020830152604082019050919050565b60608201600082015161448b6000850182613706565b50602082015161449e6020850182613706565b5060408201516144b160408501826144f3565b50505050565b6144c081615083565b82525050565b6144cf81615083565b82525050565b6144de8161508d565b82525050565b6144ed81615154565b82525050565b6144fc8161509a565b82525050565b600061450d82613b3f565b91506145198285613733565b6020820191506145298284613733565b6020820191508190509392505050565b600061454482613ed5565b9150819050919050565b600061455982613f61565b9150819050919050565b60006020820190506145786000830184613551565b92915050565b60006040820190506145936000830185613533565b6145a060208301846144c6565b9392505050565b600060a0820190506145bc6000830187613551565b6145c96020830186613878565b81810360408301526145da81613c0b565b905081810360608301526145ee818561374a565b90506145fd60808301846144c6565b95945050505050565b600060408201905061461b6000830185613551565b61462860208301846144c6565b9392505050565b60006080820190506146446000830187613551565b61465160208301866144c6565b61465e6040830185613715565b61466b60608301846144e4565b95945050505050565b600060a0820190506146896000830188613551565b61469660208301876144c6565b81810360408301526146a88186613887565b905081810360608301526146bc818561374a565b90506146cb60808301846144c6565b9695505050505050565b600060a0820190506146ea6000830188613551565b6146f760208301876144c6565b81810360408301526147098186613932565b9050818103606083015261471d81856137bc565b905061472c60808301846144c6565b9695505050505050565b600060808201905081810360008301526147508187613560565b9050818103602083015261476481866136a8565b905081810360408301526147788185613633565b9050818103606083015261478c81846135be565b905095945050505050565b60006020820190506147ac6000830184613724565b92915050565b60006080820190506147c76000830187613724565b6147d46020830186613724565b6147e160408301856144c6565b6147ee6060830184613551565b95945050505050565b600060608201905061480c6000830186613724565b61481960208301856144c6565b6148266040830184613715565b949350505050565b60006080820190506148436000830187613724565b61485060208301866144d5565b61485d6040830185613724565b61486a6060830184613724565b95945050505050565b6000602082019050614888600083018461384b565b92915050565b60006020820190506148a3600083018461385a565b92915050565b60006020820190506148be6000830184613869565b92915050565b600060208201905081810360008301526148de81846138f9565b905092915050565b600060208201905081810360008301526148ff816139c1565b9050919050565b6000602082019050818103600083015261491f81613a27565b9050919050565b6000602082019050818103600083015261493f81613ab3565b9050919050565b6000602082019050818103600083015261495f81613b7f565b9050919050565b6000602082019050818103600083015261497f81613c4b565b9050919050565b6000602082019050818103600083015261499f81613cb1565b9050919050565b600060208201905081810360008301526149bf81613d17565b9050919050565b600060208201905081810360008301526149df81613da3565b9050919050565b600060208201905081810360008301526149ff81613e2f565b9050919050565b60006020820190508181036000830152614a1f81613e95565b9050919050565b60006020820190508181036000830152614a3f81613fc7565b9050919050565b60006020820190508181036000830152614a5f81614053565b9050919050565b60006020820190508181036000830152614a7f816140b9565b9050919050565b60006020820190508181036000830152614a9f81614145565b9050919050565b60006020820190508181036000830152614abf816141ab565b9050919050565b60006020820190508181036000830152614adf81614211565b9050919050565b60006020820190508181036000830152614aff81614277565b9050919050565b60006020820190508181036000830152614b1f81614303565b9050919050565b60006020820190508181036000830152614b3f81614369565b9050919050565b60006020820190508181036000830152614b5f816143cf565b9050919050565b60006020820190508181036000830152614b7f8161440f565b9050919050565b6000606082019050614b9b6000830184614475565b92915050565b6000602082019050614bb660008301846144c6565b92915050565b600061012082019050614bd2600083018c6144c6565b614bdf602083018b613533565b8181036040830152614bf1818a613560565b90508181036060830152614c0581896136a8565b90508181036080830152614c198188613633565b905081810360a0830152614c2d81876135be565b9050614c3c60c08301866144c6565b614c4960e08301856144c6565b818103610100830152614c5c8184613887565b90509a9950505050505050505050565b600061012082019050614c82600083018c6144c6565b614c8f602083018b613551565b614c9c604083018a6144c6565b614ca960608301896144c6565b614cb660808301886144c6565b614cc360a08301876144c6565b614cd060c08301866144c6565b614cdd60e0830185613715565b614ceb610100830184613715565b9a9950505050505050505050565b6000604082019050614d0e60008301856144c6565b614d1b60208301846144c6565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715614d4557600080fd5b8060405250919050565b600067ffffffffffffffff821115614d6657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614d8e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614db657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614dde57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614e0657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e3257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e5e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e8a57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061503382615063565b9050919050565b60008115159050919050565b6000819050919050565b600081905061505e826151c3565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b60006150bd82615130565b9050919050565b60006150cf826150d6565b9050919050565b60006150e182615063565b9050919050565b60006150f3826150fa565b9050919050565b600061510582615063565b9050919050565b600061511782615050565b9050919050565b600061512982615083565b9050919050565b600061513b82615142565b9050919050565b600061514d82615063565b9050919050565b600061515f8261509a565b9050919050565b82818337600083830152505050565b60005b83811015615193578082015181840152602081019050615178565b838111156151a2576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b600881106151cd57fe5b50565b6151d981615028565b81146151e457600080fd5b50565b6151f08161503a565b81146151fb57600080fd5b50565b61520781615046565b811461521257600080fd5b50565b61521e81615083565b811461522957600080fd5b50565b6152358161508d565b811461524057600080fd5b50565b61524c8161509a565b811461525757600080fd5b5056fea365627a7a72315820a0c6e688201a72890589cac5327d55cda05b11c664969f861a26717282fe3baf6c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000be91e4074ffbbc208faa4d3a3b260ebbea16228200000000000000000000000016db6ab84fd25bdb310cfc76371703d1de0bddf3000000000000000000000000659839c92ac4230b69edf25943766c33d44b63de