Merge pull request #3697 from joostjager/lower-min-htlc

config: improve management of htlc amount lower limit
This commit is contained in:
Olaoluwa Osuntokun 2019-12-10 18:05:49 -08:00 committed by GitHub
commit 70c5fe3d00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 764 additions and 653 deletions

@ -36,7 +36,22 @@ import (
) )
const ( const (
defaultBitcoinMinHTLCMSat = lnwire.MilliSatoshi(1000) // defaultBitcoinMinHTLCMSat is the default smallest value htlc this
// node will accept. This value is proposed in the channel open sequence
// and cannot be changed during the life of the channel. It is zero by
// default to allow maximum flexibility in deciding what size payments
// to forward.
//
// All forwarded payments are subjected to the min htlc constraint of
// the routing policy of the outgoing channel. This implicitly controls
// the minimum htlc value on the incoming channel too.
defaultBitcoinMinHTLCInMSat = lnwire.MilliSatoshi(1)
// defaultBitcoinMinHTLCOutMSat is the default minimum htlc value that
// we require for sending out htlcs. Our channel peer may have a lower
// min htlc channel parameter, but we - by default - don't forward
// anything under the value defined here.
defaultBitcoinMinHTLCOutMSat = lnwire.MilliSatoshi(1000)
// DefaultBitcoinBaseFeeMSat is the default forwarding base fee. // DefaultBitcoinBaseFeeMSat is the default forwarding base fee.
DefaultBitcoinBaseFeeMSat = lnwire.MilliSatoshi(1000) DefaultBitcoinBaseFeeMSat = lnwire.MilliSatoshi(1000)
@ -48,11 +63,12 @@ const (
// delta. // delta.
DefaultBitcoinTimeLockDelta = 40 DefaultBitcoinTimeLockDelta = 40
defaultLitecoinMinHTLCMSat = lnwire.MilliSatoshi(1000) defaultLitecoinMinHTLCInMSat = lnwire.MilliSatoshi(1)
defaultLitecoinBaseFeeMSat = lnwire.MilliSatoshi(1000) defaultLitecoinMinHTLCOutMSat = lnwire.MilliSatoshi(1000)
defaultLitecoinFeeRate = lnwire.MilliSatoshi(1) defaultLitecoinBaseFeeMSat = lnwire.MilliSatoshi(1000)
defaultLitecoinTimeLockDelta = 576 defaultLitecoinFeeRate = lnwire.MilliSatoshi(1)
defaultLitecoinDustLimit = btcutil.Amount(54600) defaultLitecoinTimeLockDelta = 576
defaultLitecoinDustLimit = btcutil.Amount(54600)
// defaultBitcoinStaticFeePerKW is the fee rate of 50 sat/vbyte // defaultBitcoinStaticFeePerKW is the fee rate of 50 sat/vbyte
// expressed in sat/kw. // expressed in sat/kw.
@ -130,6 +146,8 @@ type chainControl struct {
wallet *lnwallet.LightningWallet wallet *lnwallet.LightningWallet
routingPolicy htlcswitch.ForwardingPolicy routingPolicy htlcswitch.ForwardingPolicy
minHtlcIn lnwire.MilliSatoshi
} }
// newChainControlFromConfig attempts to create a chainControl instance // newChainControlFromConfig attempts to create a chainControl instance
@ -157,21 +175,23 @@ func newChainControlFromConfig(cfg *config, chanDB *channeldb.DB,
switch registeredChains.PrimaryChain() { switch registeredChains.PrimaryChain() {
case bitcoinChain: case bitcoinChain:
cc.routingPolicy = htlcswitch.ForwardingPolicy{ cc.routingPolicy = htlcswitch.ForwardingPolicy{
MinHTLC: cfg.Bitcoin.MinHTLC, MinHTLCOut: cfg.Bitcoin.MinHTLCOut,
BaseFee: cfg.Bitcoin.BaseFee, BaseFee: cfg.Bitcoin.BaseFee,
FeeRate: cfg.Bitcoin.FeeRate, FeeRate: cfg.Bitcoin.FeeRate,
TimeLockDelta: cfg.Bitcoin.TimeLockDelta, TimeLockDelta: cfg.Bitcoin.TimeLockDelta,
} }
cc.minHtlcIn = cfg.Bitcoin.MinHTLCIn
cc.feeEstimator = chainfee.NewStaticEstimator( cc.feeEstimator = chainfee.NewStaticEstimator(
defaultBitcoinStaticFeePerKW, 0, defaultBitcoinStaticFeePerKW, 0,
) )
case litecoinChain: case litecoinChain:
cc.routingPolicy = htlcswitch.ForwardingPolicy{ cc.routingPolicy = htlcswitch.ForwardingPolicy{
MinHTLC: cfg.Litecoin.MinHTLC, MinHTLCOut: cfg.Litecoin.MinHTLCOut,
BaseFee: cfg.Litecoin.BaseFee, BaseFee: cfg.Litecoin.BaseFee,
FeeRate: cfg.Litecoin.FeeRate, FeeRate: cfg.Litecoin.FeeRate,
TimeLockDelta: cfg.Litecoin.TimeLockDelta, TimeLockDelta: cfg.Litecoin.TimeLockDelta,
} }
cc.minHtlcIn = cfg.Litecoin.MinHTLCIn
cc.feeEstimator = chainfee.NewStaticEstimator( cc.feeEstimator = chainfee.NewStaticEstimator(
defaultLitecoinStaticFeePerKW, 0, defaultLitecoinStaticFeePerKW, 0,
) )

@ -2767,11 +2767,11 @@ type ChannelEdgePolicy struct {
// the node would like to HTLC exchanges. // the node would like to HTLC exchanges.
TimeLockDelta uint16 TimeLockDelta uint16
// MinHTLC is the smallest value HTLC this node will accept, expressed // MinHTLC is the smallest value HTLC this node will forward, expressed
// in millisatoshi. // in millisatoshi.
MinHTLC lnwire.MilliSatoshi MinHTLC lnwire.MilliSatoshi
// MaxHTLC is the largest value HTLC this node will accept, expressed // MaxHTLC is the largest value HTLC this node will forward, expressed
// in millisatoshi. // in millisatoshi.
MaxHTLC lnwire.MilliSatoshi MaxHTLC lnwire.MilliSatoshi

@ -3459,6 +3459,12 @@ var updateChannelPolicyCommand = cli.Command{
Usage: "the CLTV delta that will be applied to all " + Usage: "the CLTV delta that will be applied to all " +
"forwarded HTLCs", "forwarded HTLCs",
}, },
cli.Uint64Flag{
Name: "min_htlc_msat",
Usage: "if set, the min HTLC size that will be applied " +
"to all forwarded HTLCs. If unset, the min HTLC " +
"is left unchanged.",
},
cli.Uint64Flag{ cli.Uint64Flag{
Name: "max_htlc_msat", Name: "max_htlc_msat",
Usage: "if set, the max HTLC size that will be applied " + Usage: "if set, the max HTLC size that will be applied " +
@ -3581,6 +3587,11 @@ func updateChannelPolicy(ctx *cli.Context) error {
MaxHtlcMsat: ctx.Uint64("max_htlc_msat"), MaxHtlcMsat: ctx.Uint64("max_htlc_msat"),
} }
if ctx.IsSet("min_htlc_msat") {
req.MinHtlcMsat = ctx.Uint64("min_htlc_msat")
req.MinHtlcMsatSpecified = true
}
if chanPoint != nil { if chanPoint != nil {
req.Scope = &lnrpc.PolicyUpdateRequest_ChanPoint{ req.Scope = &lnrpc.PolicyUpdateRequest_ChanPoint{
ChanPoint: chanPoint, ChanPoint: chanPoint,

@ -166,7 +166,8 @@ type chainConfig struct {
DefaultNumChanConfs int `long:"defaultchanconfs" description:"The default number of confirmations a channel must have before it's considered open. If this is not set, we will scale the value according to the channel size."` DefaultNumChanConfs int `long:"defaultchanconfs" description:"The default number of confirmations a channel must have before it's considered open. If this is not set, we will scale the value according to the channel size."`
DefaultRemoteDelay int `long:"defaultremotedelay" description:"The default number of blocks we will require our channel counterparty to wait before accessing its funds in case of unilateral close. If this is not set, we will scale the value according to the channel size."` DefaultRemoteDelay int `long:"defaultremotedelay" description:"The default number of blocks we will require our channel counterparty to wait before accessing its funds in case of unilateral close. If this is not set, we will scale the value according to the channel size."`
MinHTLC lnwire.MilliSatoshi `long:"minhtlc" description:"The smallest HTLC we are willing to forward on our channels, in millisatoshi"` MinHTLCIn lnwire.MilliSatoshi `long:"minhtlc" description:"The smallest HTLC we are willing to accept on our channels, in millisatoshi"`
MinHTLCOut lnwire.MilliSatoshi `long:"minhtlcout" description:"The smallest HTLC we are willing to send out on our channels, in millisatoshi"`
BaseFee lnwire.MilliSatoshi `long:"basefee" description:"The base fee in millisatoshi we will charge for forwarding payments on our channels"` BaseFee lnwire.MilliSatoshi `long:"basefee" description:"The base fee in millisatoshi we will charge for forwarding payments on our channels"`
FeeRate lnwire.MilliSatoshi `long:"feerate" description:"The fee rate used when forwarding payments on our channels. The total fee charged is basefee + (amount * feerate / 1000000), where amount is the forwarded amount."` FeeRate lnwire.MilliSatoshi `long:"feerate" description:"The fee rate used when forwarding payments on our channels. The total fee charged is basefee + (amount * feerate / 1000000), where amount is the forwarded amount."`
TimeLockDelta uint32 `long:"timelockdelta" description:"The CLTV delta we will subtract from a forwarded HTLC's timelock value"` TimeLockDelta uint32 `long:"timelockdelta" description:"The CLTV delta we will subtract from a forwarded HTLC's timelock value"`
@ -360,7 +361,8 @@ func loadConfig() (*config, error) {
MaxLogFiles: defaultMaxLogFiles, MaxLogFiles: defaultMaxLogFiles,
MaxLogFileSize: defaultMaxLogFileSize, MaxLogFileSize: defaultMaxLogFileSize,
Bitcoin: &chainConfig{ Bitcoin: &chainConfig{
MinHTLC: defaultBitcoinMinHTLCMSat, MinHTLCIn: defaultBitcoinMinHTLCInMSat,
MinHTLCOut: defaultBitcoinMinHTLCOutMSat,
BaseFee: DefaultBitcoinBaseFeeMSat, BaseFee: DefaultBitcoinBaseFeeMSat,
FeeRate: DefaultBitcoinFeeRate, FeeRate: DefaultBitcoinFeeRate,
TimeLockDelta: DefaultBitcoinTimeLockDelta, TimeLockDelta: DefaultBitcoinTimeLockDelta,
@ -376,7 +378,8 @@ func loadConfig() (*config, error) {
RPCHost: defaultRPCHost, RPCHost: defaultRPCHost,
}, },
Litecoin: &chainConfig{ Litecoin: &chainConfig{
MinHTLC: defaultLitecoinMinHTLCMSat, MinHTLCIn: defaultLitecoinMinHTLCInMSat,
MinHTLCOut: defaultLitecoinMinHTLCOutMSat,
BaseFee: defaultLitecoinBaseFeeMSat, BaseFee: defaultLitecoinBaseFeeMSat,
FeeRate: defaultLitecoinFeeRate, FeeRate: defaultLitecoinFeeRate,
TimeLockDelta: defaultLitecoinTimeLockDelta, TimeLockDelta: defaultLitecoinTimeLockDelta,

@ -285,6 +285,10 @@ type fundingConfig struct {
// initially announcing channels. // initially announcing channels.
DefaultRoutingPolicy htlcswitch.ForwardingPolicy DefaultRoutingPolicy htlcswitch.ForwardingPolicy
// DefaultMinHtlcIn is the default minimum incoming htlc value that is
// set as a channel parameter.
DefaultMinHtlcIn lnwire.MilliSatoshi
// NumRequiredConfs is a function closure that helps the funding // NumRequiredConfs is a function closure that helps the funding
// manager decide how many confirmations it should require for a // manager decide how many confirmations it should require for a
// channel extended to it. The function is able to take into account // channel extended to it. The function is able to take into account
@ -1300,7 +1304,7 @@ func (f *fundingManager) handleFundingOpen(fmsg *fundingOpenMsg) {
chanReserve := f.cfg.RequiredRemoteChanReserve(amt, msg.DustLimit) chanReserve := f.cfg.RequiredRemoteChanReserve(amt, msg.DustLimit)
maxValue := f.cfg.RequiredRemoteMaxValue(amt) maxValue := f.cfg.RequiredRemoteMaxValue(amt)
maxHtlcs := f.cfg.RequiredRemoteMaxHTLCs(amt) maxHtlcs := f.cfg.RequiredRemoteMaxHTLCs(amt)
minHtlc := f.cfg.DefaultRoutingPolicy.MinHTLC minHtlc := f.cfg.DefaultMinHtlcIn
// Once the reservation has been created successfully, we add it to // Once the reservation has been created successfully, we add it to
// this peer's map of pending reservations to track this particular // this peer's map of pending reservations to track this particular
@ -2205,6 +2209,12 @@ func (f *fundingManager) addToRouterGraph(completeChan *channeldb.OpenChannel,
// need to determine the smallest HTLC it deems economically relevant. // need to determine the smallest HTLC it deems economically relevant.
fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC
// We don't necessarily want to go as low as the remote party
// allows. Check it against our default forwarding policy.
if fwdMinHTLC < f.cfg.DefaultRoutingPolicy.MinHTLCOut {
fwdMinHTLC = f.cfg.DefaultRoutingPolicy.MinHTLCOut
}
// We'll obtain the max HTLC value we can forward in our direction, as // We'll obtain the max HTLC value we can forward in our direction, as
// we'll use this value within our ChannelUpdate. This value must be <= // we'll use this value within our ChannelUpdate. This value must be <=
// channel capacity and <= the maximum in-flight msats set by the peer. // channel capacity and <= the maximum in-flight msats set by the peer.
@ -2375,30 +2385,13 @@ func (f *fundingManager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
fndgLog.Infof("Announcing ChannelPoint(%v), short_chan_id=%v", fndgLog.Infof("Announcing ChannelPoint(%v), short_chan_id=%v",
&fundingPoint, shortChanID) &fundingPoint, shortChanID)
// We'll obtain the min HTLC value we can forward in our
// direction, as we'll use this value within our ChannelUpdate.
// This constraint is originally set by the remote node, as it
// will be the one that will need to determine the smallest
// HTLC it deems economically relevant.
fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC
// We'll obtain the max HTLC value we can forward in our
// direction, as we'll use this value within our ChannelUpdate.
// This value must be <= channel capacity and <= the maximum
// in-flight msats set by the peer.
fwdMaxHTLC := completeChan.LocalChanCfg.MaxPendingAmount
capacityMSat := lnwire.NewMSatFromSatoshis(completeChan.Capacity)
if fwdMaxHTLC > capacityMSat {
fwdMaxHTLC = capacityMSat
}
// Create and broadcast the proofs required to make this channel // Create and broadcast the proofs required to make this channel
// public and usable for other nodes for routing. // public and usable for other nodes for routing.
err = f.announceChannel( err = f.announceChannel(
f.cfg.IDKey, completeChan.IdentityPub, f.cfg.IDKey, completeChan.IdentityPub,
completeChan.LocalChanCfg.MultiSigKey.PubKey, completeChan.LocalChanCfg.MultiSigKey.PubKey,
completeChan.RemoteChanCfg.MultiSigKey.PubKey, completeChan.RemoteChanCfg.MultiSigKey.PubKey,
*shortChanID, chanID, fwdMinHTLC, fwdMaxHTLC, *shortChanID, chanID,
) )
if err != nil { if err != nil {
return fmt.Errorf("channel announcement failed: %v", err) return fmt.Errorf("channel announcement failed: %v", err)
@ -2690,15 +2683,18 @@ func (f *fundingManager) newChanAnnouncement(localPubKey, remotePubKey,
// finish, either successfully or with an error. // finish, either successfully or with an error.
func (f *fundingManager) announceChannel(localIDKey, remoteIDKey, localFundingKey, func (f *fundingManager) announceChannel(localIDKey, remoteIDKey, localFundingKey,
remoteFundingKey *btcec.PublicKey, shortChanID lnwire.ShortChannelID, remoteFundingKey *btcec.PublicKey, shortChanID lnwire.ShortChannelID,
chanID lnwire.ChannelID, fwdMinHTLC, fwdMaxHTLC lnwire.MilliSatoshi) error { chanID lnwire.ChannelID) error {
// First, we'll create the batch of announcements to be sent upon // First, we'll create the batch of announcements to be sent upon
// initial channel creation. This includes the channel announcement // initial channel creation. This includes the channel announcement
// itself, the channel update announcement, and our half of the channel // itself, the channel update announcement, and our half of the channel
// proof needed to fully authenticate the channel. // proof needed to fully authenticate the channel.
//
// We can pass in zeroes for the min and max htlc policy, because we
// only use the channel announcement message from the returned struct.
ann, err := f.newChanAnnouncement(localIDKey, remoteIDKey, ann, err := f.newChanAnnouncement(localIDKey, remoteIDKey,
localFundingKey, remoteFundingKey, shortChanID, chanID, localFundingKey, remoteFundingKey, shortChanID, chanID,
fwdMinHTLC, fwdMaxHTLC, 0, 0,
) )
if err != nil { if err != nil {
fndgLog.Errorf("can't generate channel announcement: %v", err) fndgLog.Errorf("can't generate channel announcement: %v", err)
@ -2820,7 +2816,7 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) {
var ( var (
peerKey = msg.peer.IdentityKey() peerKey = msg.peer.IdentityKey()
localAmt = msg.localFundingAmt localAmt = msg.localFundingAmt
minHtlc = msg.minHtlc minHtlcIn = msg.minHtlcIn
remoteCsvDelay = msg.remoteCsvDelay remoteCsvDelay = msg.remoteCsvDelay
) )
@ -2936,8 +2932,8 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) {
} }
// If no minimum HTLC value was specified, use the default one. // If no minimum HTLC value was specified, use the default one.
if minHtlc == 0 { if minHtlcIn == 0 {
minHtlc = f.cfg.DefaultRoutingPolicy.MinHTLC minHtlcIn = f.cfg.DefaultMinHtlcIn
} }
// If a pending channel map for this peer isn't already created, then // If a pending channel map for this peer isn't already created, then
@ -2952,7 +2948,7 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) {
resCtx := &reservationWithCtx{ resCtx := &reservationWithCtx{
chanAmt: capacity, chanAmt: capacity,
remoteCsvDelay: remoteCsvDelay, remoteCsvDelay: remoteCsvDelay,
remoteMinHtlc: minHtlc, remoteMinHtlc: minHtlcIn,
reservation: reservation, reservation: reservation,
peer: msg.peer, peer: msg.peer,
updates: msg.updates, updates: msg.updates,
@ -2986,7 +2982,7 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) {
DustLimit: ourContribution.DustLimit, DustLimit: ourContribution.DustLimit,
MaxValueInFlight: maxValue, MaxValueInFlight: maxValue,
ChannelReserve: chanReserve, ChannelReserve: chanReserve,
HtlcMinimum: minHtlc, HtlcMinimum: minHtlcIn,
FeePerKiloWeight: uint32(commitFeePerKw), FeePerKiloWeight: uint32(commitFeePerKw),
CsvDelay: remoteCsvDelay, CsvDelay: remoteCsvDelay,
MaxAcceptedHTLCs: maxHtlcs, MaxAcceptedHTLCs: maxHtlcs,

@ -336,11 +336,12 @@ func createTestFundingManager(t *testing.T, privKey *btcec.PrivateKey,
return nil, fmt.Errorf("unable to find channel") return nil, fmt.Errorf("unable to find channel")
}, },
DefaultRoutingPolicy: htlcswitch.ForwardingPolicy{ DefaultRoutingPolicy: htlcswitch.ForwardingPolicy{
MinHTLC: 5, MinHTLCOut: 5,
BaseFee: 100, BaseFee: 100,
FeeRate: 1000, FeeRate: 1000,
TimeLockDelta: 10, TimeLockDelta: 10,
}, },
DefaultMinHtlcIn: 5,
NumRequiredConfs: func(chanAmt btcutil.Amount, NumRequiredConfs: func(chanAmt btcutil.Amount,
pushAmt lnwire.MilliSatoshi) uint16 { pushAmt lnwire.MilliSatoshi) uint16 {
return 3 return 3
@ -464,11 +465,12 @@ func recreateAliceFundingManager(t *testing.T, alice *testNode) {
TempChanIDSeed: oldCfg.TempChanIDSeed, TempChanIDSeed: oldCfg.TempChanIDSeed,
FindChannel: oldCfg.FindChannel, FindChannel: oldCfg.FindChannel,
DefaultRoutingPolicy: htlcswitch.ForwardingPolicy{ DefaultRoutingPolicy: htlcswitch.ForwardingPolicy{
MinHTLC: 5, MinHTLCOut: 5,
BaseFee: 100, BaseFee: 100,
FeeRate: 1000, FeeRate: 1000,
TimeLockDelta: 10, TimeLockDelta: 10,
}, },
DefaultMinHtlcIn: 5,
RequiredRemoteMaxValue: oldCfg.RequiredRemoteMaxValue, RequiredRemoteMaxValue: oldCfg.RequiredRemoteMaxValue,
PublishTransaction: func(txn *wire.MsgTx) error { PublishTransaction: func(txn *wire.MsgTx) error {
publishChan <- txn publishChan <- txn
@ -926,7 +928,7 @@ func assertChannelAnnouncements(t *testing.T, alice, bob *testNode,
// _other_ node. // _other_ node.
other := (j + 1) % 2 other := (j + 1) % 2
minHtlc := nodes[other].fundingMgr.cfg. minHtlc := nodes[other].fundingMgr.cfg.
DefaultRoutingPolicy.MinHTLC DefaultMinHtlcIn
// We might expect a custom MinHTLC value. // We might expect a custom MinHTLC value.
if len(customMinHtlc) > 0 { if len(customMinHtlc) > 0 {
@ -2325,7 +2327,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) {
// This is the custom parameters we'll use. // This is the custom parameters we'll use.
const csvDelay = 67 const csvDelay = 67
const minHtlc = 1234 const minHtlcIn = 1234
// We will consume the channel updates as we go, so no buffering is // We will consume the channel updates as we go, so no buffering is
// needed. // needed.
@ -2344,7 +2346,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) {
localFundingAmt: localAmt, localFundingAmt: localAmt,
pushAmt: lnwire.NewMSatFromSatoshis(pushAmt), pushAmt: lnwire.NewMSatFromSatoshis(pushAmt),
private: false, private: false,
minHtlc: minHtlc, minHtlcIn: minHtlcIn,
remoteCsvDelay: csvDelay, remoteCsvDelay: csvDelay,
updates: updateChan, updates: updateChan,
err: errChan, err: errChan,
@ -2381,9 +2383,9 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) {
} }
// Check that the custom minHTLC value is sent. // Check that the custom minHTLC value is sent.
if openChannelReq.HtlcMinimum != minHtlc { if openChannelReq.HtlcMinimum != minHtlcIn {
t.Fatalf("expected OpenChannel to have minHtlc %v, got %v", t.Fatalf("expected OpenChannel to have minHtlc %v, got %v",
minHtlc, openChannelReq.HtlcMinimum) minHtlcIn, openChannelReq.HtlcMinimum)
} }
chanID := openChannelReq.PendingChannelID chanID := openChannelReq.PendingChannelID
@ -2468,7 +2470,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) {
// The minimum HTLC value Alice can offer should be 5, and the minimum // The minimum HTLC value Alice can offer should be 5, and the minimum
// Bob can offer should be 1234. // Bob can offer should be 1234.
if err := assertMinHtlc(resCtx, 5, minHtlc); err != nil { if err := assertMinHtlc(resCtx, 5, minHtlcIn); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -2482,7 +2484,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if err := assertMinHtlc(resCtx, minHtlc, 5); err != nil { if err := assertMinHtlc(resCtx, minHtlcIn, 5); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -2543,7 +2545,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) {
// announcements. Alice should advertise the default MinHTLC value of // announcements. Alice should advertise the default MinHTLC value of
// 5, while bob should advertise the value minHtlc, since Alice // 5, while bob should advertise the value minHtlc, since Alice
// required him to use it. // required him to use it.
assertChannelAnnouncements(t, alice, bob, capacity, 5, minHtlc) assertChannelAnnouncements(t, alice, bob, capacity, 5, minHtlcIn)
// The funding transaction is now confirmed, wait for the // The funding transaction is now confirmed, wait for the
// OpenStatusUpdate_ChanOpen update // OpenStatusUpdate_ChanOpen update

@ -71,10 +71,8 @@ const (
// the error possibly carrying along a ChannelUpdate message that includes the // the error possibly carrying along a ChannelUpdate message that includes the
// latest policy. // latest policy.
type ForwardingPolicy struct { type ForwardingPolicy struct {
// MinHTLC is the smallest HTLC that is to be forwarded. This is // MinHTLC is the smallest HTLC that is to be forwarded.
// set when a channel is first opened, and will be static for the MinHTLCOut lnwire.MilliSatoshi
// lifetime of the channel.
MinHTLC lnwire.MilliSatoshi
// MaxHTLC is the largest HTLC that is to be forwarded. // MaxHTLC is the largest HTLC that is to be forwarded.
MaxHTLC lnwire.MilliSatoshi MaxHTLC lnwire.MilliSatoshi
@ -2218,9 +2216,9 @@ func (l *channelLink) canSendHtlc(policy ForwardingPolicy,
// As our first sanity check, we'll ensure that the passed HTLC isn't // As our first sanity check, we'll ensure that the passed HTLC isn't
// too small for the next hop. If so, then we'll cancel the HTLC // too small for the next hop. If so, then we'll cancel the HTLC
// directly. // directly.
if amt < policy.MinHTLC { if amt < policy.MinHTLCOut {
l.log.Errorf("outgoing htlc(%x) is too small: min_htlc=%v, "+ l.log.Errorf("outgoing htlc(%x) is too small: min_htlc=%v, "+
"htlc_value=%v", payHash[:], policy.MinHTLC, "htlc_value=%v", payHash[:], policy.MinHTLCOut,
amt) amt)
// As part of the returned error, we'll send our latest routing // As part of the returned error, we'll send our latest routing

@ -1694,7 +1694,7 @@ func newSingleLinkTestHarness(chanAmt, chanReserve btcutil.Amount) (
quit: make(chan struct{}), quit: make(chan struct{}),
} }
globalPolicy = ForwardingPolicy{ globalPolicy = ForwardingPolicy{
MinHTLC: lnwire.NewMSatFromSatoshis(5), MinHTLCOut: lnwire.NewMSatFromSatoshis(5),
MaxHTLC: lnwire.NewMSatFromSatoshis(chanAmt), MaxHTLC: lnwire.NewMSatFromSatoshis(chanAmt),
BaseFee: lnwire.NewMSatFromSatoshis(1), BaseFee: lnwire.NewMSatFromSatoshis(1),
TimeLockDelta: 6, TimeLockDelta: 6,
@ -4253,7 +4253,7 @@ func (h *persistentLinkHarness) restartLink(
} }
globalPolicy = ForwardingPolicy{ globalPolicy = ForwardingPolicy{
MinHTLC: lnwire.NewMSatFromSatoshis(5), MinHTLCOut: lnwire.NewMSatFromSatoshis(5),
BaseFee: lnwire.NewMSatFromSatoshis(1), BaseFee: lnwire.NewMSatFromSatoshis(1),
TimeLockDelta: 6, TimeLockDelta: 6,
} }
@ -5512,7 +5512,7 @@ func TestCheckHtlcForward(t *testing.T) {
cfg: ChannelLinkConfig{ cfg: ChannelLinkConfig{
FwrdingPolicy: ForwardingPolicy{ FwrdingPolicy: ForwardingPolicy{
TimeLockDelta: 20, TimeLockDelta: 20,
MinHTLC: 500, MinHTLCOut: 500,
MaxHTLC: 1000, MaxHTLC: 1000,
BaseFee: 10, BaseFee: 10,
}, },

@ -1078,7 +1078,7 @@ func newHopNetwork() *hopNetwork {
defaultDelta := uint32(6) defaultDelta := uint32(6)
globalPolicy := ForwardingPolicy{ globalPolicy := ForwardingPolicy{
MinHTLC: lnwire.NewMSatFromSatoshis(5), MinHTLCOut: lnwire.NewMSatFromSatoshis(5),
BaseFee: lnwire.NewMSatFromSatoshis(1), BaseFee: lnwire.NewMSatFromSatoshis(1),
TimeLockDelta: defaultDelta, TimeLockDelta: defaultDelta,
} }

2
lnd.go

@ -479,7 +479,7 @@ func Main(lisCfg ListenerCfg) error {
// Set up an autopilot manager from the current config. This will be // Set up an autopilot manager from the current config. This will be
// used to manage the underlying autopilot agent, starting and stopping // used to manage the underlying autopilot agent, starting and stopping
// it at will. // it at will.
atplCfg, err := initAutoPilot(server, cfg.Autopilot) atplCfg, err := initAutoPilot(server, cfg.Autopilot, mainChain)
if err != nil { if err != nil {
err := fmt.Errorf("Unable to initialize autopilot: %v", err) err := fmt.Errorf("Unable to initialize autopilot: %v", err)
ltndLog.Error(err) ltndLog.Error(err)

@ -8675,7 +8675,11 @@ type PolicyUpdateRequest struct {
/// The required timelock delta for HTLCs forwarded over the channel. /// The required timelock delta for HTLCs forwarded over the channel.
TimeLockDelta uint32 `protobuf:"varint,5,opt,name=time_lock_delta,proto3" json:"time_lock_delta,omitempty"` TimeLockDelta uint32 `protobuf:"varint,5,opt,name=time_lock_delta,proto3" json:"time_lock_delta,omitempty"`
/// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged. /// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged.
MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,proto3" json:"max_htlc_msat,omitempty"` MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,proto3" json:"max_htlc_msat,omitempty"`
/// The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true.
MinHtlcMsat uint64 `protobuf:"varint,7,opt,name=min_htlc_msat,proto3" json:"min_htlc_msat,omitempty"`
/// If true, min_htlc_msat is applied.
MinHtlcMsatSpecified bool `protobuf:"varint,8,opt,name=min_htlc_msat_specified,json=set_min_htlc_msat,proto3" json:"min_htlc_msat_specified,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -8771,6 +8775,20 @@ func (m *PolicyUpdateRequest) GetMaxHtlcMsat() uint64 {
return 0 return 0
} }
func (m *PolicyUpdateRequest) GetMinHtlcMsat() uint64 {
if m != nil {
return m.MinHtlcMsat
}
return 0
}
func (m *PolicyUpdateRequest) GetMinHtlcMsatSpecified() bool {
if m != nil {
return m.MinHtlcMsatSpecified
}
return false
}
// XXX_OneofWrappers is for the internal use of the proto package. // XXX_OneofWrappers is for the internal use of the proto package.
func (*PolicyUpdateRequest) XXX_OneofWrappers() []interface{} { func (*PolicyUpdateRequest) XXX_OneofWrappers() []interface{} {
return []interface{}{ return []interface{}{
@ -9775,571 +9793,573 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{ var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 9021 bytes of a gzipped FileDescriptorProto // 9047 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x4d, 0x6c, 0x1c, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x4d, 0x6c, 0x1c, 0x49,
0x96, 0x1f, 0xce, 0xfa, 0x20, 0x59, 0xf5, 0xaa, 0x58, 0x2c, 0x06, 0x29, 0xb2, 0x54, 0x2d, 0xa9, 0x96, 0x1f, 0xae, 0xfa, 0x20, 0x59, 0xf5, 0xaa, 0x48, 0x16, 0x83, 0x14, 0x59, 0xaa, 0x96, 0xd4,
0xd9, 0x39, 0x1a, 0x49, 0xad, 0xe9, 0xa1, 0xd4, 0x9c, 0x99, 0xfe, 0xf7, 0x76, 0xff, 0xd7, 0xbb, 0xea, 0x1c, 0x8d, 0xa4, 0xd6, 0xf4, 0x50, 0x6a, 0xce, 0x4c, 0xff, 0x7b, 0xbb, 0xff, 0xeb, 0x5d,
0x14, 0x49, 0x89, 0xea, 0xa6, 0x28, 0x4e, 0x52, 0x1a, 0x79, 0x66, 0x76, 0x51, 0x93, 0xac, 0x0a, 0x8a, 0xa4, 0x44, 0x75, 0x53, 0x14, 0x27, 0x29, 0x8d, 0x3c, 0x33, 0xbb, 0xc8, 0x49, 0x56, 0x05,
0x92, 0x39, 0xaa, 0xca, 0xac, 0xce, 0xcc, 0x22, 0xc5, 0x69, 0xb7, 0x01, 0x1b, 0x86, 0x61, 0xf8, 0xc9, 0x1c, 0x55, 0x65, 0x56, 0x67, 0x66, 0x91, 0xe2, 0xb4, 0xdb, 0x07, 0xc3, 0x30, 0x0c, 0x5f,
0xb2, 0x18, 0x1b, 0x06, 0x6c, 0xc3, 0xc6, 0x02, 0xb3, 0x06, 0x8c, 0x85, 0x0f, 0xf6, 0xc5, 0x80, 0x16, 0x63, 0xc3, 0x80, 0x6d, 0xd8, 0x58, 0x60, 0xd6, 0x80, 0xb1, 0xf0, 0xc1, 0xbe, 0x18, 0xf0,
0xd7, 0x58, 0x9f, 0x7c, 0x58, 0xc0, 0x80, 0xe1, 0x83, 0x0d, 0x18, 0xf0, 0x61, 0x0d, 0xc3, 0x06, 0x1a, 0xeb, 0x93, 0x0f, 0x0b, 0x18, 0x30, 0x7c, 0xb0, 0x01, 0x03, 0x36, 0xb0, 0x86, 0x61, 0x03,
0xec, 0x85, 0xe1, 0x9b, 0x7d, 0x37, 0xde, 0x8b, 0x8f, 0x8c, 0xc8, 0xcc, 0x92, 0xd4, 0x33, 0xe3, 0xf6, 0xc2, 0xf0, 0xcd, 0xbe, 0x1b, 0xef, 0xc5, 0x47, 0x46, 0x64, 0x66, 0x49, 0xea, 0x99, 0xf1,
0x3d, 0xb1, 0xe2, 0x17, 0x91, 0xf1, 0xf9, 0xde, 0x8b, 0x17, 0xef, 0xbd, 0x08, 0x42, 0x3d, 0x1a, 0x9e, 0x58, 0xf1, 0x8b, 0xc8, 0xf8, 0x7c, 0xef, 0xc5, 0x8b, 0xf7, 0x5e, 0x04, 0xa1, 0x19, 0x8f,
0xf7, 0x37, 0xc6, 0x51, 0x98, 0x84, 0x6c, 0x76, 0x18, 0x44, 0xe3, 0x7e, 0xf7, 0xda, 0x69, 0x18, 0xfb, 0xeb, 0xe3, 0x38, 0x4a, 0x23, 0x36, 0x33, 0x0c, 0xe3, 0x71, 0xbf, 0x77, 0xf5, 0x24, 0x8a,
0x9e, 0x0e, 0xf9, 0x3d, 0x6f, 0xec, 0xdf, 0xf3, 0x82, 0x20, 0x4c, 0xbc, 0xc4, 0x0f, 0x83, 0x58, 0x4e, 0x86, 0xfc, 0x9e, 0x3f, 0x0e, 0xee, 0xf9, 0x61, 0x18, 0xa5, 0x7e, 0x1a, 0x44, 0x61, 0x22,
0x14, 0x72, 0x7e, 0x02, 0xad, 0x47, 0x3c, 0x38, 0xe2, 0x7c, 0xe0, 0xf2, 0x2f, 0x26, 0x3c, 0x4e, 0x0a, 0x39, 0x3f, 0x81, 0x85, 0x47, 0x3c, 0x3c, 0xe4, 0x7c, 0xe0, 0xf2, 0x2f, 0x26, 0x3c, 0x49,
0xd8, 0xb7, 0x60, 0xc9, 0xe3, 0x3f, 0xe3, 0x7c, 0xd0, 0x1b, 0x7b, 0x71, 0x3c, 0x3e, 0x8b, 0xbc, 0xd9, 0xb7, 0x60, 0xc9, 0xe7, 0x3f, 0xe3, 0x7c, 0xe0, 0x8d, 0xfd, 0x24, 0x19, 0x9f, 0xc6, 0x7e,
0x98, 0x77, 0x4a, 0xeb, 0xa5, 0x3b, 0x4d, 0xb7, 0x2d, 0x32, 0x0e, 0x35, 0xce, 0xde, 0x83, 0x66, 0xc2, 0xbb, 0x95, 0x1b, 0x95, 0x3b, 0x6d, 0xb7, 0x23, 0x32, 0x0e, 0x34, 0xce, 0xde, 0x83, 0x76,
0x8c, 0x45, 0x79, 0x90, 0x44, 0xe1, 0xf8, 0xb2, 0x53, 0xa6, 0x72, 0x0d, 0xc4, 0x76, 0x05, 0xe4, 0x82, 0x45, 0x79, 0x98, 0xc6, 0xd1, 0xf8, 0xa2, 0x5b, 0xa5, 0x72, 0x2d, 0xc4, 0x76, 0x04, 0xe4,
0x0c, 0x61, 0x51, 0xb7, 0x10, 0x8f, 0xc3, 0x20, 0xe6, 0xec, 0x3e, 0xac, 0xf4, 0xfd, 0xf1, 0x19, 0x0c, 0x61, 0x51, 0xb7, 0x90, 0x8c, 0xa3, 0x30, 0xe1, 0xec, 0x3e, 0xac, 0xf4, 0x83, 0xf1, 0x29,
0x8f, 0x7a, 0xf4, 0xf1, 0x28, 0xe0, 0xa3, 0x30, 0xf0, 0xfb, 0x9d, 0xd2, 0x7a, 0xe5, 0x4e, 0xdd, 0x8f, 0x3d, 0xfa, 0x78, 0x14, 0xf2, 0x51, 0x14, 0x06, 0xfd, 0x6e, 0xe5, 0x46, 0xed, 0x4e, 0xd3,
0x65, 0x22, 0x0f, 0xbf, 0x78, 0x22, 0x73, 0xd8, 0x6d, 0x58, 0xe4, 0x81, 0xc0, 0xf9, 0x80, 0xbe, 0x65, 0x22, 0x0f, 0xbf, 0x78, 0x22, 0x73, 0xd8, 0x6d, 0x58, 0xe4, 0xa1, 0xc0, 0xf9, 0x80, 0xbe,
0x92, 0x4d, 0xb5, 0x52, 0x18, 0x3f, 0x70, 0xfe, 0x46, 0x19, 0x96, 0x1e, 0x07, 0x7e, 0xf2, 0xc2, 0x92, 0x4d, 0x2d, 0x64, 0x30, 0x7e, 0xe0, 0xfc, 0xf5, 0x2a, 0x2c, 0x3d, 0x0e, 0x83, 0xf4, 0x85,
0x1b, 0x0e, 0x79, 0xa2, 0xc6, 0x74, 0x1b, 0x16, 0x2f, 0x08, 0xa0, 0x31, 0x5d, 0x84, 0xd1, 0x40, 0x3f, 0x1c, 0xf2, 0x54, 0x8d, 0xe9, 0x36, 0x2c, 0x9e, 0x13, 0x40, 0x63, 0x3a, 0x8f, 0xe2, 0x81,
0x8e, 0xa8, 0x25, 0xe0, 0x43, 0x89, 0x4e, 0xed, 0x59, 0x79, 0x6a, 0xcf, 0x0a, 0xa7, 0xab, 0x32, 0x1c, 0xd1, 0x82, 0x80, 0x0f, 0x24, 0x3a, 0xb5, 0x67, 0xd5, 0xa9, 0x3d, 0x2b, 0x9d, 0xae, 0xda,
0x65, 0xba, 0x6e, 0xc3, 0x62, 0xc4, 0xfb, 0xe1, 0x39, 0x8f, 0x2e, 0x7b, 0x17, 0x7e, 0x30, 0x08, 0x94, 0xe9, 0xba, 0x0d, 0x8b, 0x31, 0xef, 0x47, 0x67, 0x3c, 0xbe, 0xf0, 0xce, 0x83, 0x70, 0x10,
0x2f, 0x3a, 0xd5, 0xf5, 0xd2, 0x9d, 0x59, 0xb7, 0xa5, 0xe0, 0x17, 0x84, 0xb2, 0x07, 0xb0, 0xd8, 0x9d, 0x77, 0xeb, 0x37, 0x2a, 0x77, 0x66, 0xdc, 0x05, 0x05, 0xbf, 0x20, 0x94, 0x3d, 0x80, 0xc5,
0x3f, 0xf3, 0x82, 0x80, 0x0f, 0x7b, 0xc7, 0x5e, 0xff, 0xe5, 0x64, 0x1c, 0x77, 0x66, 0xd7, 0x4b, 0xfe, 0xa9, 0x1f, 0x86, 0x7c, 0xe8, 0x1d, 0xf9, 0xfd, 0x97, 0x93, 0x71, 0xd2, 0x9d, 0xb9, 0x51,
0x77, 0x1a, 0x9b, 0x57, 0x37, 0x68, 0x55, 0x37, 0xb6, 0xcf, 0xbc, 0xe0, 0x01, 0xe5, 0x1c, 0x05, 0xb9, 0xd3, 0xda, 0xb8, 0xb2, 0x4e, 0xab, 0xba, 0xbe, 0x75, 0xea, 0x87, 0x0f, 0x28, 0xe7, 0x30,
0xde, 0x38, 0x3e, 0x0b, 0x13, 0xb7, 0x25, 0xbf, 0x10, 0x70, 0xec, 0xac, 0x00, 0x33, 0x67, 0x42, 0xf4, 0xc7, 0xc9, 0x69, 0x94, 0xba, 0x0b, 0xf2, 0x0b, 0x01, 0x27, 0xce, 0x0a, 0x30, 0x73, 0x26,
0xcc, 0xbd, 0xf3, 0x4f, 0x4a, 0xb0, 0xfc, 0x3c, 0x18, 0x86, 0xfd, 0x97, 0xbf, 0xe4, 0x14, 0x15, 0xc4, 0xdc, 0x3b, 0xff, 0xb8, 0x02, 0xcb, 0xcf, 0xc3, 0x61, 0xd4, 0x7f, 0xf9, 0x4b, 0x4e, 0x51,
0x8c, 0xa1, 0xfc, 0xb6, 0x63, 0xa8, 0x7c, 0xdd, 0x31, 0xac, 0xc2, 0x8a, 0xdd, 0x59, 0x39, 0x0a, 0xc9, 0x18, 0xaa, 0x6f, 0x3b, 0x86, 0xda, 0xd7, 0x1d, 0xc3, 0x2a, 0xac, 0xd8, 0x9d, 0x95, 0xa3,
0x0e, 0x57, 0xf0, 0xeb, 0x53, 0xae, 0xba, 0xa5, 0x86, 0xf1, 0x3e, 0xb4, 0xfb, 0x93, 0x28, 0xe2, 0xe0, 0x70, 0x19, 0xbf, 0x3e, 0xe1, 0xaa, 0x5b, 0x6a, 0x18, 0xef, 0x43, 0xa7, 0x3f, 0x89, 0x63,
0x41, 0x6e, 0x1c, 0x8b, 0x12, 0xd7, 0x03, 0x79, 0x0f, 0x9a, 0x01, 0xbf, 0x48, 0x8b, 0x49, 0xda, 0x1e, 0x16, 0xc6, 0xb1, 0x28, 0x71, 0x3d, 0x90, 0xf7, 0xa0, 0x1d, 0xf2, 0xf3, 0xac, 0x98, 0xa4,
0x0d, 0xf8, 0x85, 0x2a, 0xe2, 0x74, 0x60, 0x35, 0xdb, 0x8c, 0xec, 0xc0, 0x7f, 0x29, 0x41, 0xf5, 0xdd, 0x90, 0x9f, 0xab, 0x22, 0x4e, 0x17, 0x56, 0xf3, 0xcd, 0xc8, 0x0e, 0xfc, 0x97, 0x0a, 0xd4,
0x79, 0xf2, 0x2a, 0x64, 0x1b, 0x50, 0x4d, 0x2e, 0xc7, 0x82, 0x43, 0x5a, 0x9b, 0x4c, 0x0e, 0x6d, 0x9f, 0xa7, 0xaf, 0x22, 0xb6, 0x0e, 0xf5, 0xf4, 0x62, 0x2c, 0x38, 0x64, 0x61, 0x83, 0xc9, 0xa1,
0x6b, 0x30, 0x88, 0x78, 0x1c, 0x3f, 0xbb, 0x1c, 0x73, 0xb7, 0xe9, 0x89, 0x44, 0x0f, 0xcb, 0xb1, 0x6d, 0x0e, 0x06, 0x31, 0x4f, 0x92, 0x67, 0x17, 0x63, 0xee, 0xb6, 0x7d, 0x91, 0xf0, 0xb0, 0x1c,
0x0e, 0xcc, 0xcb, 0x34, 0x35, 0x58, 0x77, 0x55, 0x92, 0xdd, 0x00, 0xf0, 0x46, 0xe1, 0x24, 0x48, 0xeb, 0xc2, 0x9c, 0x4c, 0x53, 0x83, 0x4d, 0x57, 0x25, 0xd9, 0x75, 0x00, 0x7f, 0x14, 0x4d, 0xc2,
0x7a, 0xb1, 0x97, 0xd0, 0x54, 0x55, 0x5c, 0x03, 0x61, 0xd7, 0xa0, 0x3e, 0x7e, 0xd9, 0x8b, 0xfb, 0xd4, 0x4b, 0xfc, 0x94, 0xa6, 0xaa, 0xe6, 0x1a, 0x08, 0xbb, 0x0a, 0xcd, 0xf1, 0x4b, 0x2f, 0xe9,
0x91, 0x3f, 0x4e, 0x88, 0x6c, 0xea, 0x6e, 0x0a, 0xb0, 0x6f, 0x41, 0x2d, 0x9c, 0x24, 0xe3, 0xd0, 0xc7, 0xc1, 0x38, 0x25, 0xb2, 0x69, 0xba, 0x19, 0xc0, 0xbe, 0x05, 0x8d, 0x68, 0x92, 0x8e, 0xa3,
0x0f, 0x12, 0x49, 0x2a, 0x8b, 0xb2, 0x2f, 0x4f, 0x27, 0xc9, 0x21, 0xc2, 0xae, 0x2e, 0xc0, 0x6e, 0x20, 0x4c, 0x25, 0xa9, 0x2c, 0xca, 0xbe, 0x3c, 0x9d, 0xa4, 0x07, 0x08, 0xbb, 0xba, 0x00, 0xbb,
0xc2, 0x42, 0x3f, 0x0c, 0x4e, 0xfc, 0x68, 0x24, 0x84, 0x41, 0x67, 0x8e, 0x5a, 0xb3, 0x41, 0xe7, 0x09, 0xf3, 0xfd, 0x28, 0x3c, 0x0e, 0xe2, 0x91, 0x10, 0x06, 0xdd, 0x59, 0x6a, 0xcd, 0x06, 0x9d,
0x8f, 0xca, 0xd0, 0x78, 0x16, 0x79, 0x41, 0xec, 0xf5, 0x11, 0xc0, 0xae, 0x27, 0xaf, 0x7a, 0x67, 0x3f, 0xaa, 0x42, 0xeb, 0x59, 0xec, 0x87, 0x89, 0xdf, 0x47, 0x00, 0xbb, 0x9e, 0xbe, 0xf2, 0x4e,
0x5e, 0x7c, 0x46, 0xa3, 0xad, 0xbb, 0x2a, 0xc9, 0x56, 0x61, 0x4e, 0x74, 0x94, 0xc6, 0x54, 0x71, 0xfd, 0xe4, 0x94, 0x46, 0xdb, 0x74, 0x55, 0x92, 0xad, 0xc2, 0xac, 0xe8, 0x28, 0x8d, 0xa9, 0xe6,
0x65, 0x8a, 0x7d, 0x00, 0x4b, 0xc1, 0x64, 0xd4, 0xb3, 0xdb, 0xaa, 0x10, 0xb5, 0xe4, 0x33, 0x70, 0xca, 0x14, 0xfb, 0x00, 0x96, 0xc2, 0xc9, 0xc8, 0xb3, 0xdb, 0xaa, 0x11, 0xb5, 0x14, 0x33, 0x70,
0x02, 0x8e, 0x71, 0xad, 0x45, 0x13, 0x62, 0x84, 0x06, 0xc2, 0x1c, 0x68, 0xca, 0x14, 0xf7, 0x4f, 0x02, 0x8e, 0x70, 0xad, 0x45, 0x13, 0x62, 0x84, 0x06, 0xc2, 0x1c, 0x68, 0xcb, 0x14, 0x0f, 0x4e,
0xcf, 0xc4, 0x30, 0x67, 0x5d, 0x0b, 0xc3, 0x3a, 0x12, 0x7f, 0xc4, 0x7b, 0x71, 0xe2, 0x8d, 0xc6, 0x4e, 0xc5, 0x30, 0x67, 0x5c, 0x0b, 0xc3, 0x3a, 0xd2, 0x60, 0xc4, 0xbd, 0x24, 0xf5, 0x47, 0x63,
0x72, 0x58, 0x06, 0x42, 0xf9, 0x61, 0xe2, 0x0d, 0x7b, 0x27, 0x9c, 0xc7, 0x9d, 0x79, 0x99, 0xaf, 0x39, 0x2c, 0x03, 0xa1, 0xfc, 0x28, 0xf5, 0x87, 0xde, 0x31, 0xe7, 0x49, 0x77, 0x4e, 0xe6, 0x6b,
0x11, 0x76, 0x0b, 0x5a, 0x03, 0x1e, 0x27, 0x3d, 0xb9, 0x28, 0x3c, 0xee, 0xd4, 0x88, 0xf5, 0x33, 0x84, 0xdd, 0x82, 0x85, 0x01, 0x4f, 0x52, 0x4f, 0x2e, 0x0a, 0x4f, 0xba, 0x0d, 0x62, 0xfd, 0x1c,
0x28, 0xd6, 0x13, 0x79, 0x17, 0x3d, 0x9c, 0x00, 0xfe, 0xaa, 0x53, 0x17, 0x7d, 0x4d, 0x11, 0xa4, 0x8a, 0xf5, 0xc4, 0xfe, 0xb9, 0x87, 0x13, 0xc0, 0x5f, 0x75, 0x9b, 0xa2, 0xaf, 0x19, 0x82, 0x94,
0x9c, 0x47, 0x3c, 0x31, 0x66, 0x2f, 0x96, 0x14, 0xea, 0xec, 0x03, 0x33, 0xe0, 0x1d, 0x9e, 0x78, 0xf3, 0x88, 0xa7, 0xc6, 0xec, 0x25, 0x92, 0x42, 0x9d, 0x3d, 0x60, 0x06, 0xbc, 0xcd, 0x53, 0x3f,
0xfe, 0x30, 0x66, 0x1f, 0x41, 0x33, 0x31, 0x0a, 0x93, 0x28, 0x6c, 0x68, 0x72, 0x32, 0x3e, 0x70, 0x18, 0x26, 0xec, 0x23, 0x68, 0xa7, 0x46, 0x61, 0x12, 0x85, 0x2d, 0x4d, 0x4e, 0xc6, 0x07, 0xae,
0xad, 0x72, 0xce, 0x19, 0xd4, 0x1e, 0x72, 0xbe, 0xef, 0x8f, 0xfc, 0x84, 0xad, 0xc2, 0xec, 0x89, 0x55, 0xce, 0x39, 0x85, 0xc6, 0x43, 0xce, 0xf7, 0x82, 0x51, 0x90, 0xb2, 0x55, 0x98, 0x39, 0x0e,
0xff, 0x8a, 0x0b, 0x82, 0xaf, 0xec, 0xcd, 0xb8, 0x22, 0xc9, 0xde, 0x05, 0xa0, 0x1f, 0xbd, 0x91, 0x5e, 0x71, 0x41, 0xf0, 0xb5, 0xdd, 0x4b, 0xae, 0x48, 0xb2, 0x77, 0x01, 0xe8, 0x87, 0x37, 0xd2,
0x26, 0xac, 0xbd, 0x19, 0xb7, 0x4e, 0xd8, 0x13, 0xa4, 0xac, 0x2e, 0xcc, 0x8f, 0x79, 0xd4, 0xe7, 0x84, 0xb5, 0x7b, 0xc9, 0x6d, 0x12, 0xf6, 0x04, 0x29, 0xab, 0x07, 0x73, 0x63, 0x1e, 0xf7, 0xb9,
0x6a, 0xfd, 0xf6, 0x66, 0x5c, 0x05, 0x3c, 0x98, 0x87, 0xd9, 0x21, 0xd6, 0xee, 0xfc, 0xde, 0x2c, 0x5a, 0xbf, 0xdd, 0x4b, 0xae, 0x02, 0x1e, 0xcc, 0xc1, 0xcc, 0x10, 0x6b, 0x77, 0x7e, 0x6f, 0x06,
0x34, 0x8e, 0x78, 0xa0, 0x39, 0x8d, 0x41, 0x15, 0xe7, 0x44, 0x72, 0x17, 0xfd, 0x66, 0xdf, 0x80, 0x5a, 0x87, 0x3c, 0xd4, 0x9c, 0xc6, 0xa0, 0x8e, 0x73, 0x22, 0xb9, 0x8b, 0x7e, 0xb3, 0x6f, 0x40,
0x06, 0xcd, 0x53, 0x9c, 0x44, 0x7e, 0x70, 0x2a, 0x08, 0xfc, 0x41, 0xb9, 0x53, 0x72, 0x01, 0xe1, 0x8b, 0xe6, 0x29, 0x49, 0xe3, 0x20, 0x3c, 0x11, 0x04, 0xfe, 0xa0, 0xda, 0xad, 0xb8, 0x80, 0xf0,
0x23, 0x42, 0x59, 0x1b, 0x2a, 0xde, 0x48, 0x11, 0x38, 0xfe, 0x64, 0x57, 0xa1, 0xe6, 0x8d, 0x12, 0x21, 0xa1, 0xac, 0x03, 0x35, 0x7f, 0xa4, 0x08, 0x1c, 0x7f, 0xb2, 0x2b, 0xd0, 0xf0, 0x47, 0xa9,
0xd1, 0xbd, 0x26, 0xc1, 0xf3, 0xde, 0x28, 0xa1, 0xae, 0xbd, 0x07, 0xcd, 0xb1, 0x77, 0x39, 0x42, 0xe8, 0x5e, 0x9b, 0xe0, 0x39, 0x7f, 0x94, 0x52, 0xd7, 0xde, 0x83, 0xf6, 0xd8, 0xbf, 0x18, 0x21,
0x7e, 0xd6, 0x54, 0xd1, 0x74, 0x1b, 0x12, 0xdb, 0x43, 0xb2, 0xd8, 0x84, 0x65, 0xb3, 0x88, 0x6a, 0x3f, 0x6b, 0xaa, 0x68, 0xbb, 0x2d, 0x89, 0xed, 0x22, 0x59, 0x6c, 0xc0, 0xb2, 0x59, 0x44, 0x35,
0x7c, 0x56, 0x37, 0xbe, 0x64, 0x94, 0x96, 0x7d, 0xb8, 0x0d, 0x8b, 0xea, 0x9b, 0x48, 0x8c, 0x87, 0x3e, 0xa3, 0x1b, 0x5f, 0x32, 0x4a, 0xcb, 0x3e, 0xdc, 0x86, 0x45, 0xf5, 0x4d, 0x2c, 0xc6, 0x43,
0x68, 0xa5, 0xee, 0xb6, 0x24, 0xac, 0x46, 0x79, 0x07, 0xda, 0x27, 0x7e, 0xe0, 0x0d, 0x7b, 0xfd, 0xb4, 0xd2, 0x74, 0x17, 0x24, 0xac, 0x46, 0x79, 0x07, 0x3a, 0xc7, 0x41, 0xe8, 0x0f, 0xbd, 0xfe,
0x61, 0x72, 0xde, 0x1b, 0xf0, 0x61, 0xe2, 0x11, 0xd5, 0xcc, 0xba, 0x2d, 0xc2, 0xb7, 0x87, 0xc9, 0x30, 0x3d, 0xf3, 0x06, 0x7c, 0x98, 0xfa, 0x44, 0x35, 0x33, 0xee, 0x02, 0xe1, 0x5b, 0xc3, 0xf4,
0xf9, 0x0e, 0xa2, 0xec, 0x03, 0xa8, 0x9f, 0x70, 0xde, 0xa3, 0xc9, 0xea, 0xd4, 0x2c, 0x0e, 0x54, 0x6c, 0x1b, 0x51, 0xf6, 0x01, 0x34, 0x8f, 0x39, 0xf7, 0x68, 0xb2, 0xba, 0x0d, 0x8b, 0x03, 0xd5,
0x2b, 0xe4, 0xd6, 0x4e, 0xd4, 0x5a, 0x7d, 0x00, 0xed, 0x70, 0x92, 0x9c, 0x86, 0x7e, 0x70, 0xda, 0x0a, 0xb9, 0x8d, 0x63, 0xb5, 0x56, 0x1f, 0x40, 0x27, 0x9a, 0xa4, 0x27, 0x51, 0x10, 0x9e, 0x78,
0x43, 0x99, 0xd7, 0xf3, 0x07, 0x44, 0x45, 0xd5, 0x07, 0xe5, 0xfb, 0x25, 0xb7, 0xa5, 0xf2, 0x50, 0x28, 0xf3, 0xbc, 0x60, 0x40, 0x54, 0x54, 0x7f, 0x50, 0xbd, 0x5f, 0x71, 0x17, 0x54, 0x1e, 0x4a,
0xfa, 0x3c, 0x1e, 0xb0, 0x5b, 0xb0, 0x38, 0xf4, 0xe2, 0xa4, 0x77, 0x16, 0x8e, 0x7b, 0xe3, 0xc9, 0x9f, 0xc7, 0x03, 0x76, 0x0b, 0x16, 0x87, 0x7e, 0x92, 0x7a, 0xa7, 0xd1, 0xd8, 0x1b, 0x4f, 0x8e,
0xf1, 0x4b, 0x7e, 0xd9, 0x59, 0xa0, 0x89, 0x58, 0x40, 0x78, 0x2f, 0x1c, 0x1f, 0x12, 0xc8, 0xae, 0x5e, 0xf2, 0x8b, 0xee, 0x3c, 0x4d, 0xc4, 0x3c, 0xc2, 0xbb, 0xd1, 0xf8, 0x80, 0x40, 0x76, 0x0d,
0x03, 0x50, 0x3f, 0x45, 0x27, 0x60, 0xbd, 0x74, 0x67, 0xc1, 0xad, 0x23, 0x22, 0x1a, 0xfd, 0x21, 0x80, 0xfa, 0x29, 0x3a, 0x01, 0x37, 0x2a, 0x77, 0xe6, 0xdd, 0x26, 0x22, 0xa2, 0xd1, 0x1f, 0xc2,
0x2c, 0xd3, 0xf2, 0xf4, 0x27, 0x71, 0x12, 0x8e, 0x7a, 0x28, 0xaf, 0xa3, 0x41, 0xdc, 0x69, 0x10, 0x32, 0x2d, 0x4f, 0x7f, 0x92, 0xa4, 0xd1, 0xc8, 0x43, 0x79, 0x1d, 0x0f, 0x92, 0x6e, 0x8b, 0x68,
0xad, 0xbd, 0x2f, 0x3b, 0x6b, 0xac, 0xf1, 0xc6, 0x0e, 0x8f, 0x93, 0x6d, 0x2a, 0xec, 0x8a, 0xb2, 0xed, 0x7d, 0xd9, 0x59, 0x63, 0x8d, 0xd7, 0xb7, 0x79, 0x92, 0x6e, 0x51, 0x61, 0x57, 0x94, 0xc5,
0xb8, 0xa9, 0x5f, 0xba, 0x4b, 0x83, 0x2c, 0xce, 0x3e, 0x00, 0xe6, 0x0d, 0x87, 0xe1, 0x45, 0x2f, 0x4d, 0xfd, 0xc2, 0x5d, 0x1a, 0xe4, 0x71, 0xf6, 0x01, 0x30, 0x7f, 0x38, 0x8c, 0xce, 0xbd, 0x84,
0xe6, 0xc3, 0x93, 0x9e, 0x9c, 0xc4, 0x4e, 0x6b, 0xbd, 0x74, 0xa7, 0xe6, 0xb6, 0x29, 0xe7, 0x88, 0x0f, 0x8f, 0x3d, 0x39, 0x89, 0xdd, 0x85, 0x1b, 0x95, 0x3b, 0x0d, 0xb7, 0x43, 0x39, 0x87, 0x7c,
0x0f, 0x4f, 0x0e, 0x05, 0xde, 0xdd, 0x81, 0xd5, 0xe2, 0xaa, 0x91, 0x38, 0x70, 0x74, 0x48, 0x54, 0x78, 0x7c, 0x20, 0xf0, 0xde, 0x36, 0xac, 0x96, 0x57, 0x8d, 0xc4, 0x81, 0xa3, 0x43, 0xa2, 0xaa,
0x55, 0x17, 0x7f, 0xb2, 0x15, 0x98, 0x3d, 0xf7, 0x86, 0x13, 0x2e, 0xe5, 0xb3, 0x48, 0x7c, 0x52, 0xbb, 0xf8, 0x93, 0xad, 0xc0, 0xcc, 0x99, 0x3f, 0x9c, 0x70, 0x29, 0x9f, 0x45, 0xe2, 0x93, 0xea,
0xfe, 0xb8, 0xe4, 0xfc, 0x8b, 0x12, 0x34, 0x45, 0x6f, 0xa5, 0x5e, 0x71, 0x13, 0x16, 0xd4, 0xaa, 0xc7, 0x15, 0xe7, 0x9f, 0x57, 0xa0, 0x2d, 0x7a, 0x2b, 0xf5, 0x8a, 0x9b, 0x30, 0xaf, 0x56, 0x95,
0xf2, 0x28, 0x0a, 0x23, 0x29, 0xa6, 0x6c, 0x90, 0xdd, 0x85, 0xb6, 0x02, 0xc6, 0x11, 0xf7, 0x47, 0xc7, 0x71, 0x14, 0x4b, 0x31, 0x65, 0x83, 0xec, 0x2e, 0x74, 0x14, 0x30, 0x8e, 0x79, 0x30, 0xf2,
0xde, 0xa9, 0xaa, 0x3b, 0x87, 0xb3, 0xcd, 0xb4, 0xc6, 0x28, 0x9c, 0x24, 0x5c, 0xee, 0x60, 0x4d, 0x4f, 0x54, 0xdd, 0x05, 0x9c, 0x6d, 0x64, 0x35, 0xc6, 0xd1, 0x24, 0xe5, 0x72, 0x07, 0x6b, 0xcb,
0x39, 0x57, 0x2e, 0x62, 0xae, 0x5d, 0x04, 0xc5, 0x54, 0x01, 0xc9, 0x5a, 0x98, 0xf3, 0x77, 0x4a, 0xb9, 0x72, 0x11, 0x73, 0xed, 0x22, 0x28, 0xa6, 0x4a, 0x48, 0xd6, 0xc2, 0x9c, 0xbf, 0x5d, 0x01,
0xc0, 0xb0, 0xeb, 0xcf, 0x42, 0x51, 0x85, 0xa4, 0xb6, 0x2c, 0xb5, 0x97, 0xde, 0x9a, 0xda, 0xcb, 0x86, 0x5d, 0x7f, 0x16, 0x89, 0x2a, 0x24, 0xb5, 0xe5, 0xa9, 0xbd, 0xf2, 0xd6, 0xd4, 0x5e, 0x7d,
0xaf, 0xa3, 0x76, 0x07, 0x66, 0x45, 0xef, 0xab, 0x05, 0xbd, 0x17, 0x59, 0x9f, 0x55, 0x6b, 0x95, 0x1d, 0xb5, 0x3b, 0x30, 0x23, 0x7a, 0x5f, 0x2f, 0xe9, 0xbd, 0xc8, 0xfa, 0xac, 0xde, 0xa8, 0x75,
0x76, 0xd5, 0xf9, 0x4f, 0x15, 0x58, 0xd9, 0x16, 0x5b, 0xf0, 0x56, 0xbf, 0xcf, 0xc7, 0x9a, 0x0f, 0xea, 0xce, 0x7f, 0xac, 0xc1, 0xca, 0x96, 0xd8, 0x82, 0x37, 0xfb, 0x7d, 0x3e, 0xd6, 0x7c, 0xf0,
0xde, 0x85, 0x46, 0x10, 0x0e, 0xb8, 0xa2, 0x3e, 0xd1, 0x31, 0x40, 0xc8, 0x20, 0xbd, 0x33, 0xcf, 0x2e, 0xb4, 0xc2, 0x68, 0xc0, 0x15, 0xf5, 0x89, 0x8e, 0x01, 0x42, 0x06, 0xe9, 0x9d, 0xfa, 0x41,
0x0f, 0x44, 0xc7, 0xc5, 0x7c, 0xd6, 0x09, 0xa1, 0x6e, 0xdf, 0x82, 0xc5, 0x31, 0x0f, 0x06, 0x26, 0x28, 0x3a, 0x2e, 0xe6, 0xb3, 0x49, 0x08, 0x75, 0xfb, 0x16, 0x2c, 0x8e, 0x79, 0x38, 0x30, 0xc9,
0xb9, 0x0b, 0x25, 0x69, 0x41, 0xc2, 0x92, 0xd2, 0xdf, 0x85, 0xc6, 0xc9, 0x44, 0x94, 0x43, 0x21, 0x5d, 0x28, 0x49, 0xf3, 0x12, 0x96, 0x94, 0xfe, 0x2e, 0xb4, 0x8e, 0x27, 0xa2, 0x1c, 0x0a, 0x89,
0x51, 0x25, 0x3a, 0x00, 0x09, 0x6d, 0x09, 0x59, 0x31, 0x9e, 0xc4, 0x67, 0x94, 0x3b, 0x4b, 0xb9, 0x3a, 0xd1, 0x01, 0x48, 0x68, 0x53, 0xc8, 0x8a, 0xf1, 0x24, 0x39, 0xa5, 0xdc, 0x19, 0xca, 0x9d,
0xf3, 0x98, 0xc6, 0xac, 0xeb, 0x00, 0x83, 0x49, 0x9c, 0x48, 0xea, 0x9f, 0xa3, 0xcc, 0x3a, 0x22, 0xc3, 0x34, 0x66, 0x5d, 0x03, 0x18, 0x4c, 0x92, 0x54, 0x52, 0xff, 0x2c, 0x65, 0x36, 0x11, 0x11,
0x82, 0xfa, 0xbf, 0x0d, 0xcb, 0x23, 0xef, 0x55, 0x8f, 0xe8, 0xa7, 0xe7, 0x07, 0xbd, 0x93, 0x21, 0xd4, 0xff, 0x6d, 0x58, 0x1e, 0xf9, 0xaf, 0x3c, 0xa2, 0x1f, 0x2f, 0x08, 0xbd, 0xe3, 0x21, 0xed,
0xed, 0x22, 0xf3, 0x54, 0xae, 0x3d, 0xf2, 0x5e, 0xfd, 0x00, 0x73, 0x1e, 0x07, 0x0f, 0x09, 0x47, 0x22, 0x73, 0x54, 0xae, 0x33, 0xf2, 0x5f, 0xfd, 0x00, 0x73, 0x1e, 0x87, 0x0f, 0x09, 0x47, 0x11,
0x11, 0xa1, 0xd4, 0x97, 0x88, 0xc7, 0x3c, 0x3a, 0xe7, 0xc4, 0xd5, 0x55, 0xad, 0xa3, 0xb8, 0x02, 0xa1, 0xd4, 0x97, 0x98, 0x27, 0x3c, 0x3e, 0xe3, 0xc4, 0xd5, 0x75, 0xad, 0xa3, 0xb8, 0x02, 0xc5,
0xc5, 0x1e, 0x8d, 0x70, 0xdc, 0xc9, 0xb0, 0x2f, 0x58, 0xd8, 0x9d, 0x1f, 0xf9, 0xc1, 0x5e, 0x32, 0x1e, 0x8d, 0x70, 0xdc, 0xe9, 0xb0, 0x2f, 0x58, 0xd8, 0x9d, 0x1b, 0x05, 0xe1, 0x6e, 0x3a, 0xec,
0xec, 0xb3, 0x6b, 0x00, 0x28, 0x13, 0xc6, 0x3c, 0xea, 0xbd, 0xbc, 0x20, 0x7e, 0xac, 0x92, 0x0c, 0xb3, 0xab, 0x00, 0x28, 0x13, 0xc6, 0x3c, 0xf6, 0x5e, 0x9e, 0x13, 0x3f, 0xd6, 0x49, 0x06, 0x1c,
0x38, 0xe4, 0xd1, 0xe7, 0x17, 0xec, 0x1d, 0xa8, 0xf7, 0x63, 0x12, 0x2a, 0xde, 0x65, 0xa7, 0x41, 0xf0, 0xf8, 0xf3, 0x73, 0xf6, 0x0e, 0x34, 0xfb, 0x09, 0x09, 0x15, 0xff, 0xa2, 0xdb, 0x22, 0x66,
0xcc, 0x5a, 0xeb, 0xc7, 0x28, 0x4e, 0xbc, 0x4b, 0x64, 0x28, 0xec, 0xad, 0x47, 0xab, 0xc0, 0x07, 0x6d, 0xf4, 0x13, 0x14, 0x27, 0xfe, 0x05, 0x32, 0x14, 0xf6, 0xd6, 0xa7, 0x55, 0xe0, 0x03, 0xaa,
0x54, 0x7d, 0x4c, 0xd2, 0x71, 0x81, 0x3a, 0xbb, 0x25, 0x33, 0xb0, 0x9d, 0x98, 0x7d, 0x03, 0x16, 0x3e, 0x21, 0xe9, 0x38, 0x4f, 0x9d, 0xdd, 0x94, 0x19, 0xd8, 0x4e, 0xc2, 0xbe, 0x01, 0xf3, 0xaa,
0x54, 0x67, 0x4f, 0x86, 0xde, 0x69, 0x4c, 0xe2, 0x61, 0xc1, 0x6d, 0x4a, 0xf0, 0x21, 0x62, 0xce, 0xb3, 0xc7, 0x43, 0xff, 0x24, 0x21, 0xf1, 0x30, 0xef, 0xb6, 0x25, 0xf8, 0x10, 0x31, 0xe7, 0x85,
0x0b, 0xa1, 0x34, 0x19, 0x6b, 0x2b, 0xf9, 0x06, 0xb7, 0x6f, 0x42, 0x68, 0x5d, 0x6b, 0xae, 0x4c, 0x50, 0x9a, 0x8c, 0xb5, 0x95, 0x7c, 0x83, 0xdb, 0x37, 0x21, 0xb4, 0xae, 0x0d, 0x57, 0xa6, 0xca,
0x15, 0x2d, 0x5a, 0xb9, 0x60, 0xd1, 0x9c, 0x5f, 0x94, 0xa0, 0x29, 0x6b, 0x26, 0x4d, 0x83, 0xdd, 0x16, 0xad, 0x5a, 0xb2, 0x68, 0xce, 0x2f, 0x2a, 0xd0, 0x96, 0x35, 0x93, 0xa6, 0xc1, 0xee, 0x03,
0x07, 0xa6, 0x56, 0x31, 0x79, 0xe5, 0x0f, 0x7a, 0xc7, 0x97, 0x09, 0x8f, 0x05, 0xd1, 0xec, 0xcd, 0x53, 0xab, 0x98, 0xbe, 0x0a, 0x06, 0xde, 0xd1, 0x45, 0xca, 0x13, 0x41, 0x34, 0xbb, 0x97, 0xdc,
0xb8, 0x05, 0x79, 0x28, 0x0f, 0x2d, 0x34, 0x4e, 0x22, 0x41, 0xd3, 0x7b, 0x33, 0x6e, 0x2e, 0x07, 0x92, 0x3c, 0x94, 0x87, 0x16, 0x9a, 0xa4, 0xb1, 0xa0, 0xe9, 0xdd, 0x4b, 0x6e, 0x21, 0x07, 0x59,
0x59, 0x0c, 0x75, 0x99, 0x49, 0xd2, 0xf3, 0x83, 0x01, 0x7f, 0x45, 0xa4, 0xb4, 0xe0, 0x5a, 0xd8, 0x0c, 0x75, 0x99, 0x49, 0xea, 0x05, 0xe1, 0x80, 0xbf, 0x22, 0x52, 0x9a, 0x77, 0x2d, 0xec, 0xc1,
0x83, 0x16, 0x34, 0xcd, 0xef, 0x9c, 0x9f, 0x42, 0x4d, 0x69, 0x42, 0xa4, 0x05, 0x64, 0xfa, 0xe5, 0x02, 0xb4, 0xcd, 0xef, 0x9c, 0x9f, 0x42, 0x43, 0x69, 0x42, 0xa4, 0x05, 0xe4, 0xfa, 0xe5, 0x1a,
0x1a, 0x08, 0xeb, 0x42, 0xcd, 0xee, 0x85, 0x5b, 0xfb, 0x3a, 0x6d, 0x3b, 0x7f, 0x01, 0xda, 0xfb, 0x08, 0xeb, 0x41, 0xc3, 0xee, 0x85, 0xdb, 0xf8, 0x3a, 0x6d, 0x3b, 0x7f, 0x01, 0x3a, 0x7b, 0x48,
0x48, 0x44, 0x01, 0x12, 0xad, 0x54, 0xef, 0x56, 0x61, 0xce, 0x60, 0x9e, 0xba, 0x2b, 0x53, 0xb8, 0x44, 0x21, 0x12, 0xad, 0x54, 0xef, 0x56, 0x61, 0xd6, 0x60, 0x9e, 0xa6, 0x2b, 0x53, 0xb8, 0x8f,
0x8f, 0x9e, 0x85, 0x71, 0x22, 0xdb, 0xa1, 0xdf, 0xce, 0x9f, 0x94, 0x80, 0xed, 0xc6, 0x89, 0x3f, 0x9e, 0x46, 0x49, 0x2a, 0xdb, 0xa1, 0xdf, 0xce, 0x9f, 0x54, 0x80, 0xed, 0x24, 0x69, 0x30, 0xf2,
0xf2, 0x12, 0xfe, 0x90, 0x6b, 0xf1, 0xf0, 0x14, 0x9a, 0x58, 0xdb, 0xb3, 0x70, 0x4b, 0x28, 0x5b, 0x53, 0xfe, 0x90, 0x6b, 0xf1, 0xf0, 0x14, 0xda, 0x58, 0xdb, 0xb3, 0x68, 0x53, 0x28, 0x5b, 0x42,
0x42, 0x49, 0xf8, 0x96, 0x64, 0xe7, 0xfc, 0x07, 0x1b, 0x66, 0x69, 0x21, 0xba, 0xad, 0x0a, 0x90, 0x49, 0xf8, 0x96, 0x64, 0xe7, 0xe2, 0x07, 0xeb, 0x66, 0x69, 0x21, 0xba, 0xad, 0x0a, 0x90, 0xdb,
0xdb, 0x12, 0x2f, 0x3a, 0xe5, 0x09, 0x69, 0x62, 0x52, 0x8f, 0x07, 0x01, 0x6d, 0x87, 0xc1, 0x49, 0x52, 0x3f, 0x3e, 0xe1, 0x29, 0x69, 0x62, 0x52, 0x8f, 0x07, 0x01, 0x6d, 0x45, 0xe1, 0x71, 0xef,
0xf7, 0xb7, 0x60, 0x29, 0x57, 0x87, 0x29, 0xa3, 0xeb, 0x05, 0x32, 0xba, 0x62, 0xca, 0xe8, 0x3e, 0xb7, 0x60, 0xa9, 0x50, 0x87, 0x29, 0xa3, 0x9b, 0x25, 0x32, 0xba, 0x66, 0xca, 0xe8, 0x3e, 0x2c,
0x2c, 0x5b, 0xfd, 0x92, 0x14, 0xd7, 0x81, 0x79, 0x64, 0x0c, 0xdc, 0xf0, 0x4b, 0x62, 0xc3, 0x97, 0x5b, 0xfd, 0x92, 0x14, 0xd7, 0x85, 0x39, 0x64, 0x0c, 0xdc, 0xf0, 0x2b, 0x62, 0xc3, 0x97, 0x49,
0x49, 0xb6, 0x09, 0x2b, 0x27, 0x9c, 0x47, 0x5e, 0x42, 0x49, 0x62, 0x1d, 0x5c, 0x13, 0x59, 0x73, 0xb6, 0x01, 0x2b, 0xc7, 0x9c, 0xc7, 0x7e, 0x4a, 0x49, 0x62, 0x1d, 0x5c, 0x13, 0x59, 0x73, 0x69,
0x61, 0x9e, 0xf3, 0x5f, 0x4b, 0xb0, 0x88, 0xd2, 0xf4, 0x89, 0x17, 0x5c, 0xaa, 0xb9, 0xda, 0x2f, 0x9e, 0xf3, 0x5f, 0x2b, 0xb0, 0x88, 0xd2, 0xf4, 0x89, 0x1f, 0x5e, 0xa8, 0xb9, 0xda, 0x2b, 0x9d,
0x9c, 0xab, 0x3b, 0xc6, 0x26, 0x67, 0x94, 0xfe, 0xba, 0x13, 0x55, 0xc9, 0x4e, 0x14, 0x5b, 0x87, 0xab, 0x3b, 0xc6, 0x26, 0x67, 0x94, 0xfe, 0xba, 0x13, 0x55, 0xcb, 0x4f, 0x14, 0xbb, 0x01, 0x6d,
0xa6, 0xd5, 0xdd, 0x59, 0xa1, 0x59, 0xc6, 0x5e, 0x72, 0xc8, 0xa3, 0x07, 0x97, 0x09, 0xff, 0xd5, 0xab, 0xbb, 0x33, 0x42, 0xb3, 0x4c, 0xfc, 0xf4, 0x80, 0xc7, 0x0f, 0x2e, 0x52, 0xfe, 0xab, 0x4f,
0xa7, 0xf2, 0x16, 0xb4, 0xd3, 0x6e, 0xcb, 0x79, 0x64, 0x50, 0x45, 0xc2, 0x94, 0x15, 0xd0, 0x6f, 0xe5, 0x2d, 0xe8, 0x64, 0xdd, 0x96, 0xf3, 0xc8, 0xa0, 0x8e, 0x84, 0x29, 0x2b, 0xa0, 0xdf, 0xce,
0xe7, 0x1f, 0x94, 0x44, 0xc1, 0xed, 0xd0, 0xd7, 0x5a, 0x27, 0x16, 0x44, 0xe5, 0x55, 0x15, 0xc4, 0xdf, 0xaf, 0x88, 0x82, 0x5b, 0x51, 0xa0, 0xb5, 0x4e, 0x2c, 0x88, 0xca, 0xab, 0x2a, 0x88, 0xbf,
0xdf, 0x53, 0xb5, 0xf6, 0x5f, 0x7d, 0xb0, 0x28, 0x13, 0x63, 0x1e, 0x0c, 0x7a, 0xde, 0x70, 0x48, 0xa7, 0x6a, 0xed, 0xbf, 0xfa, 0x60, 0x51, 0x26, 0x26, 0x3c, 0x1c, 0x78, 0xfe, 0x70, 0x48, 0x82,
0x82, 0xb8, 0xe6, 0xce, 0x63, 0x7a, 0x6b, 0x38, 0x74, 0x6e, 0xc3, 0x92, 0xd1, 0xbb, 0xd7, 0x8c, 0xb8, 0xe1, 0xce, 0x61, 0x7a, 0x73, 0x38, 0x74, 0x6e, 0xc3, 0x92, 0xd1, 0xbb, 0xd7, 0x8c, 0x63,
0xe3, 0x00, 0xd8, 0xbe, 0x1f, 0x27, 0xcf, 0x83, 0x78, 0x6c, 0x28, 0x64, 0xef, 0x40, 0x1d, 0xa5, 0x1f, 0xd8, 0x5e, 0x90, 0xa4, 0xcf, 0xc3, 0x64, 0x6c, 0x28, 0x64, 0xef, 0x40, 0x13, 0xa5, 0x2d,
0x2d, 0xf6, 0x4c, 0x70, 0xee, 0xac, 0x8b, 0xe2, 0x17, 0xfb, 0x15, 0x53, 0xa6, 0xf7, 0x4a, 0x66, 0xf6, 0x4c, 0x70, 0xee, 0x8c, 0x8b, 0xe2, 0x17, 0xfb, 0x95, 0x50, 0xa6, 0xff, 0x4a, 0x66, 0x56,
0x96, 0x65, 0xa6, 0xf7, 0x8a, 0x32, 0x9d, 0x8f, 0x61, 0xd9, 0xaa, 0x4f, 0x36, 0xfd, 0x1e, 0xcc, 0x65, 0xa6, 0xff, 0x8a, 0x32, 0x9d, 0x8f, 0x61, 0xd9, 0xaa, 0x4f, 0x36, 0xfd, 0x1e, 0xcc, 0x4c,
0x4e, 0x92, 0x57, 0xa1, 0x52, 0xb9, 0x1b, 0x92, 0x42, 0xf0, 0x70, 0xe7, 0x8a, 0x1c, 0xe7, 0x53, 0xd2, 0x57, 0x91, 0x52, 0xb9, 0x5b, 0x92, 0x42, 0xf0, 0x70, 0xe7, 0x8a, 0x1c, 0xe7, 0x53, 0x58,
0x58, 0x3a, 0xe0, 0x17, 0x92, 0x91, 0x55, 0x47, 0x6e, 0xbd, 0xf1, 0xe0, 0x47, 0xf9, 0xce, 0x06, 0xda, 0xe7, 0xe7, 0x92, 0x91, 0x55, 0x47, 0x6e, 0xbd, 0xf1, 0xe0, 0x47, 0xf9, 0xce, 0x3a, 0x30,
0x30, 0xf3, 0xe3, 0x94, 0x01, 0xd4, 0x31, 0xb0, 0x64, 0x1d, 0x03, 0x9d, 0x5b, 0xc0, 0x8e, 0xfc, 0xf3, 0xe3, 0x8c, 0x01, 0xd4, 0x31, 0xb0, 0x62, 0x1d, 0x03, 0x9d, 0x5b, 0xc0, 0x0e, 0x83, 0x93,
0xd3, 0xe0, 0x09, 0x8f, 0x63, 0xef, 0x54, 0xb3, 0x7e, 0x1b, 0x2a, 0xa3, 0xf8, 0x54, 0x8a, 0x2a, 0xf0, 0x09, 0x4f, 0x12, 0xff, 0x44, 0xb3, 0x7e, 0x07, 0x6a, 0xa3, 0xe4, 0x44, 0x8a, 0x2a, 0xfc,
0xfc, 0xe9, 0x7c, 0x07, 0x96, 0xad, 0x72, 0xb2, 0xe2, 0x6b, 0x50, 0x8f, 0xfd, 0xd3, 0xc0, 0x4b, 0xe9, 0x7c, 0x07, 0x96, 0xad, 0x72, 0xb2, 0xe2, 0xab, 0xd0, 0x4c, 0x82, 0x93, 0xd0, 0x4f, 0x27,
0x26, 0x11, 0x97, 0x55, 0xa7, 0x80, 0xf3, 0x10, 0x56, 0x7e, 0xc0, 0x23, 0xff, 0xe4, 0xf2, 0x4d, 0x31, 0x97, 0x55, 0x67, 0x80, 0xf3, 0x10, 0x56, 0x7e, 0xc0, 0xe3, 0xe0, 0xf8, 0xe2, 0x4d, 0xd5,
0xd5, 0xdb, 0xf5, 0x94, 0xb3, 0xf5, 0xec, 0xc2, 0x95, 0x4c, 0x3d, 0xb2, 0x79, 0x41, 0xbe, 0x72, 0xdb, 0xf5, 0x54, 0xf3, 0xf5, 0xec, 0xc0, 0xe5, 0x5c, 0x3d, 0xb2, 0x79, 0x41, 0xbe, 0x72, 0x25,
0x25, 0x6b, 0xae, 0x48, 0x18, 0xb2, 0xaf, 0x6c, 0xca, 0x3e, 0xe7, 0x39, 0xb0, 0xed, 0x30, 0x08, 0x1b, 0xae, 0x48, 0x18, 0xb2, 0xaf, 0x6a, 0xca, 0x3e, 0xe7, 0x39, 0xb0, 0xad, 0x28, 0x0c, 0x79,
0x78, 0x3f, 0x39, 0xe4, 0x3c, 0x4a, 0x2d, 0x50, 0x29, 0xad, 0x36, 0x36, 0xd7, 0xe4, 0xcc, 0x66, 0x3f, 0x3d, 0xe0, 0x3c, 0xce, 0x2c, 0x50, 0x19, 0xad, 0xb6, 0x36, 0xd6, 0xe4, 0xcc, 0xe6, 0x05,
0x05, 0xaa, 0x24, 0x62, 0x06, 0xd5, 0x31, 0x8f, 0x46, 0x54, 0x71, 0xcd, 0xa5, 0xdf, 0xce, 0x15, 0xaa, 0x24, 0x62, 0x06, 0xf5, 0x31, 0x8f, 0x47, 0x54, 0x71, 0xc3, 0xa5, 0xdf, 0xce, 0x65, 0x58,
0x58, 0xb6, 0xaa, 0x95, 0x67, 0xf6, 0x0f, 0xe1, 0xca, 0x8e, 0x1f, 0xf7, 0xf3, 0x0d, 0x76, 0x60, 0xb6, 0xaa, 0x95, 0x67, 0xf6, 0x0f, 0xe1, 0xf2, 0x76, 0x90, 0xf4, 0x8b, 0x0d, 0x76, 0x61, 0x6e,
0x7e, 0x3c, 0x39, 0xee, 0xa5, 0x9c, 0xa8, 0x92, 0x78, 0x8c, 0xcb, 0x7e, 0x22, 0x2b, 0xfb, 0xeb, 0x3c, 0x39, 0xf2, 0x32, 0x4e, 0x54, 0x49, 0x3c, 0xc6, 0xe5, 0x3f, 0x91, 0x95, 0xfd, 0xb5, 0x0a,
0x25, 0xa8, 0xee, 0x3d, 0xdb, 0xdf, 0xc6, 0xbd, 0xc2, 0x0f, 0xfa, 0xe1, 0x08, 0xb5, 0x30, 0x31, 0xd4, 0x77, 0x9f, 0xed, 0x6d, 0xe1, 0x5e, 0x11, 0x84, 0xfd, 0x68, 0x84, 0x5a, 0x98, 0x18, 0xb4,
0x68, 0x9d, 0x9e, 0xca, 0x61, 0xd7, 0xa0, 0x4e, 0xca, 0x1b, 0x9e, 0x5c, 0xa5, 0x1e, 0x94, 0x02, 0x4e, 0x4f, 0xe5, 0xb0, 0xab, 0xd0, 0x24, 0xe5, 0x0d, 0x4f, 0xae, 0x52, 0x0f, 0xca, 0x00, 0x3c,
0x78, 0x6a, 0xe6, 0xaf, 0xc6, 0x7e, 0x44, 0xc7, 0x62, 0x75, 0xd8, 0xad, 0xd2, 0x36, 0x93, 0xcf, 0x35, 0xf3, 0x57, 0xe3, 0x20, 0xa6, 0x63, 0xb1, 0x3a, 0xec, 0xd6, 0x69, 0x9b, 0x29, 0x66, 0x38,
0x70, 0x7e, 0x31, 0x0f, 0xf3, 0x72, 0xf3, 0x15, 0x1b, 0x79, 0xe2, 0x9f, 0xf3, 0x74, 0x23, 0xc7, 0xbf, 0x98, 0x83, 0x39, 0xb9, 0xf9, 0x8a, 0x8d, 0x3c, 0x0d, 0xce, 0x78, 0xb6, 0x91, 0x63, 0x0a,
0x14, 0x2a, 0xc6, 0x11, 0x1f, 0x85, 0x89, 0xd6, 0xdf, 0xc4, 0x32, 0xd8, 0x20, 0x59, 0x05, 0xa4, 0x15, 0xe3, 0x98, 0x8f, 0xa2, 0x54, 0xeb, 0x6f, 0x62, 0x19, 0x6c, 0x90, 0xac, 0x02, 0x52, 0x89,
0x12, 0x21, 0xec, 0x08, 0x15, 0x51, 0xca, 0x02, 0xd9, 0x35, 0x98, 0x57, 0xca, 0x40, 0x55, 0x1f, 0x10, 0x76, 0x84, 0x9a, 0x28, 0x65, 0x81, 0xec, 0x2a, 0xcc, 0x29, 0x65, 0xa0, 0xae, 0x0f, 0x2c,
0x58, 0x14, 0x84, 0xb3, 0xd1, 0xf7, 0xc6, 0x5e, 0xdf, 0x4f, 0x2e, 0xa5, 0x58, 0xd0, 0x69, 0xac, 0x0a, 0xc2, 0xd9, 0xe8, 0xfb, 0x63, 0xbf, 0x1f, 0xa4, 0x17, 0x52, 0x2c, 0xe8, 0x34, 0xd6, 0x3f,
0x7f, 0x18, 0xf6, 0xbd, 0x61, 0xef, 0xd8, 0x1b, 0x7a, 0x41, 0x9f, 0x2b, 0xab, 0x83, 0x05, 0xe2, 0x8c, 0xfa, 0xfe, 0xd0, 0x3b, 0xf2, 0x87, 0x7e, 0xd8, 0xe7, 0xca, 0xea, 0x60, 0x81, 0x78, 0x02,
0x09, 0x5c, 0x76, 0x4b, 0x15, 0x13, 0xa7, 0xf4, 0x0c, 0x8a, 0x7b, 0x78, 0x3f, 0x1c, 0x8d, 0xfc, 0x97, 0xdd, 0x52, 0xc5, 0xc4, 0x29, 0x3d, 0x87, 0xe2, 0x1e, 0xde, 0x8f, 0x46, 0xa3, 0x20, 0xc5,
0x04, 0x0f, 0xee, 0xa4, 0x9a, 0x55, 0x5c, 0x03, 0x11, 0x36, 0x0e, 0x4a, 0x5d, 0x88, 0x19, 0xac, 0x83, 0x3b, 0xa9, 0x66, 0x35, 0xd7, 0x40, 0x84, 0x8d, 0x83, 0x52, 0xe7, 0x62, 0x06, 0x9b, 0xca,
0x2b, 0x1b, 0x87, 0x01, 0x62, 0x2d, 0x19, 0x0d, 0xad, 0xe2, 0x1a, 0x08, 0xae, 0xc5, 0x24, 0x88, 0xc6, 0x61, 0x80, 0x58, 0x4b, 0x4e, 0x43, 0xab, 0xb9, 0x06, 0x82, 0x6b, 0x31, 0x09, 0x13, 0x9e,
0x79, 0x92, 0x0c, 0xf9, 0x40, 0x77, 0xa8, 0x41, 0xc5, 0xf2, 0x19, 0xec, 0x3e, 0x2c, 0x0b, 0x5b, 0xa6, 0x43, 0x3e, 0xd0, 0x1d, 0x6a, 0x51, 0xb1, 0x62, 0x06, 0xbb, 0x0f, 0xcb, 0xc2, 0x96, 0x90,
0x42, 0xec, 0x25, 0x61, 0x7c, 0xe6, 0xc7, 0xbd, 0x18, 0x8f, 0x41, 0xe2, 0x4c, 0x5b, 0x94, 0xc5, 0xf8, 0x69, 0x94, 0x9c, 0x06, 0x89, 0x97, 0xe0, 0x31, 0x48, 0x9c, 0x69, 0xcb, 0xb2, 0xd8, 0xc7,
0x3e, 0x86, 0xb5, 0x0c, 0x1c, 0xf1, 0x3e, 0xf7, 0xcf, 0xf9, 0x80, 0x54, 0xb8, 0x8a, 0x3b, 0x2d, 0xb0, 0x96, 0x83, 0x63, 0xde, 0xe7, 0xc1, 0x19, 0x1f, 0x90, 0x0a, 0x57, 0x73, 0xa7, 0x65, 0xb3,
0x9b, 0xad, 0x43, 0x23, 0x98, 0x8c, 0x7a, 0x93, 0xf1, 0xc0, 0x43, 0x25, 0xa6, 0x45, 0xca, 0xa5, 0x1b, 0xd0, 0x0a, 0x27, 0x23, 0x6f, 0x32, 0x1e, 0xf8, 0xa8, 0xc4, 0x2c, 0x90, 0x72, 0x69, 0x42,
0x09, 0xb1, 0x0f, 0x41, 0xe9, 0x69, 0x52, 0x7b, 0x5c, 0xb4, 0x24, 0x1c, 0x52, 0xaf, 0x6b, 0x97, 0xec, 0x43, 0x50, 0x7a, 0x9a, 0xd4, 0x1e, 0x17, 0x2d, 0x09, 0x87, 0xd4, 0xeb, 0xda, 0x25, 0x90,
0x40, 0xc2, 0x4c, 0x55, 0xd2, 0xb6, 0x3c, 0x3f, 0x2a, 0x80, 0xf8, 0x24, 0xf2, 0xcf, 0xbd, 0x84, 0x30, 0x33, 0x95, 0xb4, 0x23, 0xcf, 0x8f, 0x0a, 0x20, 0x3e, 0x89, 0x83, 0x33, 0x3f, 0xe5, 0xdd,
0x77, 0x96, 0x84, 0x50, 0x97, 0x49, 0xfc, 0xce, 0x0f, 0xfc, 0xc4, 0xf7, 0x92, 0x30, 0xea, 0x30, 0x25, 0x21, 0xd4, 0x65, 0x12, 0xbf, 0x0b, 0xc2, 0x20, 0x0d, 0xfc, 0x34, 0x8a, 0xbb, 0x8c, 0xf2,
0xca, 0x4b, 0x01, 0x9c, 0x44, 0xa2, 0x8f, 0x38, 0xf1, 0x92, 0x49, 0x2c, 0x35, 0xd4, 0x65, 0x22, 0x32, 0x00, 0x27, 0x91, 0xe8, 0x23, 0x49, 0xfd, 0x74, 0x92, 0x48, 0x0d, 0x75, 0x99, 0x88, 0xab,
0xae, 0x7c, 0x06, 0xfb, 0x08, 0x56, 0x05, 0x45, 0x50, 0x96, 0xd4, 0xbd, 0x49, 0x55, 0x58, 0xa1, 0x98, 0xc1, 0x3e, 0x82, 0x55, 0x41, 0x11, 0x94, 0x25, 0x75, 0x6f, 0x52, 0x15, 0x56, 0x68, 0x46,
0x19, 0x99, 0x92, 0x8b, 0x53, 0x29, 0x49, 0x24, 0xf7, 0xe1, 0x15, 0x31, 0x95, 0x53, 0xb2, 0xb1, 0xa6, 0xe4, 0xe2, 0x54, 0x4a, 0x12, 0x29, 0x7c, 0x78, 0x59, 0x4c, 0xe5, 0x94, 0x6c, 0xec, 0x1f,
0x7f, 0xd8, 0x03, 0xbf, 0xdf, 0x93, 0x25, 0x90, 0x45, 0x56, 0x69, 0x14, 0xf9, 0x0c, 0x24, 0xf1, 0xf6, 0x20, 0xe8, 0x7b, 0xb2, 0x04, 0xb2, 0xc8, 0x2a, 0x8d, 0xa2, 0x98, 0x81, 0x24, 0x3e, 0x0c,
0xa1, 0x7f, 0xc2, 0x13, 0x7f, 0xc4, 0x3b, 0x6b, 0x82, 0xc4, 0x55, 0x1a, 0x19, 0x70, 0x32, 0xa6, 0x8e, 0x79, 0x1a, 0x8c, 0x78, 0x77, 0x4d, 0x90, 0xb8, 0x4a, 0x23, 0x03, 0x4e, 0xc6, 0x94, 0xd3,
0x9c, 0x8e, 0x60, 0x78, 0x91, 0x72, 0x7e, 0xbf, 0x24, 0x36, 0x1f, 0xc9, 0xa8, 0xb1, 0x71, 0xac, 0x15, 0x0c, 0x2f, 0x52, 0xce, 0xef, 0x57, 0xc4, 0xe6, 0x23, 0x19, 0x35, 0x31, 0x8e, 0x55, 0x82,
0x12, 0x2c, 0xda, 0x0b, 0x83, 0xe1, 0xa5, 0xe4, 0x5a, 0x10, 0xd0, 0xd3, 0x60, 0x78, 0x89, 0x8a, 0x45, 0xbd, 0x28, 0x1c, 0x5e, 0x48, 0xae, 0x05, 0x01, 0x3d, 0x0d, 0x87, 0x17, 0xa8, 0xd8, 0x07,
0xbd, 0x1f, 0x98, 0x45, 0x84, 0x9c, 0x6b, 0x2a, 0x90, 0x0a, 0xbd, 0x0b, 0x8d, 0xf1, 0xe4, 0x78, 0xa1, 0x59, 0x44, 0xc8, 0xb9, 0xb6, 0x02, 0xa9, 0xd0, 0xbb, 0xd0, 0x1a, 0x4f, 0x8e, 0x86, 0x41,
0xe8, 0xf7, 0x45, 0x91, 0x8a, 0xa8, 0x45, 0x40, 0x54, 0x00, 0xcf, 0x95, 0x62, 0xa5, 0x44, 0x89, 0x5f, 0x14, 0xa9, 0x89, 0x5a, 0x04, 0x44, 0x05, 0xf0, 0x5c, 0x29, 0x56, 0x4a, 0x94, 0xa8, 0x53,
0x2a, 0x95, 0x68, 0x48, 0x0c, 0x8b, 0x38, 0x0f, 0x60, 0xc5, 0xee, 0xa0, 0x14, 0xe8, 0x77, 0xa1, 0x89, 0x96, 0xc4, 0xb0, 0x88, 0xf3, 0x00, 0x56, 0xec, 0x0e, 0x4a, 0x81, 0x7e, 0x17, 0x1a, 0x92,
0x26, 0xf9, 0x5f, 0x19, 0x0a, 0x5a, 0x86, 0xf9, 0x16, 0x8f, 0x41, 0x3a, 0xdf, 0xf9, 0x97, 0x55, 0xff, 0x95, 0xa1, 0x60, 0xc1, 0x30, 0xdf, 0xe2, 0x31, 0x48, 0xe7, 0x3b, 0xff, 0xa2, 0x0e, 0xcb,
0x58, 0x96, 0xe8, 0xf6, 0x30, 0x8c, 0xf9, 0xd1, 0x64, 0x34, 0xf2, 0xa2, 0x02, 0xc1, 0x52, 0x7a, 0x12, 0xdd, 0x1a, 0x46, 0x09, 0x3f, 0x9c, 0x8c, 0x46, 0x7e, 0x5c, 0x22, 0x58, 0x2a, 0x6f, 0x10,
0x83, 0x60, 0x29, 0xe7, 0x05, 0xcb, 0x0d, 0xeb, 0x7c, 0x29, 0x24, 0x93, 0x81, 0xb0, 0x3b, 0xb0, 0x2c, 0xd5, 0xa2, 0x60, 0xb9, 0x6e, 0x9d, 0x2f, 0x85, 0x64, 0x32, 0x10, 0x76, 0x07, 0x16, 0xfb,
0xd8, 0x1f, 0x86, 0xb1, 0x50, 0xf7, 0x4d, 0x0b, 0x62, 0x16, 0xce, 0x0b, 0xc3, 0xd9, 0x22, 0x61, 0xc3, 0x28, 0x11, 0xea, 0xbe, 0x69, 0x41, 0xcc, 0xc3, 0x45, 0x61, 0x38, 0x53, 0x26, 0x0c, 0x4d,
0x68, 0x0a, 0xb2, 0xb9, 0x8c, 0x20, 0x73, 0xa0, 0x89, 0x95, 0x72, 0x25, 0x9b, 0xe7, 0xe5, 0x61, 0x41, 0x36, 0x9b, 0x13, 0x64, 0x0e, 0xb4, 0xb1, 0x52, 0xae, 0x64, 0xf3, 0x9c, 0x3c, 0x6c, 0x19,
0xcb, 0xc0, 0xb0, 0x3f, 0x59, 0xb1, 0x21, 0x64, 0xd4, 0x62, 0x91, 0xd0, 0xf0, 0x47, 0x9c, 0x64, 0x18, 0xf6, 0x27, 0x2f, 0x36, 0x84, 0x8c, 0x5a, 0x2c, 0x13, 0x1a, 0xc1, 0x88, 0x93, 0xec, 0x37,
0xbf, 0x51, 0xba, 0x2e, 0x85, 0x46, 0x3e, 0x8b, 0x3d, 0x04, 0x10, 0x6d, 0x91, 0x02, 0x02, 0xa4, 0x4a, 0x37, 0xa5, 0xd0, 0x28, 0x66, 0xb1, 0x87, 0x00, 0xa2, 0x2d, 0x52, 0x40, 0x80, 0x14, 0x90,
0x80, 0xdc, 0xb2, 0x57, 0xc5, 0x9c, 0xff, 0x0d, 0x4c, 0x4c, 0x22, 0x4e, 0x4a, 0x89, 0xf1, 0xa5, 0x5b, 0xf6, 0xaa, 0x98, 0xf3, 0xbf, 0x8e, 0x89, 0x49, 0xcc, 0x49, 0x29, 0x31, 0xbe, 0x74, 0xfe,
0xf3, 0x37, 0x4b, 0xd0, 0x30, 0xf2, 0xd8, 0x15, 0x58, 0xda, 0x7e, 0xfa, 0xf4, 0x70, 0xd7, 0xdd, 0x46, 0x05, 0x5a, 0x46, 0x1e, 0xbb, 0x0c, 0x4b, 0x5b, 0x4f, 0x9f, 0x1e, 0xec, 0xb8, 0x9b, 0xcf,
0x7a, 0xf6, 0xf8, 0x07, 0xbb, 0xbd, 0xed, 0xfd, 0xa7, 0x47, 0xbb, 0xed, 0x19, 0x84, 0xf7, 0x9f, 0x1e, 0xff, 0x60, 0xc7, 0xdb, 0xda, 0x7b, 0x7a, 0xb8, 0xd3, 0xb9, 0x84, 0xf0, 0xde, 0xd3, 0xad,
0x6e, 0x6f, 0xed, 0xf7, 0x1e, 0x3e, 0x75, 0xb7, 0x15, 0x5c, 0x62, 0xab, 0xc0, 0xdc, 0xdd, 0x27, 0xcd, 0x3d, 0xef, 0xe1, 0x53, 0x77, 0x4b, 0xc1, 0x15, 0xb6, 0x0a, 0xcc, 0xdd, 0x79, 0xf2, 0xf4,
0x4f, 0x9f, 0xed, 0x5a, 0x78, 0x99, 0xb5, 0xa1, 0xf9, 0xc0, 0xdd, 0xdd, 0xda, 0xde, 0x93, 0x48, 0xd9, 0x8e, 0x85, 0x57, 0x59, 0x07, 0xda, 0x0f, 0xdc, 0x9d, 0xcd, 0xad, 0x5d, 0x89, 0xd4, 0xd8,
0x85, 0xad, 0x40, 0xfb, 0xe1, 0xf3, 0x83, 0x9d, 0xc7, 0x07, 0x8f, 0x7a, 0xdb, 0x5b, 0x07, 0xdb, 0x0a, 0x74, 0x1e, 0x3e, 0xdf, 0xdf, 0x7e, 0xbc, 0xff, 0xc8, 0xdb, 0xda, 0xdc, 0xdf, 0xda, 0xd9,
0xbb, 0xfb, 0xbb, 0x3b, 0xed, 0x2a, 0x5b, 0x80, 0xfa, 0xd6, 0x83, 0xad, 0x83, 0x9d, 0xa7, 0x07, 0xdb, 0xd9, 0xee, 0xd4, 0xd9, 0x3c, 0x34, 0x37, 0x1f, 0x6c, 0xee, 0x6f, 0x3f, 0xdd, 0xdf, 0xd9,
0xbb, 0x3b, 0xed, 0x59, 0xe7, 0x4f, 0x4b, 0x70, 0x85, 0x7a, 0x3d, 0xc8, 0x32, 0xc9, 0x3a, 0x34, 0xee, 0xcc, 0x38, 0x7f, 0x5a, 0x81, 0xcb, 0xd4, 0xeb, 0x41, 0x9e, 0x49, 0x6e, 0x40, 0xab, 0x1f,
0xfa, 0x61, 0x38, 0x46, 0xc5, 0x3f, 0xdd, 0xda, 0x4c, 0x08, 0x19, 0x40, 0x08, 0x85, 0x93, 0x30, 0x45, 0x63, 0x54, 0xfc, 0xb3, 0xad, 0xcd, 0x84, 0x90, 0x01, 0x84, 0x50, 0x38, 0x8e, 0xe2, 0x3e,
0xea, 0x73, 0xc9, 0x23, 0x40, 0xd0, 0x43, 0x44, 0x90, 0x01, 0xe4, 0xf2, 0x8a, 0x12, 0x82, 0x45, 0x97, 0x3c, 0x02, 0x04, 0x3d, 0x44, 0x04, 0x19, 0x40, 0x2e, 0xaf, 0x28, 0x21, 0x58, 0xa4, 0x25,
0x1a, 0x02, 0x13, 0x45, 0x56, 0x61, 0xee, 0x38, 0xe2, 0x5e, 0xff, 0x4c, 0x72, 0x87, 0x4c, 0xb1, 0x30, 0x51, 0x64, 0x15, 0x66, 0x8f, 0x62, 0xee, 0xf7, 0x4f, 0x25, 0x77, 0xc8, 0x14, 0x7b, 0x3f,
0xf7, 0xd3, 0x93, 0x69, 0x1f, 0x67, 0x7f, 0xc8, 0x07, 0x44, 0x31, 0x35, 0x77, 0x51, 0xe2, 0xdb, 0x3b, 0x99, 0xf6, 0x71, 0xf6, 0x87, 0x7c, 0x40, 0x14, 0xd3, 0x70, 0x17, 0x25, 0xbe, 0x25, 0x61,
0x12, 0x46, 0x29, 0xe8, 0x1d, 0x7b, 0xc1, 0x20, 0x0c, 0xf8, 0x40, 0xaa, 0xbd, 0x29, 0xe0, 0x1c, 0x94, 0x82, 0xfe, 0x91, 0x1f, 0x0e, 0xa2, 0x90, 0x0f, 0xa4, 0xda, 0x9b, 0x01, 0xce, 0x01, 0xac,
0xc2, 0x6a, 0x76, 0x7c, 0x92, 0xc7, 0x3e, 0x32, 0x78, 0x4c, 0x68, 0xa1, 0xdd, 0xe9, 0xab, 0x69, 0xe6, 0xc7, 0x27, 0x79, 0xec, 0x23, 0x83, 0xc7, 0x84, 0x16, 0xda, 0x9b, 0xbe, 0x9a, 0x06, 0xbf,
0xf0, 0xdb, 0x7f, 0x2e, 0x43, 0x15, 0x95, 0x92, 0xe9, 0x0a, 0x8c, 0xa9, 0x67, 0x56, 0x72, 0xee, 0xfd, 0xe7, 0x2a, 0xd4, 0x51, 0x29, 0x99, 0xae, 0xc0, 0x98, 0x7a, 0x66, 0xad, 0xe0, 0x6e, 0xa0,
0x06, 0x3a, 0xec, 0x8a, 0x2d, 0x4a, 0x1a, 0x5a, 0x52, 0x24, 0xcd, 0x8f, 0x78, 0xff, 0x5c, 0x9a, 0xc3, 0xae, 0xd8, 0xa2, 0xa4, 0xa1, 0x25, 0x43, 0xb2, 0xfc, 0x98, 0xf7, 0xcf, 0xa4, 0xa9, 0xc5,
0x5a, 0x0c, 0x04, 0x19, 0x04, 0x0f, 0x01, 0xf4, 0xb5, 0x64, 0x10, 0x95, 0x56, 0x79, 0xf4, 0xe5, 0x40, 0x90, 0x41, 0xf0, 0x10, 0x40, 0x5f, 0x4b, 0x06, 0x51, 0x69, 0x95, 0x47, 0x5f, 0xce, 0x65,
0x7c, 0x9a, 0x47, 0xdf, 0x75, 0x60, 0xde, 0x0f, 0x8e, 0xc3, 0x49, 0x30, 0x20, 0x86, 0xa8, 0xb9, 0x79, 0xf4, 0x5d, 0x17, 0xe6, 0x82, 0xf0, 0x28, 0x9a, 0x84, 0x03, 0x62, 0x88, 0x86, 0xab, 0x92,
0x2a, 0x49, 0x0e, 0x0e, 0x62, 0x54, 0x94, 0x9f, 0x82, 0xfc, 0x53, 0x80, 0x6d, 0x42, 0x3d, 0xbe, 0xe4, 0xe0, 0x20, 0x46, 0x45, 0xf9, 0x29, 0xc8, 0x3f, 0x03, 0xd8, 0x06, 0x34, 0x93, 0x8b, 0xb0,
0x0c, 0xfa, 0x26, 0xcd, 0xaf, 0xc8, 0x59, 0xc2, 0x39, 0xd8, 0x38, 0xba, 0x0c, 0xfa, 0x44, 0xe1, 0x6f, 0xd2, 0xfc, 0x8a, 0x9c, 0x25, 0x9c, 0x83, 0xf5, 0xc3, 0x8b, 0xb0, 0x4f, 0x14, 0x9e, 0x15,
0x69, 0x31, 0xe7, 0xb7, 0xa0, 0xa6, 0x60, 0x24, 0xcb, 0xe7, 0x07, 0x9f, 0x1f, 0x3c, 0x7d, 0x71, 0x73, 0x7e, 0x0b, 0x1a, 0x0a, 0x46, 0xb2, 0x7c, 0xbe, 0xff, 0xf9, 0xfe, 0xd3, 0x17, 0xfb, 0xde,
0xd0, 0x3b, 0xfa, 0xe1, 0xc1, 0x76, 0x7b, 0x86, 0x2d, 0x42, 0x63, 0x6b, 0x9b, 0x28, 0x9d, 0x80, 0xe1, 0x0f, 0xf7, 0xb7, 0x3a, 0x97, 0xd8, 0x22, 0xb4, 0x36, 0xb7, 0x88, 0xd2, 0x09, 0xa8, 0x60,
0x12, 0x16, 0x39, 0xdc, 0x3a, 0x3a, 0xd2, 0x48, 0xd9, 0x61, 0x78, 0x90, 0x8f, 0x49, 0xf3, 0xd3, 0x91, 0x83, 0xcd, 0xc3, 0x43, 0x8d, 0x54, 0x1d, 0x86, 0x07, 0xf9, 0x84, 0x34, 0x3f, 0x6d, 0xc0,
0x06, 0xfc, 0x8f, 0x60, 0xc9, 0xc0, 0xd2, 0x53, 0xc4, 0x18, 0x81, 0xcc, 0x29, 0x82, 0x54, 0x46, 0xff, 0x08, 0x96, 0x0c, 0x2c, 0x3b, 0x45, 0x8c, 0x11, 0xc8, 0x9d, 0x22, 0x48, 0x65, 0x14, 0x39,
0x91, 0xe3, 0xb4, 0xa1, 0xf5, 0x88, 0x27, 0x8f, 0x83, 0x93, 0x50, 0xd5, 0xf4, 0xdf, 0xab, 0xb0, 0x4e, 0x07, 0x16, 0x1e, 0xf1, 0xf4, 0x71, 0x78, 0x1c, 0xa9, 0x9a, 0xfe, 0x7b, 0x1d, 0x16, 0x35,
0xa8, 0x21, 0x59, 0xd1, 0x1d, 0x58, 0xf4, 0x07, 0x3c, 0x48, 0xfc, 0xe4, 0xb2, 0x67, 0xd9, 0x0b, 0x24, 0x2b, 0xba, 0x03, 0x8b, 0xc1, 0x80, 0x87, 0x69, 0x90, 0x5e, 0x78, 0x96, 0xbd, 0x20, 0x0f,
0xb2, 0x30, 0xaa, 0xda, 0xde, 0xd0, 0xf7, 0x94, 0x1f, 0x49, 0x24, 0xf0, 0xfc, 0x8c, 0x3a, 0x80, 0xa3, 0xaa, 0xed, 0x0f, 0x03, 0x5f, 0xf9, 0x91, 0x44, 0x02, 0xcf, 0xcf, 0xa8, 0x03, 0x98, 0x76,
0x69, 0xb7, 0x21, 0xba, 0x12, 0x66, 0x8a, 0xc2, 0x3c, 0x94, 0x40, 0x88, 0xcb, 0x6d, 0x46, 0x7f, 0x1b, 0xa2, 0x2b, 0x61, 0xa6, 0x28, 0xcd, 0x43, 0x09, 0x84, 0xb8, 0xdc, 0x66, 0xf4, 0x27, 0x42,
0x22, 0x54, 0xce, 0xa2, 0x2c, 0x5c, 0x2a, 0x51, 0x13, 0x0e, 0x79, 0x56, 0xe8, 0x09, 0x1a, 0xc8, 0xe5, 0x2c, 0xcb, 0xc2, 0xa5, 0x12, 0x35, 0xe1, 0x90, 0x67, 0x84, 0x9e, 0xa0, 0x81, 0x82, 0xa3,
0x39, 0x6a, 0xe6, 0x84, 0x7c, 0xcc, 0x3a, 0x6a, 0x0c, 0x67, 0x4f, 0x2d, 0xe7, 0xec, 0x41, 0xf9, 0x66, 0x56, 0xc8, 0xc7, 0xbc, 0xa3, 0xc6, 0x70, 0xf6, 0x34, 0x0a, 0xce, 0x1e, 0x94, 0x9f, 0x17,
0x79, 0x19, 0xf4, 0xf9, 0xa0, 0x97, 0x84, 0x3d, 0x92, 0xf3, 0x44, 0x12, 0x35, 0x37, 0x0b, 0xe3, 0x61, 0x9f, 0x0f, 0xbc, 0x34, 0xf2, 0x48, 0xce, 0x13, 0x49, 0x34, 0xdc, 0x3c, 0x8c, 0xfb, 0x46,
0xbe, 0x91, 0xf0, 0x38, 0x09, 0xb8, 0xb0, 0x78, 0xd7, 0xc8, 0x0a, 0xaa, 0x20, 0x3c, 0x1f, 0x4c, 0xca, 0x93, 0x34, 0xe4, 0xc2, 0xe2, 0xdd, 0x20, 0x2b, 0xa8, 0x82, 0xf0, 0x7c, 0x30, 0x89, 0x83,
0x22, 0x3f, 0xee, 0x34, 0xc9, 0x8d, 0x43, 0xbf, 0xd9, 0x77, 0xe1, 0xca, 0x31, 0x8f, 0x93, 0xde, 0xa4, 0xdb, 0x26, 0x37, 0x0e, 0xfd, 0x66, 0xdf, 0x85, 0xcb, 0x47, 0x3c, 0x49, 0xbd, 0x53, 0xee,
0x19, 0xf7, 0x06, 0x3c, 0x22, 0xf2, 0x12, 0xfe, 0x22, 0xa1, 0x72, 0x15, 0x67, 0x22, 0xe1, 0x9e, 0x0f, 0x78, 0x4c, 0xe4, 0x25, 0xfc, 0x45, 0x42, 0xe5, 0x2a, 0xcf, 0x44, 0xc2, 0x3d, 0xe3, 0x71,
0xf3, 0x28, 0xf6, 0xc3, 0x80, 0x94, 0xad, 0xba, 0xab, 0x92, 0x58, 0x1f, 0x0e, 0x5e, 0x6f, 0xd4, 0x12, 0x44, 0x21, 0x29, 0x5b, 0x4d, 0x57, 0x25, 0xb1, 0x3e, 0x1c, 0xbc, 0xde, 0xa8, 0xf5, 0x0c,
0x7a, 0x06, 0x17, 0x69, 0xe0, 0xc5, 0x99, 0xec, 0x26, 0xcc, 0xd1, 0x00, 0xe2, 0x4e, 0x9b, 0x68, 0x2e, 0xd2, 0xc0, 0xcb, 0x33, 0xd9, 0x4d, 0x98, 0xa5, 0x01, 0x24, 0xdd, 0x0e, 0xd1, 0x4c, 0x3b,
0xa6, 0x99, 0xf2, 0xbc, 0x1f, 0xb8, 0x32, 0x0f, 0x57, 0xb9, 0x1f, 0x0e, 0xc3, 0x88, 0x34, 0xae, 0xe3, 0xf9, 0x20, 0x74, 0x65, 0x1e, 0xae, 0x72, 0x3f, 0x1a, 0x46, 0x31, 0x69, 0x5c, 0x4d, 0x57,
0xba, 0x2b, 0x12, 0xf6, 0xec, 0x9c, 0x46, 0xde, 0xf8, 0x4c, 0x6a, 0x5d, 0x59, 0xf8, 0xb3, 0x6a, 0x24, 0xec, 0xd9, 0x39, 0x89, 0xfd, 0xf1, 0xa9, 0xd4, 0xba, 0xf2, 0xf0, 0x67, 0xf5, 0x46, 0xab,
0xad, 0xd1, 0x6e, 0x3a, 0xff, 0x1f, 0xcc, 0x52, 0xb5, 0x54, 0x1d, 0x4d, 0x66, 0x49, 0x56, 0x47, 0xd3, 0x76, 0xfe, 0x3f, 0x98, 0xa1, 0x6a, 0xa9, 0x3a, 0x9a, 0xcc, 0x8a, 0xac, 0x8e, 0xd0, 0x2e,
0x68, 0x07, 0xe6, 0x03, 0x9e, 0x5c, 0x84, 0xd1, 0x4b, 0xe5, 0x94, 0x94, 0x49, 0xe7, 0x67, 0x74, 0xcc, 0x85, 0x3c, 0x3d, 0x8f, 0xe2, 0x97, 0xca, 0x29, 0x29, 0x93, 0xce, 0xcf, 0xe8, 0x84, 0xa6,
0x42, 0xd3, 0x4e, 0xba, 0xe7, 0xa4, 0x5a, 0xe2, 0x39, 0x5b, 0x2c, 0x55, 0x7c, 0xe6, 0xc9, 0x43, 0x9d, 0x74, 0xcf, 0x49, 0xb5, 0xc4, 0x73, 0xb6, 0x58, 0xaa, 0xe4, 0xd4, 0x97, 0x87, 0xc6, 0x06,
0x63, 0x8d, 0x80, 0xa3, 0x33, 0x0f, 0x65, 0xad, 0xb5, 0xfa, 0xe2, 0x1c, 0xde, 0x20, 0x6c, 0x4f, 0x01, 0x87, 0xa7, 0x3e, 0xca, 0x5a, 0x6b, 0xf5, 0xc5, 0x39, 0xbc, 0x45, 0xd8, 0xae, 0x58, 0xfc,
0x2c, 0xfe, 0x4d, 0x68, 0x29, 0xf7, 0x5f, 0xdc, 0x1b, 0xf2, 0x93, 0x44, 0x59, 0xd1, 0x82, 0xc9, 0x9b, 0xb0, 0xa0, 0xdc, 0x7f, 0x89, 0x37, 0xe4, 0xc7, 0xa9, 0xb2, 0xa2, 0x85, 0x93, 0x11, 0x1d,
0x88, 0x0e, 0xeb, 0xfb, 0xfc, 0x24, 0x71, 0x0e, 0x60, 0x49, 0xca, 0xbf, 0xa7, 0x63, 0xae, 0x9a, 0xd6, 0xf7, 0xf8, 0x71, 0xea, 0xec, 0xc3, 0x92, 0x94, 0x7f, 0x4f, 0xc7, 0x5c, 0x35, 0xfd, 0x1b,
0xfe, 0x8d, 0x22, 0x5d, 0xa2, 0xb1, 0xb9, 0x6c, 0x0b, 0x4c, 0xe1, 0xf0, 0xb4, 0x4b, 0x3a, 0x2e, 0x65, 0xba, 0x44, 0x6b, 0x63, 0xd9, 0x16, 0x98, 0xc2, 0xe1, 0x69, 0x97, 0x74, 0x5c, 0x60, 0xa6,
0x30, 0x53, 0x9e, 0xca, 0x0a, 0xe5, 0x66, 0xae, 0xec, 0x84, 0x72, 0x38, 0x16, 0x86, 0xf3, 0x13, 0x3c, 0x95, 0x15, 0xca, 0xcd, 0x5c, 0xd9, 0x09, 0xe5, 0x70, 0x2c, 0x0c, 0xe7, 0x27, 0x99, 0xf4,
0x4f, 0xfa, 0x7d, 0xe5, 0xb4, 0xad, 0xb9, 0x2a, 0xe9, 0xfc, 0x87, 0x12, 0x2c, 0x53, 0x6d, 0x4a, 0xfb, 0xca, 0x69, 0xdb, 0x70, 0x55, 0xd2, 0xf9, 0xf7, 0x15, 0x58, 0xa6, 0xda, 0x94, 0x36, 0x24,
0x1b, 0x92, 0x7b, 0xd6, 0xc7, 0x5f, 0xa3, 0x9b, 0xca, 0x4a, 0x2b, 0x6c, 0x93, 0x2b, 0x30, 0x6b, 0xf7, 0xac, 0x8f, 0xbf, 0x46, 0x37, 0x95, 0x95, 0x56, 0xd8, 0x26, 0x57, 0x60, 0xc6, 0xdc, 0xc5,
0xee, 0x62, 0x22, 0xf1, 0xf5, 0x6d, 0x32, 0xd5, 0x9c, 0x4d, 0xe6, 0x2e, 0xb4, 0x07, 0x7c, 0xe8, 0x44, 0xe2, 0xeb, 0xdb, 0x64, 0xea, 0x05, 0x9b, 0xcc, 0x5d, 0xe8, 0x0c, 0xf8, 0x30, 0x20, 0xc7,
0x93, 0xe3, 0x5e, 0xed, 0x09, 0x42, 0xf5, 0xc9, 0xe1, 0xce, 0xdf, 0x2d, 0xc1, 0x92, 0xd8, 0x74, 0xbd, 0xda, 0x13, 0x84, 0xea, 0x53, 0xc0, 0x9d, 0xbf, 0x53, 0x81, 0x25, 0xb1, 0xe9, 0x90, 0x66,
0x48, 0x33, 0x97, 0x53, 0xf5, 0xff, 0xc3, 0x82, 0xd0, 0x1e, 0xa4, 0x04, 0x91, 0x83, 0x4a, 0xc5, 0x2e, 0xa7, 0xea, 0xff, 0x87, 0x79, 0xa1, 0x3d, 0x48, 0x09, 0x22, 0x07, 0x95, 0x89, 0x61, 0x42,
0x30, 0xa1, 0xa2, 0xf0, 0xde, 0x8c, 0x6b, 0x17, 0x66, 0x9f, 0x92, 0x06, 0x17, 0xf4, 0x08, 0x2d, 0x45, 0xe1, 0xdd, 0x4b, 0xae, 0x5d, 0x98, 0x7d, 0x4a, 0x1a, 0x5c, 0xe8, 0x11, 0x5a, 0x12, 0x0a,
0x08, 0x05, 0xb0, 0xd7, 0x65, 0x6f, 0xc6, 0x35, 0x8a, 0x3f, 0xa8, 0xa1, 0x62, 0x8d, 0xb8, 0xf3, 0x60, 0xaf, 0xcb, 0xee, 0x25, 0xd7, 0x28, 0xfe, 0xa0, 0x81, 0x8a, 0x35, 0xe2, 0xce, 0x23, 0x98,
0x08, 0x16, 0xac, 0x86, 0x2c, 0xdb, 0x51, 0x53, 0xd8, 0x8e, 0x72, 0x46, 0xda, 0x72, 0x81, 0x91, 0xb7, 0x1a, 0xb2, 0x6c, 0x47, 0x6d, 0x61, 0x3b, 0x2a, 0x18, 0x69, 0xab, 0x25, 0x46, 0xda, 0x7f,
0xf6, 0x9f, 0x57, 0x80, 0x21, 0x61, 0x65, 0x56, 0x6e, 0xdd, 0xf6, 0x74, 0xa8, 0xa8, 0x80, 0x14, 0x56, 0x03, 0x86, 0x84, 0x95, 0x5b, 0xb9, 0x1b, 0xb6, 0xa7, 0x43, 0x45, 0x05, 0x64, 0x10, 0xdb,
0x62, 0x9b, 0xc0, 0x8c, 0xa4, 0xf2, 0xc0, 0x54, 0xb4, 0x07, 0xa6, 0x20, 0x17, 0xc5, 0xb2, 0xd4, 0x00, 0x66, 0x24, 0x95, 0x07, 0xa6, 0xa6, 0x3d, 0x30, 0x25, 0xb9, 0x28, 0x96, 0xa5, 0x86, 0xa2,
0x50, 0xb4, 0x77, 0x83, 0xec, 0x02, 0x62, 0x99, 0x0a, 0xf3, 0x70, 0x17, 0x25, 0x57, 0x07, 0x9e, 0xbd, 0x1b, 0x64, 0x17, 0x10, 0xcb, 0x54, 0x9a, 0x87, 0xbb, 0x28, 0xb9, 0x3a, 0xf0, 0x04, 0x23,
0x60, 0xe4, 0x59, 0x5a, 0xa5, 0xb3, 0xf4, 0x30, 0xf7, 0x46, 0x7a, 0x98, 0xcf, 0xd1, 0x83, 0x71, 0xcf, 0xd2, 0x2a, 0x9d, 0xa7, 0x87, 0xd9, 0x37, 0xd2, 0xc3, 0x5c, 0x81, 0x1e, 0x8c, 0xd3, 0x5c,
0x9a, 0xab, 0xd9, 0xa7, 0xb9, 0x9b, 0xb0, 0xa0, 0x3c, 0x1a, 0xc2, 0x29, 0x2b, 0x8f, 0xce, 0x16, 0xc3, 0x3e, 0xcd, 0xdd, 0x84, 0x79, 0xe5, 0xd1, 0x10, 0x4e, 0x59, 0x79, 0x74, 0xb6, 0x40, 0xa4,
0x88, 0xf4, 0xa4, 0x0e, 0x54, 0xfa, 0xc8, 0x28, 0x5c, 0x8e, 0x39, 0x1c, 0xf7, 0x8b, 0xd4, 0x6a, 0x27, 0x75, 0xa0, 0xd2, 0x47, 0x46, 0xe1, 0x72, 0x2c, 0xe0, 0xb8, 0x5f, 0x64, 0x56, 0xbb, 0x16,
0xd7, 0xa0, 0xce, 0xa6, 0x00, 0x9d, 0xbf, 0x90, 0x4a, 0x7a, 0x93, 0x40, 0x46, 0x04, 0xf0, 0x01, 0x75, 0x36, 0x03, 0xe8, 0xfc, 0x85, 0x54, 0xe2, 0x4d, 0x42, 0x19, 0x11, 0xc0, 0x07, 0x74, 0x68,
0x1d, 0x9a, 0xf1, 0xfc, 0x95, 0xcd, 0x70, 0xfe, 0x56, 0x09, 0xda, 0xb8, 0x6e, 0x16, 0x69, 0x7e, 0xc6, 0xf3, 0x57, 0x3e, 0xc3, 0xf9, 0x9b, 0x15, 0xe8, 0xe0, 0xba, 0x59, 0xa4, 0xf9, 0x09, 0x10,
0x02, 0xc4, 0x45, 0x6f, 0x49, 0x99, 0x56, 0x59, 0xf6, 0x31, 0xd4, 0x29, 0x1d, 0x8e, 0x79, 0x20, 0x17, 0xbd, 0x25, 0x65, 0x5a, 0x65, 0xd9, 0xc7, 0xd0, 0xa4, 0x74, 0x34, 0xe6, 0xa1, 0xa4, 0xcb,
0xe9, 0xb2, 0x63, 0xd3, 0x65, 0x2a, 0x7f, 0xf6, 0x66, 0xdc, 0xb4, 0xb0, 0x41, 0x95, 0xff, 0xae, 0xae, 0x4d, 0x97, 0x99, 0xfc, 0xd9, 0xbd, 0xe4, 0x66, 0x85, 0x0d, 0xaa, 0xfc, 0xb7, 0x15, 0x68,
0x04, 0x0d, 0xd9, 0xca, 0x2f, 0x6d, 0x15, 0xea, 0x1a, 0x21, 0x1c, 0x42, 0x59, 0x4b, 0x23, 0x36, 0xc9, 0x56, 0x7e, 0x69, 0xab, 0x50, 0xcf, 0x08, 0xe1, 0x10, 0xca, 0x5a, 0x16, 0xb1, 0x71, 0x07,
0xee, 0xc0, 0xe2, 0xc8, 0x4b, 0x26, 0x11, 0xee, 0xff, 0x96, 0x45, 0x28, 0x0b, 0xe3, 0x66, 0x4e, 0x16, 0x47, 0x7e, 0x3a, 0x89, 0x71, 0xff, 0xb7, 0x2c, 0x42, 0x79, 0x18, 0x37, 0x73, 0x12, 0xb5,
0xa2, 0x36, 0xee, 0x25, 0xfe, 0xb0, 0xa7, 0x72, 0x65, 0xb0, 0x44, 0x51, 0x16, 0x4a, 0x9c, 0x38, 0x89, 0x97, 0x06, 0x43, 0x4f, 0xe5, 0xca, 0x60, 0x89, 0xb2, 0x2c, 0x94, 0x38, 0x49, 0xea, 0x9f,
0xf1, 0x4e, 0xb9, 0xdc, 0xa7, 0x45, 0xc2, 0xe9, 0xc0, 0xea, 0x61, 0xea, 0xe5, 0x31, 0xf4, 0x71, 0x70, 0xb9, 0x4f, 0x8b, 0x84, 0xd3, 0x85, 0xd5, 0x83, 0xcc, 0xcb, 0x63, 0xe8, 0xe3, 0xce, 0x3f,
0xe7, 0x9f, 0x2e, 0xc0, 0x5a, 0x2e, 0x4b, 0x87, 0x76, 0x49, 0x33, 0xc7, 0xd0, 0x1f, 0x1d, 0x87, 0x99, 0x87, 0xb5, 0x42, 0x96, 0x0e, 0xed, 0x92, 0x66, 0x8e, 0x61, 0x30, 0x3a, 0x8a, 0xf4, 0x61,
0xfa, 0x30, 0x53, 0x32, 0x2d, 0x20, 0x56, 0x16, 0x3b, 0x85, 0x2b, 0x4a, 0x21, 0xc1, 0x39, 0x4d, 0xa6, 0x62, 0x5a, 0x40, 0xac, 0x2c, 0x76, 0x02, 0x97, 0x95, 0x42, 0x82, 0x73, 0x9a, 0x6d, 0x9e,
0x37, 0xcf, 0x32, 0xed, 0x8a, 0x1f, 0xda, 0x4b, 0x98, 0x6d, 0x50, 0xe1, 0x26, 0x23, 0x17, 0xd7, 0x55, 0xda, 0x15, 0x3f, 0xb4, 0x97, 0x30, 0xdf, 0xa0, 0xc2, 0x4d, 0x46, 0x2e, 0xaf, 0x8f, 0x9d,
0xc7, 0xce, 0xa0, 0xa3, 0x35, 0x1f, 0x29, 0xdc, 0x0d, 0xed, 0x08, 0xdb, 0xfa, 0xe0, 0x0d, 0x6d, 0x42, 0x57, 0x6b, 0x3e, 0x52, 0xb8, 0x1b, 0xda, 0x11, 0xb6, 0xf5, 0xc1, 0x1b, 0xda, 0xb2, 0xd4,
0x59, 0xea, 0xbb, 0x3b, 0xb5, 0x36, 0x76, 0x09, 0x37, 0x54, 0x1e, 0x49, 0xef, 0x7c, 0x7b, 0xd5, 0x77, 0x77, 0x6a, 0x6d, 0xec, 0x02, 0xae, 0xab, 0x3c, 0x92, 0xde, 0xc5, 0xf6, 0xea, 0x6f, 0x35,
0xb7, 0x1a, 0x1b, 0x1d, 0x4c, 0xec, 0x46, 0xdf, 0x50, 0x31, 0xfb, 0x29, 0xac, 0x5e, 0x78, 0x7e, 0x36, 0x3a, 0x98, 0xd8, 0x8d, 0xbe, 0xa1, 0x62, 0xf6, 0x53, 0x58, 0x3d, 0xf7, 0x83, 0x54, 0x75,
0xa2, 0xba, 0x65, 0xe8, 0x22, 0xb3, 0xd4, 0xe4, 0xe6, 0x1b, 0x9a, 0x7c, 0x21, 0x3e, 0xb6, 0xb6, 0xcb, 0xd0, 0x45, 0x66, 0xa8, 0xc9, 0x8d, 0x37, 0x34, 0xf9, 0x42, 0x7c, 0x6c, 0x6d, 0x69, 0x53,
0xb4, 0x29, 0x35, 0x76, 0xff, 0xb8, 0x0c, 0x2d, 0xbb, 0x1e, 0x24, 0x53, 0xc9, 0xfb, 0x4a, 0x06, 0x6a, 0xec, 0xfd, 0x71, 0x15, 0x16, 0xec, 0x7a, 0x90, 0x4c, 0x25, 0xef, 0x2b, 0x19, 0xa8, 0xb4,
0x2a, 0xed, 0x35, 0x03, 0xe7, 0x6d, 0x02, 0xe5, 0x22, 0x9b, 0x80, 0x79, 0x0a, 0xaf, 0xbc, 0xc9, 0xd7, 0x1c, 0x5c, 0xb4, 0x09, 0x54, 0xcb, 0x6c, 0x02, 0xe6, 0x29, 0xbc, 0xf6, 0x26, 0x73, 0x62,
0x9c, 0x58, 0x7d, 0x3b, 0x73, 0xe2, 0x6c, 0xa1, 0x39, 0x71, 0xba, 0xd5, 0x69, 0xee, 0x97, 0xb5, 0xfd, 0xed, 0xcc, 0x89, 0x33, 0xa5, 0xe6, 0xc4, 0xe9, 0x56, 0xa7, 0xd9, 0x5f, 0xd6, 0xea, 0x34,
0x3a, 0xcd, 0xbf, 0xd6, 0xea, 0xd4, 0xfd, 0x3f, 0x25, 0x60, 0x79, 0xea, 0x65, 0x8f, 0x84, 0x19, 0xf7, 0x5a, 0xab, 0x53, 0xef, 0xff, 0x54, 0x80, 0x15, 0xa9, 0x97, 0x3d, 0x12, 0x66, 0x90, 0x90,
0x24, 0xe0, 0x43, 0x29, 0xc4, 0xbe, 0xfd, 0x76, 0x1c, 0xa0, 0x56, 0x4b, 0x7d, 0x8d, 0xac, 0x68, 0x0f, 0xa5, 0x10, 0xfb, 0xf6, 0xdb, 0x71, 0x80, 0x5a, 0x2d, 0xf5, 0x35, 0xb2, 0xa2, 0x19, 0x5f,
0xc6, 0x57, 0x99, 0xea, 0xd8, 0x82, 0x5b, 0x94, 0x95, 0x31, 0xa9, 0x56, 0xdf, 0x6c, 0x52, 0x9d, 0x65, 0xaa, 0x63, 0xf3, 0x6e, 0x59, 0x56, 0xce, 0xa4, 0x5a, 0x7f, 0xb3, 0x49, 0x75, 0xe6, 0xcd,
0x7d, 0xb3, 0x49, 0x75, 0x2e, 0x6b, 0x52, 0xed, 0xfe, 0xb5, 0x12, 0x2c, 0x17, 0x90, 0xd9, 0xaf, 0x26, 0xd5, 0xd9, 0xbc, 0x49, 0xb5, 0xf7, 0x57, 0x2b, 0xb0, 0x5c, 0x42, 0x66, 0xbf, 0xbe, 0x81,
0x6f, 0xe0, 0x48, 0x18, 0x96, 0xf4, 0x29, 0x4b, 0xc2, 0x30, 0xc1, 0xee, 0x5f, 0x82, 0x05, 0x8b, 0x23, 0x61, 0x58, 0xd2, 0xa7, 0x2a, 0x09, 0xc3, 0x04, 0x7b, 0x7f, 0x09, 0xe6, 0x2d, 0xd6, 0xfa,
0xb5, 0x7e, 0x7d, 0xed, 0x67, 0x35, 0x4a, 0x41, 0xd9, 0x16, 0xd6, 0xfd, 0x9f, 0x65, 0x60, 0x79, 0xf5, 0xb5, 0x9f, 0xd7, 0x28, 0x05, 0x65, 0x5b, 0x58, 0xef, 0x7f, 0x56, 0x81, 0x15, 0xd9, 0xfb,
0xf6, 0xfe, 0x73, 0xed, 0x43, 0x7e, 0x9e, 0x2a, 0x05, 0xf3, 0xf4, 0xff, 0x74, 0xe7, 0xf9, 0x00, 0xcf, 0xb5, 0x0f, 0xc5, 0x79, 0xaa, 0x95, 0xcc, 0xd3, 0xff, 0xd3, 0x9d, 0xe7, 0x03, 0x58, 0x92,
0x96, 0x64, 0xd0, 0xa8, 0x61, 0xf8, 0x12, 0x14, 0x93, 0xcf, 0x40, 0x9d, 0xda, 0xb6, 0x67, 0xd7, 0x41, 0xa3, 0x86, 0xe1, 0x4b, 0x50, 0x4c, 0x31, 0x03, 0x75, 0x6a, 0xdb, 0x9e, 0xdd, 0xb0, 0x82,
0xac, 0x20, 0x39, 0x63, 0xfb, 0xcd, 0x98, 0xb5, 0x9d, 0x2e, 0x74, 0xe4, 0x0c, 0xed, 0x9e, 0xf3, 0xe4, 0x8c, 0xed, 0x37, 0x67, 0xd6, 0x76, 0x7a, 0xd0, 0x95, 0x33, 0xb4, 0x73, 0xc6, 0xc3, 0xf4,
0x20, 0x39, 0x9a, 0x1c, 0x8b, 0xa8, 0x49, 0x3f, 0x0c, 0x48, 0x0d, 0x34, 0x33, 0xa5, 0x42, 0xf1, 0x70, 0x72, 0x24, 0xa2, 0x26, 0x83, 0x28, 0x24, 0x35, 0xd0, 0xcc, 0x94, 0x0a, 0xc5, 0x77, 0xa1,
0x5d, 0x68, 0x9a, 0xdb, 0x87, 0x5c, 0x8e, 0x8c, 0xed, 0x13, 0x55, 0x09, 0xb3, 0x14, 0xdb, 0x81, 0x6d, 0x6e, 0x1f, 0x72, 0x39, 0x72, 0xb6, 0x4f, 0x54, 0x25, 0xcc, 0x52, 0x6c, 0x1b, 0x16, 0x48,
0x16, 0x09, 0xc9, 0x81, 0xfe, 0xae, 0x4c, 0xdf, 0xbd, 0xc6, 0x9e, 0xb3, 0x37, 0xe3, 0x66, 0xbe, 0x48, 0x0e, 0xf4, 0x77, 0x55, 0xfa, 0xee, 0x35, 0xf6, 0x9c, 0xdd, 0x4b, 0x6e, 0xee, 0x1b, 0xf6,
0x61, 0xbf, 0x09, 0x2d, 0xfb, 0xb0, 0x28, 0xb5, 0x92, 0xa2, 0xd3, 0x03, 0x7e, 0x6e, 0x17, 0x66, 0x9b, 0xb0, 0x60, 0x1f, 0x16, 0xa5, 0x56, 0x52, 0x76, 0x7a, 0xc0, 0xcf, 0xed, 0xc2, 0x6c, 0x13,
0x5b, 0xd0, 0xce, 0x9e, 0x36, 0x65, 0xe4, 0xcf, 0x94, 0x0a, 0x72, 0xc5, 0xd9, 0xc7, 0xd2, 0xb9, 0x3a, 0xf9, 0xd3, 0xa6, 0x8c, 0xfc, 0x99, 0x52, 0x41, 0xa1, 0x38, 0xfb, 0x58, 0x3a, 0x37, 0x67,
0x39, 0x4b, 0x76, 0x96, 0x9b, 0xf6, 0x67, 0xc6, 0x34, 0x6d, 0x88, 0x3f, 0x86, 0xbb, 0xf3, 0x77, 0xc8, 0xce, 0x72, 0xd3, 0xfe, 0xcc, 0x98, 0xa6, 0x75, 0xf1, 0xc7, 0x70, 0x77, 0xfe, 0x0e, 0x40,
0x00, 0x52, 0x8c, 0xb5, 0xa1, 0xf9, 0xf4, 0x70, 0xf7, 0xa0, 0xb7, 0xbd, 0xb7, 0x75, 0x70, 0xb0, 0x86, 0xb1, 0x0e, 0xb4, 0x9f, 0x1e, 0xec, 0xec, 0x7b, 0x5b, 0xbb, 0x9b, 0xfb, 0xfb, 0x3b, 0x7b,
0xbb, 0xdf, 0x9e, 0x61, 0x0c, 0x5a, 0x64, 0x16, 0xdc, 0xd1, 0x58, 0x09, 0x31, 0x69, 0x88, 0x51, 0x9d, 0x4b, 0x8c, 0xc1, 0x02, 0x99, 0x05, 0xb7, 0x35, 0x56, 0x41, 0x4c, 0x1a, 0x62, 0x14, 0x56,
0x58, 0x99, 0xad, 0x40, 0xfb, 0xf1, 0x41, 0x06, 0xad, 0x3c, 0xa8, 0x6b, 0xfe, 0x70, 0x56, 0x61, 0x65, 0x2b, 0xd0, 0x79, 0xbc, 0x9f, 0x43, 0x6b, 0x0f, 0x9a, 0x9a, 0x3f, 0x9c, 0x55, 0x58, 0x11,
0x45, 0x04, 0x05, 0x3f, 0x10, 0xe4, 0xa1, 0xb4, 0x93, 0x7f, 0x58, 0x82, 0x2b, 0x99, 0x8c, 0x34, 0x41, 0xc1, 0x0f, 0x04, 0x79, 0x28, 0xed, 0xe4, 0x1f, 0x54, 0xe0, 0x72, 0x2e, 0x23, 0x0b, 0x0f,
0x3c, 0x4c, 0x28, 0x20, 0xb6, 0x56, 0x62, 0x83, 0xe4, 0xac, 0x50, 0xba, 0x66, 0x46, 0x82, 0xe4, 0x13, 0x0a, 0x88, 0xad, 0x95, 0xd8, 0x20, 0x39, 0x2b, 0x94, 0xae, 0x99, 0x93, 0x20, 0xc5, 0x0c,
0x33, 0x90, 0xe6, 0x0d, 0xdd, 0x34, 0xc3, 0x49, 0x45, 0x59, 0xce, 0x9a, 0x8e, 0xc2, 0xc9, 0x74, 0xa4, 0x79, 0x43, 0x37, 0xcd, 0x71, 0x52, 0x59, 0x96, 0xb3, 0xa6, 0xa3, 0x70, 0x72, 0x1d, 0x3f,
0xfc, 0x44, 0x04, 0x1b, 0x9b, 0x19, 0xa9, 0xb3, 0xd8, 0xee, 0xb2, 0x4a, 0xe2, 0xb1, 0xc2, 0x52, 0x16, 0xc1, 0xc6, 0x66, 0x46, 0xe6, 0x2c, 0xb6, 0xbb, 0xac, 0x92, 0x78, 0xac, 0xb0, 0x94, 0x1d,
0x76, 0xec, 0xfe, 0x16, 0xe6, 0x39, 0xff, 0xab, 0x0a, 0xec, 0xfb, 0x13, 0x1e, 0x5d, 0x52, 0xfc, 0xbb, 0xbf, 0xa5, 0x79, 0xce, 0xff, 0xaa, 0x03, 0xfb, 0xfe, 0x84, 0xc7, 0x17, 0x14, 0xff, 0xa5,
0x97, 0xb6, 0xb2, 0xae, 0x65, 0x6d, 0x88, 0x73, 0xe3, 0xc9, 0xf1, 0xe7, 0xfc, 0x52, 0xc5, 0x6b, 0xad, 0xac, 0x6b, 0x79, 0x1b, 0xe2, 0xec, 0x78, 0x72, 0xf4, 0x39, 0xbf, 0x50, 0xf1, 0x9a, 0xd5,
0x96, 0xdf, 0x2a, 0x5e, 0xb3, 0x28, 0x5e, 0xb2, 0xfa, 0xe6, 0x78, 0xc9, 0xd9, 0x37, 0xc5, 0x4b, 0xb7, 0x8a, 0xd7, 0x2c, 0x8b, 0x97, 0xac, 0xbf, 0x39, 0x5e, 0x72, 0xe6, 0x4d, 0xf1, 0x92, 0xdf,
0x7e, 0x03, 0x16, 0xfc, 0xd3, 0x20, 0x44, 0x71, 0x80, 0x2a, 0x44, 0xdc, 0x99, 0x5b, 0xaf, 0xe0, 0x80, 0xf9, 0xe0, 0x24, 0x8c, 0x50, 0x1c, 0xa0, 0x0a, 0x91, 0x74, 0x67, 0x6f, 0xd4, 0xf0, 0x98,
0x31, 0x5d, 0x82, 0x07, 0x88, 0xb1, 0x4f, 0xd3, 0x42, 0x7c, 0x70, 0x4a, 0xf1, 0xbd, 0xa6, 0x80, 0x2e, 0xc1, 0x7d, 0xc4, 0xd8, 0xa7, 0x59, 0x21, 0x3e, 0x38, 0xa1, 0xf8, 0x5e, 0x53, 0x40, 0xec,
0xd8, 0x1d, 0x9c, 0xf2, 0xfd, 0xb0, 0xef, 0x25, 0x61, 0x44, 0xe7, 0x34, 0xf5, 0x31, 0xe2, 0x31, 0x0c, 0x4e, 0xf8, 0x5e, 0xd4, 0xf7, 0xd3, 0x28, 0xa6, 0x73, 0x9a, 0xfa, 0x18, 0xf1, 0x84, 0xdd,
0xbb, 0x09, 0xad, 0x38, 0x9c, 0xa0, 0x52, 0xa5, 0xa6, 0x41, 0x18, 0xa5, 0x9a, 0x02, 0x3d, 0x14, 0x84, 0x85, 0x24, 0x9a, 0xa0, 0x52, 0xa5, 0xa6, 0x41, 0x18, 0xa5, 0xda, 0x02, 0x3d, 0x10, 0x93,
0x93, 0xb1, 0x01, 0xcb, 0x93, 0x98, 0xf7, 0x46, 0x7e, 0x1c, 0xe3, 0xc6, 0xd9, 0x0f, 0x83, 0x24, 0xb1, 0x0e, 0xcb, 0x93, 0x84, 0x7b, 0xa3, 0x20, 0x49, 0x70, 0xe3, 0xec, 0x47, 0x61, 0x1a, 0x47,
0x0a, 0x87, 0xd2, 0x34, 0xb5, 0x34, 0x89, 0xf9, 0x13, 0x91, 0xb3, 0x2d, 0x32, 0xd8, 0x77, 0xd3, 0x43, 0x69, 0x9a, 0x5a, 0x9a, 0x24, 0xfc, 0x89, 0xc8, 0xd9, 0x12, 0x19, 0xec, 0xbb, 0x59, 0x97,
0x2e, 0x8d, 0x3d, 0x3f, 0x8a, 0x3b, 0x40, 0x5d, 0x52, 0x23, 0xc5, 0x7e, 0x1f, 0x7a, 0x7e, 0xa4, 0xc6, 0x7e, 0x10, 0x27, 0x5d, 0xa0, 0x2e, 0xa9, 0x91, 0x62, 0xbf, 0x0f, 0xfc, 0x20, 0xd6, 0x7d,
0xfb, 0x82, 0x89, 0x38, 0x13, 0xc7, 0xd9, 0xc8, 0xc6, 0x71, 0xfe, 0xa4, 0x38, 0x8e, 0x73, 0x81, 0xc1, 0x44, 0x92, 0x8b, 0xe3, 0x6c, 0xe5, 0xe3, 0x38, 0x7f, 0x52, 0x1e, 0xc7, 0x39, 0x4f, 0x55,
0xaa, 0xbe, 0x2f, 0xab, 0xce, 0x2f, 0xf1, 0xdb, 0x87, 0x73, 0xfe, 0x7a, 0x02, 0x34, 0x65, 0x4c, 0xdf, 0x97, 0x55, 0x17, 0x97, 0xf8, 0xed, 0xc3, 0x39, 0x7f, 0x3d, 0x01, 0x9a, 0x32, 0xa6, 0x70,
0xe1, 0x06, 0xd4, 0xd4, 0x30, 0xf1, 0xac, 0x7e, 0x12, 0x85, 0x23, 0x75, 0x56, 0xc7, 0xdf, 0xac, 0x1d, 0x1a, 0x6a, 0x98, 0x78, 0x56, 0x3f, 0x8e, 0xa3, 0x91, 0x3a, 0xab, 0xe3, 0x6f, 0xb6, 0x00,
0x05, 0xe5, 0x24, 0x94, 0x1f, 0x97, 0x93, 0xd0, 0xf9, 0x5d, 0x68, 0x18, 0x2b, 0xc5, 0xde, 0x13, 0xd5, 0x34, 0x92, 0x1f, 0x57, 0xd3, 0xc8, 0xf9, 0x5d, 0x68, 0x19, 0x2b, 0xc5, 0xde, 0x13, 0x66,
0x66, 0x03, 0xd4, 0x09, 0xe5, 0x21, 0x5f, 0x78, 0x86, 0xea, 0x12, 0x7d, 0x3c, 0x60, 0xdf, 0x82, 0x03, 0xd4, 0x09, 0xe5, 0x21, 0x5f, 0x78, 0x86, 0x9a, 0x12, 0x7d, 0x3c, 0x60, 0xdf, 0x82, 0xa5,
0xa5, 0x81, 0x1f, 0x71, 0x0a, 0x89, 0xee, 0x45, 0xfc, 0x9c, 0x47, 0xb1, 0x32, 0x9f, 0xb4, 0x75, 0x41, 0x10, 0x73, 0x0a, 0x89, 0xf6, 0x62, 0x7e, 0xc6, 0xe3, 0x44, 0x99, 0x4f, 0x3a, 0x3a, 0xc3,
0x86, 0x2b, 0x70, 0xa7, 0x07, 0xcb, 0xd6, 0xd4, 0x68, 0xe1, 0x30, 0x47, 0x81, 0x90, 0xca, 0x82, 0x15, 0xb8, 0xe3, 0xc1, 0xb2, 0x35, 0x35, 0x5a, 0x38, 0xcc, 0x52, 0x20, 0xa4, 0xb2, 0xe0, 0xda,
0x6b, 0x07, 0x49, 0xca, 0x3c, 0xdc, 0x56, 0xa5, 0xe5, 0xa7, 0x37, 0x8e, 0xc2, 0x63, 0x6a, 0xa4, 0x41, 0x92, 0x32, 0x0f, 0xb7, 0x55, 0x69, 0xf9, 0xf1, 0xc6, 0x71, 0x74, 0x44, 0x8d, 0x54, 0x5c,
0xe4, 0x5a, 0x98, 0xf3, 0x3f, 0x2a, 0x50, 0xd9, 0x0b, 0xc7, 0xa6, 0x3f, 0xab, 0x94, 0xf7, 0x67, 0x0b, 0x73, 0xfe, 0x47, 0x0d, 0x6a, 0xbb, 0xd1, 0xd8, 0xf4, 0x67, 0x55, 0x8a, 0xfe, 0x2c, 0xa9,
0x49, 0xfd, 0xb7, 0xa7, 0xd5, 0x5b, 0xa9, 0xa4, 0x58, 0x20, 0xbb, 0x0b, 0x2d, 0xe4, 0xb4, 0x24, 0xff, 0x7a, 0x5a, 0xbd, 0x95, 0x4a, 0x8a, 0x05, 0xb2, 0xbb, 0xb0, 0x80, 0x9c, 0x96, 0x46, 0xa8,
0x44, 0x7d, 0xff, 0xc2, 0x8b, 0x44, 0xd4, 0x64, 0x85, 0xc8, 0x37, 0x93, 0xc3, 0x56, 0xa0, 0xa2, 0xef, 0x9f, 0xfb, 0xb1, 0x88, 0x9a, 0xac, 0x11, 0xf9, 0xe6, 0x72, 0xd8, 0x0a, 0xd4, 0xb4, 0xda,
0xd5, 0x36, 0x2a, 0x80, 0x49, 0x3c, 0x6c, 0x52, 0xcc, 0xc0, 0xa5, 0x34, 0xd3, 0xca, 0x14, 0x0a, 0x46, 0x05, 0x30, 0x89, 0x87, 0x4d, 0x8a, 0x19, 0xb8, 0x90, 0x66, 0x5a, 0x99, 0x42, 0xc1, 0x65,
0x2e, 0xfb, 0x7b, 0xc1, 0xce, 0x62, 0xf3, 0x2d, 0xca, 0x42, 0x5d, 0x1c, 0x19, 0x76, 0x94, 0xaa, 0x7f, 0x2f, 0xd8, 0x59, 0x6c, 0xbe, 0x65, 0x59, 0xa8, 0x8b, 0x23, 0xc3, 0x8e, 0x32, 0xd5, 0x56,
0xb6, 0x3a, 0x6d, 0x3a, 0x20, 0x6a, 0xb6, 0x03, 0x62, 0x1d, 0x1a, 0xc9, 0xf0, 0xbc, 0x37, 0xf6, 0xa7, 0x4d, 0x07, 0x44, 0xc3, 0x76, 0x40, 0xdc, 0x80, 0x56, 0x3a, 0x3c, 0xf3, 0xc6, 0xfe, 0xc5,
0x2e, 0x87, 0xa1, 0x37, 0x90, 0x8c, 0x62, 0x42, 0xec, 0x3e, 0xc0, 0x68, 0x3c, 0x96, 0x54, 0x4c, 0x30, 0xf2, 0x07, 0x92, 0x51, 0x4c, 0x88, 0xdd, 0x07, 0x18, 0x8d, 0xc7, 0x92, 0x8a, 0xc9, 0x82,
0x16, 0x84, 0xc6, 0x66, 0x5b, 0xce, 0xfe, 0x93, 0xc3, 0x43, 0x41, 0x7d, 0xae, 0x51, 0x86, 0xed, 0xd0, 0xda, 0xe8, 0xc8, 0xd9, 0x7f, 0x72, 0x70, 0x20, 0xa8, 0xcf, 0x35, 0xca, 0xb0, 0x1d, 0x58,
0x42, 0xab, 0x30, 0x84, 0xf9, 0xba, 0xf2, 0x6c, 0x87, 0xe3, 0x8d, 0x02, 0x3a, 0xcf, 0x7c, 0xd4, 0x28, 0x0d, 0x61, 0xbe, 0xa6, 0x3c, 0xdb, 0xd1, 0x78, 0xbd, 0x84, 0xce, 0x73, 0x1f, 0xf5, 0x7e,
0xfd, 0x6d, 0x60, 0xbf, 0x62, 0x04, 0xf2, 0x0b, 0xa8, 0xeb, 0x1e, 0x9a, 0x71, 0xbf, 0x14, 0xbe, 0x1b, 0xd8, 0xaf, 0x18, 0x81, 0xfc, 0x02, 0x9a, 0xba, 0x87, 0x66, 0xdc, 0x2f, 0x85, 0xaf, 0xb4,
0xd2, 0xb0, 0xe3, 0x7e, 0x29, 0x5a, 0xe5, 0x16, 0xb4, 0xc4, 0x6e, 0xa3, 0xe5, 0xa7, 0x08, 0x39, 0xec, 0xb8, 0x5f, 0x8a, 0x56, 0xb9, 0x05, 0x0b, 0x62, 0xb7, 0xd1, 0xf2, 0x53, 0x84, 0x1c, 0xe4,
0xc8, 0xa0, 0xce, 0x9f, 0x95, 0x60, 0x96, 0x28, 0x0f, 0xd5, 0x2f, 0x91, 0xa7, 0x1d, 0x81, 0xd4, 0x50, 0xe7, 0xcf, 0x2a, 0x30, 0x43, 0x94, 0x87, 0xea, 0x97, 0xc8, 0xd3, 0x8e, 0x40, 0xea, 0xda,
0xb5, 0x05, 0x37, 0x0b, 0x33, 0xc7, 0xba, 0xda, 0x50, 0xd6, 0x64, 0x60, 0x5e, 0x6f, 0x58, 0x87, 0xbc, 0x9b, 0x87, 0x99, 0x63, 0x5d, 0x6d, 0xa8, 0x6a, 0x32, 0x30, 0xaf, 0x37, 0xdc, 0x80, 0xa6,
0xba, 0x6e, 0xc9, 0x20, 0xa5, 0x14, 0x64, 0x37, 0xa0, 0x7a, 0x16, 0x8e, 0xd5, 0x09, 0x15, 0xd2, 0x6e, 0xc9, 0x20, 0xa5, 0x0c, 0x64, 0xd7, 0xa1, 0x7e, 0x1a, 0x8d, 0xd5, 0x09, 0x15, 0xb2, 0x19,
0x19, 0x75, 0x09, 0x4f, 0xfb, 0x83, 0xf5, 0x89, 0x21, 0x88, 0x53, 0x40, 0x16, 0x2e, 0x18, 0xeb, 0x75, 0x09, 0xcf, 0xfa, 0x83, 0xf5, 0x89, 0x21, 0x88, 0x53, 0x40, 0x1e, 0x2e, 0x19, 0xeb, 0x6c,
0x5c, 0xe1, 0x58, 0x9f, 0xc3, 0x22, 0xca, 0x07, 0xc3, 0x31, 0x32, 0x7d, 0x2f, 0x7a, 0x1f, 0x55, 0xe9, 0x58, 0x9f, 0xc3, 0x22, 0xca, 0x07, 0xc3, 0x31, 0x32, 0x7d, 0x2f, 0x7a, 0x1f, 0x55, 0x9b,
0x9b, 0xfe, 0x70, 0x32, 0xe0, 0xa6, 0x9d, 0x80, 0x0c, 0xdf, 0x12, 0x57, 0x1a, 0xb2, 0xf3, 0xcf, 0xfe, 0x70, 0x32, 0xe0, 0xa6, 0x9d, 0x80, 0x0c, 0xdf, 0x12, 0x57, 0x1a, 0xb2, 0xf3, 0x4f, 0x2b,
0x4a, 0x42, 0xee, 0x60, 0xbd, 0xec, 0x0e, 0x54, 0x71, 0xdb, 0xc8, 0x98, 0x85, 0x74, 0x48, 0x11, 0x42, 0xee, 0x60, 0xbd, 0xec, 0x0e, 0xd4, 0x71, 0xdb, 0xc8, 0x99, 0x85, 0x74, 0x48, 0x11, 0x96,
0x96, 0x73, 0xa9, 0x04, 0xae, 0x22, 0x99, 0xa6, 0xcd, 0xda, 0x85, 0x61, 0x3a, 0x3d, 0x64, 0xeb, 0x73, 0xa9, 0x04, 0xae, 0x22, 0x99, 0xa6, 0xcd, 0xda, 0x85, 0x61, 0x3a, 0x3b, 0x64, 0xeb, 0x91,
0x91, 0x65, 0xce, 0xa6, 0x19, 0x94, 0x6d, 0x18, 0x7e, 0xbd, 0xaa, 0xb5, 0x15, 0x29, 0x4d, 0x6a, 0xe5, 0xce, 0xa6, 0x39, 0x94, 0xad, 0x1b, 0x7e, 0xbd, 0xba, 0xb5, 0x15, 0x29, 0x4d, 0x6a, 0x70,
0x70, 0xca, 0x0d, 0x7f, 0xde, 0x1f, 0x96, 0x60, 0xc1, 0xea, 0x13, 0x72, 0x0f, 0x05, 0xfe, 0x0b, 0xc2, 0x0d, 0x7f, 0xde, 0x1f, 0x56, 0x60, 0xde, 0xea, 0x13, 0x72, 0x0f, 0x05, 0xfe, 0x0b, 0x2b,
0x2b, 0x93, 0x5c, 0x79, 0x13, 0x32, 0x39, 0xaf, 0x6c, 0x73, 0x9e, 0xf6, 0x0f, 0x55, 0x4c, 0xff, 0x93, 0x5c, 0x79, 0x13, 0x32, 0x39, 0xaf, 0x6a, 0x73, 0x9e, 0xf6, 0x0f, 0xd5, 0x4c, 0xff, 0xd0,
0xd0, 0x7d, 0xa8, 0xa7, 0x77, 0x5b, 0xec, 0x4e, 0x61, 0x8b, 0x2a, 0xb8, 0x2a, 0x2d, 0x94, 0x7a, 0x7d, 0x68, 0x66, 0x77, 0x5b, 0xec, 0x4e, 0x61, 0x8b, 0x2a, 0xb8, 0x2a, 0x2b, 0x94, 0x79, 0x20,
0x20, 0x66, 0x0d, 0x0f, 0x84, 0xf3, 0x29, 0x34, 0x8c, 0xf2, 0xa6, 0x07, 0xa1, 0x64, 0x79, 0x10, 0x66, 0x0c, 0x0f, 0x84, 0xf3, 0x29, 0xb4, 0x8c, 0xf2, 0xa6, 0x07, 0xa1, 0x62, 0x79, 0x10, 0x74,
0x74, 0xe4, 0x61, 0x39, 0x8d, 0x3c, 0x74, 0x7e, 0x5e, 0x86, 0x05, 0x24, 0x6f, 0x3f, 0x38, 0x3d, 0xe4, 0x61, 0x35, 0x8b, 0x3c, 0x74, 0x7e, 0x5e, 0x85, 0x79, 0x24, 0xef, 0x20, 0x3c, 0x39, 0x88,
0x0c, 0x87, 0x7e, 0xff, 0x92, 0xc8, 0x4a, 0x51, 0xb2, 0x54, 0x1b, 0x14, 0x99, 0xdb, 0x30, 0x8a, 0x86, 0x41, 0xff, 0x82, 0xc8, 0x4a, 0x51, 0xb2, 0x54, 0x1b, 0x14, 0x99, 0xdb, 0x30, 0x8a, 0x21,
0x21, 0x1d, 0x6e, 0x2d, 0x64, 0xa6, 0x4e, 0xa3, 0x50, 0x45, 0x91, 0x74, 0xec, 0xc5, 0xdc, 0xb8, 0x1d, 0x6e, 0x2d, 0x64, 0xa6, 0x4e, 0xa3, 0x50, 0x45, 0x91, 0x74, 0xe4, 0x27, 0xdc, 0xb8, 0xec,
0xec, 0xe2, 0xda, 0x20, 0x8a, 0x3e, 0x04, 0x28, 0x8e, 0x74, 0xe4, 0x0f, 0x87, 0xbe, 0x28, 0x2b, 0xe2, 0xda, 0x20, 0x8a, 0x3e, 0x04, 0x28, 0x8e, 0x74, 0x14, 0x0c, 0x87, 0x81, 0x28, 0x2b, 0xce,
0xce, 0xbb, 0x45, 0x59, 0xd8, 0xe6, 0xc0, 0x8f, 0xbd, 0xe3, 0xd4, 0xf7, 0xab, 0xd3, 0x64, 0x2c, 0xbb, 0x65, 0x59, 0xd8, 0xe6, 0x20, 0x48, 0xfc, 0xa3, 0xcc, 0xf7, 0xab, 0xd3, 0x64, 0x2c, 0xf5,
0xf5, 0x5e, 0x19, 0xc6, 0x52, 0x11, 0x78, 0x6e, 0x83, 0xd9, 0x85, 0x9c, 0xcf, 0x2d, 0xa4, 0xf3, 0x5f, 0x19, 0xc6, 0x52, 0x11, 0x78, 0x6e, 0x83, 0xf9, 0x85, 0x9c, 0x2b, 0x2c, 0xa4, 0xf3, 0xaf,
0xaf, 0xcb, 0xd0, 0x30, 0xc8, 0x02, 0xd9, 0xb9, 0x70, 0xdf, 0x33, 0x50, 0x19, 0x14, 0x11, 0x58, 0xaa, 0xd0, 0x32, 0xc8, 0x02, 0xd9, 0xb9, 0x74, 0xdf, 0x33, 0x50, 0x19, 0x14, 0x11, 0x5a, 0x16,
0x16, 0x14, 0x03, 0x61, 0x37, 0xed, 0x56, 0xc9, 0xc9, 0x42, 0x0c, 0x6f, 0x91, 0xd0, 0x35, 0xa8, 0x14, 0x03, 0x61, 0x37, 0xed, 0x56, 0xc9, 0xc9, 0x42, 0x0c, 0x6f, 0x91, 0xd0, 0x55, 0x68, 0x22,
0x23, 0xe9, 0x7f, 0x48, 0xe6, 0x1a, 0x79, 0xb1, 0x4c, 0x03, 0x2a, 0x77, 0x93, 0x72, 0x67, 0xd3, 0xe9, 0x7f, 0x48, 0xe6, 0x1a, 0x79, 0xb1, 0x4c, 0x03, 0x2a, 0x77, 0x83, 0x72, 0x67, 0xb2, 0x5c,
0x5c, 0x02, 0x5e, 0x1b, 0x26, 0xf1, 0x31, 0x34, 0x65, 0x35, 0xb4, 0xc6, 0x34, 0xe8, 0x94, 0xf9, 0x02, 0x5e, 0x1b, 0x26, 0xf1, 0x31, 0xb4, 0x65, 0x35, 0xb4, 0xc6, 0x34, 0xe8, 0x8c, 0xf9, 0xac,
0xac, 0xf5, 0x77, 0xad, 0x92, 0xea, 0xcb, 0x4d, 0xf5, 0x65, 0xed, 0x4d, 0x5f, 0xaa, 0x92, 0xce, 0xf5, 0x77, 0xad, 0x92, 0xea, 0xcb, 0x0d, 0xf5, 0x65, 0xe3, 0x4d, 0x5f, 0xaa, 0x92, 0xce, 0x23,
0x23, 0x1d, 0x81, 0xf2, 0x28, 0xf2, 0xc6, 0x67, 0x4a, 0xa0, 0xdc, 0x87, 0x65, 0x25, 0x37, 0x26, 0x1d, 0x81, 0xf2, 0x28, 0xf6, 0xc7, 0xa7, 0x4a, 0xa0, 0xdc, 0x87, 0x65, 0x25, 0x37, 0x26, 0xa1,
0x81, 0x17, 0x04, 0xe1, 0x24, 0xe8, 0x73, 0x15, 0xa4, 0x58, 0x94, 0xe5, 0x0c, 0x74, 0x48, 0x3b, 0x1f, 0x86, 0xd1, 0x24, 0xec, 0x73, 0x15, 0xa4, 0x58, 0x96, 0xe5, 0x0c, 0x74, 0x48, 0x3b, 0x55,
0x55, 0xc4, 0xee, 0xc2, 0xac, 0x50, 0x3c, 0x85, 0x7a, 0x50, 0x2c, 0x42, 0x44, 0x11, 0x76, 0x07, 0xc4, 0xee, 0xc2, 0x8c, 0x50, 0x3c, 0x85, 0x7a, 0x50, 0x2e, 0x42, 0x44, 0x11, 0x76, 0x07, 0x66,
0x66, 0x85, 0xfe, 0x59, 0x9e, 0xca, 0xf4, 0xa2, 0x80, 0xb3, 0x01, 0x8b, 0x14, 0x43, 0x6f, 0xc8, 0x84, 0xfe, 0x59, 0x9d, 0xca, 0xf4, 0xa2, 0x80, 0xb3, 0x0e, 0x8b, 0x14, 0x43, 0x6f, 0xc8, 0xbe,
0xbe, 0x77, 0x8a, 0xd4, 0x86, 0xb9, 0xbe, 0x88, 0xb4, 0x5f, 0x01, 0x76, 0x20, 0xf8, 0xca, 0xf4, 0x77, 0xca, 0xd4, 0x86, 0xd9, 0xbe, 0x88, 0xb4, 0x5f, 0x01, 0xb6, 0x2f, 0xf8, 0xca, 0xf4, 0x23,
0x23, 0xff, 0x59, 0x05, 0x1a, 0x06, 0x8c, 0xf2, 0x89, 0x9c, 0x7f, 0xbd, 0x81, 0xef, 0x8d, 0x78, 0xff, 0x59, 0x0d, 0x5a, 0x06, 0x8c, 0xf2, 0x89, 0x9c, 0x7f, 0xde, 0x20, 0xf0, 0x47, 0x3c, 0xe5,
0xc2, 0x23, 0xc9, 0x4b, 0x19, 0x14, 0xcb, 0x79, 0xe7, 0xa7, 0xbd, 0x70, 0x92, 0xf4, 0x06, 0xfc, 0xb1, 0xe4, 0xa5, 0x1c, 0x8a, 0xe5, 0xfc, 0xb3, 0x13, 0x2f, 0x9a, 0xa4, 0xde, 0x80, 0x9f, 0xc4,
0x34, 0xe2, 0x5c, 0xea, 0x33, 0x19, 0x14, 0xcb, 0x21, 0x35, 0x1b, 0xe5, 0x84, 0xbb, 0x2e, 0x83, 0x9c, 0x4b, 0x7d, 0x26, 0x87, 0x62, 0x39, 0xa4, 0x66, 0xa3, 0x9c, 0x70, 0xd7, 0xe5, 0x50, 0xe5,
0x2a, 0xaf, 0xb0, 0x98, 0xa7, 0x6a, 0xea, 0x15, 0x16, 0xb3, 0x92, 0x95, 0xac, 0xb3, 0x05, 0x92, 0x15, 0x16, 0xf3, 0x54, 0xcf, 0xbc, 0xc2, 0x62, 0x56, 0xf2, 0x92, 0x75, 0xa6, 0x44, 0xb2, 0x7e,
0xf5, 0x23, 0x58, 0x15, 0x32, 0x54, 0x4a, 0x8f, 0x5e, 0x86, 0xb8, 0xa6, 0xe4, 0xb2, 0xbb, 0xd0, 0x04, 0xab, 0x42, 0x86, 0x4a, 0xe9, 0xe1, 0xe5, 0x88, 0x6b, 0x4a, 0x2e, 0xbb, 0x0b, 0x1d, 0xec,
0xc6, 0x3e, 0x2b, 0xd6, 0x88, 0xfd, 0x9f, 0x09, 0x1e, 0x2b, 0xb9, 0x39, 0x1c, 0xcb, 0x92, 0xeb, 0xb3, 0x62, 0x8d, 0x24, 0xf8, 0x99, 0xe0, 0xb1, 0x8a, 0x5b, 0xc0, 0xb1, 0x2c, 0xb9, 0x1e, 0xcc,
0xc1, 0x2c, 0x2b, 0x42, 0x73, 0x72, 0x38, 0x95, 0xf5, 0x5e, 0xd9, 0x65, 0xeb, 0xb2, 0x6c, 0x06, 0xb2, 0x22, 0x34, 0xa7, 0x80, 0x53, 0x59, 0xff, 0x95, 0x5d, 0xb6, 0x29, 0xcb, 0xe6, 0x70, 0xf6,
0x67, 0x1f, 0xc3, 0xda, 0x88, 0x0f, 0x7c, 0xcf, 0xae, 0xa2, 0x97, 0x6e, 0xf2, 0xd3, 0xb2, 0xb1, 0x31, 0xac, 0x8d, 0xf8, 0x20, 0xf0, 0xed, 0x2a, 0xbc, 0x6c, 0x93, 0x9f, 0x96, 0x8d, 0xad, 0xe0,
0x15, 0x9c, 0x85, 0x9f, 0x85, 0xa3, 0x63, 0x5f, 0x6c, 0x6c, 0xc2, 0x49, 0x52, 0x75, 0x73, 0xb8, 0x2c, 0xfc, 0x2c, 0x1a, 0x1d, 0x05, 0x62, 0x63, 0x13, 0x4e, 0x92, 0xba, 0x5b, 0xc0, 0x9d, 0x79,
0xb3, 0x00, 0x8d, 0xa3, 0x24, 0x1c, 0xab, 0xa5, 0x6f, 0x41, 0x53, 0x24, 0x65, 0x58, 0xea, 0x3b, 0x68, 0x1d, 0xa6, 0xd1, 0x58, 0x2d, 0xfd, 0x02, 0xb4, 0x45, 0x52, 0x86, 0xa5, 0xbe, 0x03, 0x57,
0x70, 0x95, 0xe8, 0xf5, 0x59, 0x38, 0x0e, 0x87, 0xe1, 0xe9, 0xa5, 0x65, 0xea, 0xf8, 0xb7, 0x25, 0x88, 0x5e, 0x9f, 0x45, 0xe3, 0x68, 0x18, 0x9d, 0x5c, 0x58, 0xa6, 0x8e, 0x7f, 0x53, 0x81, 0x65,
0x58, 0xb6, 0x72, 0x53, 0x5b, 0x07, 0xd9, 0x65, 0x55, 0x2c, 0xa1, 0x20, 0xf1, 0x25, 0x63, 0x5b, 0x2b, 0x37, 0xb3, 0x75, 0x90, 0x5d, 0x56, 0xc5, 0x12, 0x0a, 0x12, 0x5f, 0x32, 0xb6, 0x05, 0x51,
0x10, 0x05, 0x85, 0x1b, 0xec, 0xb9, 0x0c, 0x2f, 0xdc, 0x4a, 0x2f, 0xc8, 0xa8, 0x0f, 0x05, 0xbd, 0x50, 0xb8, 0xc1, 0x9e, 0xcb, 0xf0, 0xc2, 0xcd, 0xec, 0x82, 0x8c, 0xfa, 0x50, 0xd0, 0x7b, 0xb7,
0x77, 0xf2, 0xf4, 0x2e, 0xbf, 0x57, 0x57, 0x67, 0x54, 0x15, 0xbf, 0x29, 0x03, 0xa9, 0x06, 0x72, 0x48, 0xef, 0xf2, 0x7b, 0x75, 0x75, 0x46, 0x55, 0xf1, 0x9b, 0x32, 0x90, 0x6a, 0x20, 0x07, 0x5d,
0xd0, 0x15, 0x3b, 0xf8, 0xc5, 0x34, 0x8d, 0xa9, 0x1e, 0xf4, 0x35, 0x18, 0x3b, 0xbf, 0x28, 0x01, 0xb3, 0x83, 0x5f, 0x4c, 0xd3, 0x98, 0xea, 0x41, 0x5f, 0x83, 0x89, 0xf3, 0x8b, 0x0a, 0x40, 0xd6,
0xa4, 0xbd, 0xa3, 0xf0, 0x1b, 0xbd, 0xb5, 0x89, 0xbb, 0xe4, 0xc6, 0x36, 0xf6, 0x1e, 0x34, 0x75, 0x3b, 0x0a, 0xbf, 0xd1, 0x5b, 0x9b, 0xb8, 0x4b, 0x6e, 0x6c, 0x63, 0xef, 0x41, 0x5b, 0x47, 0x50,
0x04, 0x45, 0xba, 0x5b, 0x36, 0x14, 0x86, 0xda, 0xc5, 0x6d, 0x58, 0x3c, 0x1d, 0x86, 0xc7, 0xa4, 0x64, 0xbb, 0x65, 0x4b, 0x61, 0xa8, 0x5d, 0xdc, 0x86, 0xc5, 0x93, 0x61, 0x74, 0x44, 0x5a, 0x0c,
0xc5, 0x50, 0x9c, 0x73, 0x2c, 0x83, 0x73, 0x5b, 0x02, 0x7e, 0x28, 0xd1, 0x74, 0x6b, 0xad, 0x9a, 0xc5, 0x39, 0x27, 0x32, 0x38, 0x77, 0x41, 0xc0, 0x0f, 0x25, 0x9a, 0x6d, 0xad, 0x75, 0x73, 0x6b,
0x5b, 0x6b, 0xf1, 0x46, 0xf9, 0xf3, 0xb2, 0x76, 0x63, 0xa7, 0x33, 0xf1, 0x5a, 0x2e, 0x67, 0x9b, 0x2d, 0xdf, 0x28, 0x7f, 0x5e, 0xd5, 0x6e, 0xec, 0x6c, 0x26, 0x5e, 0xcb, 0xe5, 0x6c, 0xa3, 0x20,
0x39, 0xb1, 0x3e, 0xc5, 0x73, 0x4c, 0x67, 0xa0, 0xc3, 0x37, 0x5a, 0xca, 0x3f, 0x85, 0x56, 0x24, 0xd6, 0xa7, 0x78, 0x8e, 0xe9, 0x0c, 0x74, 0xf0, 0x46, 0x4b, 0xf9, 0xa7, 0xb0, 0x10, 0x0b, 0x99,
0x64, 0xa6, 0x12, 0xa8, 0xd5, 0xd7, 0x08, 0xd4, 0x85, 0xc8, 0xda, 0x99, 0xdf, 0x87, 0xb6, 0x37, 0xa9, 0x04, 0x6a, 0xfd, 0x35, 0x02, 0x75, 0x3e, 0xb6, 0x76, 0xe6, 0xf7, 0xa1, 0xe3, 0x0f, 0xce,
0x38, 0xe7, 0x51, 0xe2, 0x93, 0xe5, 0x90, 0xd4, 0x28, 0x31, 0xc0, 0x45, 0x03, 0x27, 0x6d, 0xe5, 0x78, 0x9c, 0x06, 0x64, 0x39, 0x24, 0x35, 0x4a, 0x0c, 0x70, 0xd1, 0xc0, 0x49, 0x5b, 0xb9, 0x0d,
0x36, 0x2c, 0xca, 0x50, 0x69, 0x5d, 0x52, 0xde, 0xaa, 0x4c, 0x61, 0x2c, 0xe8, 0xfc, 0x63, 0xe5, 0x8b, 0x32, 0x54, 0x5a, 0x97, 0x94, 0xb7, 0x2a, 0x33, 0x18, 0x0b, 0x3a, 0xff, 0x48, 0x79, 0xcd,
0x35, 0xb7, 0x57, 0xf7, 0xf5, 0xb3, 0x62, 0x8e, 0xb0, 0x9c, 0x19, 0xe1, 0x37, 0xa4, 0x67, 0x7a, 0xed, 0xd5, 0x7d, 0xfd, 0xac, 0x98, 0x23, 0xac, 0xe6, 0x46, 0xf8, 0x0d, 0xe9, 0x99, 0x1e, 0x28,
0xa0, 0x4c, 0x94, 0x15, 0x23, 0x24, 0x6f, 0x20, 0xa3, 0x0e, 0xec, 0x69, 0xad, 0xbe, 0xcd, 0xb4, 0x13, 0x65, 0xcd, 0x08, 0xc9, 0x1b, 0xc8, 0xa8, 0x03, 0x7b, 0x5a, 0xeb, 0x6f, 0x33, 0xad, 0xce,
0x3a, 0xff, 0xb1, 0x04, 0xf3, 0x7b, 0xe1, 0x78, 0x0f, 0xa7, 0x18, 0x75, 0x1c, 0x64, 0x13, 0x7d, 0x7f, 0xa8, 0xc0, 0xdc, 0x6e, 0x34, 0xde, 0xc5, 0x29, 0x46, 0x1d, 0x07, 0xd9, 0x44, 0xdf, 0x53,
0x4f, 0x41, 0x25, 0xdf, 0x10, 0xba, 0x58, 0xa8, 0x95, 0x2c, 0x64, 0xb5, 0x92, 0xdf, 0x86, 0x77, 0x50, 0xc9, 0x37, 0x84, 0x2e, 0x96, 0x6a, 0x25, 0xf3, 0x79, 0xad, 0xe4, 0xb7, 0xe1, 0x1d, 0x32,
0xc8, 0x48, 0x1e, 0x85, 0xe3, 0x30, 0x42, 0x76, 0xf5, 0x86, 0x42, 0x05, 0x09, 0x83, 0xe4, 0x4c, 0x92, 0xc7, 0xd1, 0x38, 0x8a, 0x91, 0x5d, 0xfd, 0xa1, 0x50, 0x41, 0xa2, 0x30, 0x3d, 0x55, 0xe2,
0x89, 0xd3, 0xd7, 0x15, 0x21, 0xcb, 0xd5, 0x30, 0x39, 0xef, 0x89, 0x13, 0x9e, 0xd4, 0xa2, 0x84, 0xf4, 0x75, 0x45, 0xc8, 0x72, 0x35, 0x4c, 0xcf, 0x3c, 0x71, 0xc2, 0x93, 0x5a, 0x94, 0x90, 0xb2,
0x94, 0xcd, 0x67, 0x38, 0xbf, 0x01, 0x75, 0x3a, 0x61, 0xd0, 0xd0, 0x3e, 0x80, 0xfa, 0x59, 0x38, 0xc5, 0x0c, 0xe7, 0x37, 0xa0, 0x49, 0x27, 0x0c, 0x1a, 0xda, 0x07, 0xd0, 0x3c, 0x8d, 0xc6, 0xde,
0xee, 0x9d, 0xf9, 0x41, 0xa2, 0xd8, 0xbf, 0x95, 0xaa, 0xfe, 0x7b, 0x34, 0x29, 0xba, 0x80, 0xf3, 0x69, 0x10, 0xa6, 0x8a, 0xfd, 0x17, 0x32, 0xd5, 0x7f, 0x97, 0x26, 0x45, 0x17, 0x70, 0xfe, 0x64,
0x27, 0x73, 0x30, 0xff, 0x38, 0x38, 0x0f, 0xfd, 0x3e, 0x79, 0xdf, 0x47, 0x7c, 0x14, 0xaa, 0x9b, 0x16, 0xe6, 0x1e, 0x87, 0x67, 0x51, 0xd0, 0x27, 0xef, 0xfb, 0x88, 0x8f, 0x22, 0x75, 0x73, 0x03,
0x1b, 0xf8, 0x9b, 0x2e, 0x47, 0xa7, 0x77, 0x2b, 0x05, 0x0b, 0x19, 0x08, 0x9e, 0x49, 0x23, 0xf3, 0x7f, 0xd3, 0xe5, 0xe8, 0xec, 0x6e, 0xa5, 0x60, 0x21, 0x03, 0xc1, 0x33, 0x69, 0x6c, 0xde, 0x8d,
0x6e, 0xa4, 0x4c, 0xa5, 0x07, 0xad, 0x59, 0xe3, 0xee, 0x0b, 0xd6, 0x26, 0xee, 0xec, 0xd1, 0xdc, 0x94, 0xa9, 0xec, 0xa0, 0x35, 0x63, 0xdc, 0x7d, 0xc1, 0xda, 0xc4, 0x9d, 0x3d, 0x9a, 0x3b, 0x11,
0x89, 0x88, 0x5b, 0x03, 0xc1, 0xc9, 0x97, 0x21, 0x95, 0x22, 0xe6, 0x4e, 0xc4, 0xff, 0x48, 0x88, 0x71, 0x6b, 0x20, 0x38, 0xf9, 0x32, 0xa4, 0x52, 0xc4, 0xdc, 0x89, 0xf8, 0x1f, 0x09, 0xd1, 0x39,
0xce, 0xd9, 0x11, 0x17, 0x6e, 0x0e, 0xad, 0x7a, 0xe1, 0x39, 0xdb, 0x04, 0x51, 0x3d, 0x13, 0x1f, 0x3b, 0xe6, 0xc2, 0xcd, 0xa1, 0x55, 0x2f, 0x3c, 0x67, 0x9b, 0x20, 0xaa, 0x67, 0xe2, 0x03, 0x51,
0x88, 0x32, 0x62, 0x3b, 0x30, 0x21, 0x54, 0x50, 0xb3, 0x37, 0x86, 0xc5, 0xad, 0xef, 0x2c, 0x2c, 0x46, 0x6c, 0x07, 0x26, 0x84, 0x0a, 0x6a, 0xfe, 0xc6, 0xb0, 0xb8, 0xf5, 0x9d, 0x87, 0x45, 0x9c,
0xe2, 0x2c, 0xb4, 0xd0, 0x15, 0xe3, 0x04, 0x71, 0xbf, 0x34, 0x8b, 0x1b, 0xa7, 0x73, 0x11, 0x53, 0x85, 0x16, 0xba, 0x62, 0x9c, 0x20, 0xee, 0x97, 0xe6, 0x71, 0xe3, 0x74, 0x2e, 0x62, 0xca, 0xd5,
0xae, 0x4e, 0xe7, 0x48, 0x32, 0xde, 0x70, 0x78, 0xec, 0xf5, 0x5f, 0x8a, 0xc3, 0x64, 0x53, 0x78, 0xe9, 0x1c, 0x49, 0xc6, 0x1f, 0x0e, 0x8f, 0xfc, 0xfe, 0x4b, 0x71, 0x98, 0x6c, 0x0b, 0xef, 0x98,
0xc7, 0x2c, 0x90, 0x02, 0x23, 0xd3, 0x75, 0xa5, 0xe8, 0xa5, 0xaa, 0x6b, 0x42, 0x6c, 0x13, 0x1a, 0x05, 0x52, 0x60, 0x64, 0xb6, 0xae, 0x14, 0xbd, 0x54, 0x77, 0x4d, 0x88, 0x6d, 0x40, 0x8b, 0x2c,
0x64, 0xb9, 0x90, 0x2b, 0xdb, 0xa2, 0x95, 0x6d, 0x9b, 0xa6, 0x0d, 0x5a, 0x5b, 0xb3, 0x90, 0x19, 0x17, 0x72, 0x65, 0x17, 0x68, 0x65, 0x3b, 0xa6, 0x69, 0x83, 0xd6, 0xd6, 0x2c, 0x64, 0xc6, 0x05,
0x17, 0xb0, 0x98, 0x8b, 0xf2, 0xf6, 0x06, 0x03, 0x19, 0x52, 0xd1, 0x16, 0xf7, 0x2b, 0x35, 0x40, 0x2c, 0x16, 0xa2, 0xbc, 0xfd, 0xc1, 0x40, 0x86, 0x54, 0x74, 0xc4, 0xfd, 0x4a, 0x0d, 0x90, 0x6d,
0xb6, 0x11, 0x31, 0x61, 0xa2, 0xc0, 0x12, 0x15, 0xb0, 0x30, 0x76, 0x43, 0x58, 0x0e, 0xc7, 0x9e, 0x44, 0x4c, 0x98, 0x28, 0xb0, 0x44, 0x05, 0x2c, 0x8c, 0x5d, 0x17, 0x96, 0xc3, 0xb1, 0x1f, 0x0c,
0x3f, 0xa0, 0x80, 0x25, 0x71, 0xfc, 0xd4, 0x18, 0xd6, 0xa1, 0x7e, 0xd3, 0xc6, 0xb9, 0x4c, 0xb3, 0x28, 0x60, 0x49, 0x1c, 0x3f, 0x35, 0x86, 0x75, 0xa8, 0xdf, 0xb4, 0x71, 0x2e, 0xd3, 0xac, 0x58,
0x62, 0x61, 0x38, 0x37, 0x3a, 0x3d, 0x4a, 0xc3, 0xc2, 0x6d, 0x90, 0x7d, 0x48, 0x4e, 0xed, 0x84, 0x18, 0xce, 0x8d, 0x4e, 0x8f, 0xb2, 0xb0, 0x70, 0x1b, 0x64, 0x1f, 0x92, 0x53, 0x3b, 0xe5, 0x14,
0x53, 0xec, 0x77, 0x6b, 0xf3, 0x1d, 0x39, 0x66, 0x49, 0xb6, 0xea, 0xef, 0x11, 0x16, 0x71, 0x45, 0xfb, 0xbd, 0xb0, 0xf1, 0x8e, 0x1c, 0xb3, 0x24, 0x5b, 0xf5, 0xf7, 0x10, 0x8b, 0xb8, 0xa2, 0x24,
0x49, 0x54, 0xdb, 0x84, 0x5f, 0x61, 0xd5, 0x52, 0xdb, 0x64, 0x51, 0xf2, 0x2b, 0x88, 0x02, 0xce, 0xaa, 0x6d, 0xc2, 0xaf, 0xb0, 0x6a, 0xa9, 0x6d, 0xb2, 0x28, 0xf9, 0x15, 0x44, 0x01, 0x67, 0x13,
0x16, 0x34, 0xcd, 0x0a, 0x58, 0x0d, 0xaa, 0x4f, 0x0f, 0x77, 0x0f, 0xda, 0x33, 0xac, 0x01, 0xf3, 0xda, 0x66, 0x05, 0xac, 0x01, 0xf5, 0xa7, 0x07, 0x3b, 0xfb, 0x9d, 0x4b, 0xac, 0x05, 0x73, 0x87,
0x47, 0xbb, 0xcf, 0x9e, 0xed, 0xef, 0xee, 0xb4, 0x4b, 0xac, 0x09, 0x35, 0x1d, 0xef, 0x5a, 0xc6, 0x3b, 0xcf, 0x9e, 0xed, 0xed, 0x6c, 0x77, 0x2a, 0xac, 0x0d, 0x0d, 0x1d, 0xef, 0x5a, 0xc5, 0xd4,
0xd4, 0xd6, 0xf6, 0xf6, 0xee, 0xe1, 0xb3, 0xdd, 0x9d, 0x76, 0xe5, 0xb3, 0x6a, 0xad, 0xdc, 0xae, 0xe6, 0xd6, 0xd6, 0xce, 0xc1, 0xb3, 0x9d, 0xed, 0x4e, 0xed, 0xb3, 0x7a, 0xa3, 0xda, 0xa9, 0x39,
0x38, 0x7f, 0x54, 0x81, 0x86, 0x51, 0xff, 0x1b, 0x6c, 0x46, 0x37, 0x00, 0xe8, 0x44, 0x91, 0xc6, 0x7f, 0x54, 0x83, 0x96, 0x51, 0xff, 0x1b, 0x6c, 0x46, 0xd7, 0x01, 0xe8, 0x44, 0x91, 0xc5, 0xb4,
0xb4, 0x54, 0x5d, 0x03, 0x41, 0x09, 0xa9, 0xcf, 0xda, 0x15, 0x71, 0xd9, 0x54, 0xa5, 0x69, 0xd6, 0xd4, 0x5d, 0x03, 0x41, 0x09, 0xa9, 0xcf, 0xda, 0x35, 0x71, 0xd9, 0x54, 0xa5, 0x69, 0xd6, 0xe8,
0xe8, 0x56, 0xa7, 0xe9, 0xc4, 0x99, 0x75, 0x6d, 0x10, 0x29, 0x4a, 0x02, 0x14, 0x84, 0x29, 0xf8, 0x56, 0xa7, 0xe9, 0xc4, 0x99, 0x71, 0x6d, 0x10, 0x29, 0x4a, 0x02, 0x14, 0x84, 0x29, 0xf8, 0xd0,
0xd0, 0x84, 0x70, 0x85, 0x22, 0x1e, 0x87, 0xc3, 0x73, 0x2e, 0x8a, 0x08, 0xbd, 0xcc, 0xc2, 0xb0, 0x84, 0x70, 0x85, 0x62, 0x9e, 0x44, 0xc3, 0x33, 0x2e, 0x8a, 0x08, 0xbd, 0xcc, 0xc2, 0xb0, 0x2d,
0x2d, 0x29, 0x6a, 0x8c, 0x00, 0xe9, 0x59, 0xd7, 0x06, 0xd9, 0xb7, 0xd5, 0x0a, 0xd5, 0x68, 0x85, 0x29, 0x6a, 0x8c, 0x00, 0xe9, 0x19, 0xd7, 0x06, 0xd9, 0xb7, 0xd5, 0x0a, 0x35, 0x68, 0x85, 0xd6,
0xd6, 0xf2, 0xd3, 0x6d, 0xad, 0xce, 0x93, 0x9c, 0xd1, 0xa7, 0x4e, 0xcb, 0xf4, 0xcd, 0xfc, 0x77, 0x8a, 0xd3, 0x6d, 0xad, 0xce, 0x93, 0x82, 0xd1, 0xa7, 0x49, 0xcb, 0xf4, 0xcd, 0xe2, 0x77, 0x7f,
0x7f, 0x3e, 0xc6, 0x9f, 0x04, 0xd8, 0xd6, 0x60, 0x20, 0x9b, 0x35, 0xef, 0xd2, 0x46, 0xe6, 0xe5, 0x3e, 0xc6, 0x9f, 0x14, 0xd8, 0xe6, 0x60, 0x20, 0x9b, 0x35, 0xef, 0xd2, 0xc6, 0xe6, 0xe5, 0x6d,
0x6d, 0x25, 0xdb, 0x0a, 0xe4, 0x47, 0xb9, 0x58, 0x7e, 0xbc, 0x96, 0xcb, 0x9c, 0xc7, 0xd0, 0x38, 0x25, 0xdb, 0x4a, 0xe4, 0x47, 0xb5, 0x5c, 0x7e, 0xbc, 0x96, 0xcb, 0x9c, 0xc7, 0xd0, 0x3a, 0x30,
0x34, 0xae, 0x83, 0x3b, 0x28, 0x6a, 0xd5, 0x45, 0x70, 0x21, 0x84, 0x85, 0xd1, 0x27, 0x45, 0x8d, 0xae, 0x83, 0x3b, 0x28, 0x6a, 0xd5, 0x45, 0x70, 0x21, 0x84, 0x85, 0xd1, 0x27, 0x43, 0x8d, 0x2e,
0x2e, 0x95, 0xcd, 0x2e, 0x39, 0xff, 0xa8, 0x24, 0x6e, 0xd8, 0xe9, 0x21, 0x88, 0xf6, 0x1d, 0x68, 0x55, 0xcd, 0x2e, 0x39, 0xff, 0xb0, 0x22, 0x6e, 0xd8, 0xe9, 0x21, 0x88, 0xf6, 0x1d, 0x68, 0x6b,
0x6a, 0xbf, 0x41, 0x7a, 0x29, 0xc1, 0xc2, 0xb0, 0x0c, 0x75, 0xa7, 0x17, 0x9e, 0x9c, 0xc4, 0x5c, 0xbf, 0x41, 0x76, 0x29, 0xc1, 0xc2, 0xb0, 0x0c, 0x75, 0xc7, 0x8b, 0x8e, 0x8f, 0x13, 0xae, 0xc2,
0x85, 0x0f, 0x5b, 0x98, 0xd2, 0x6a, 0x51, 0x4f, 0xf6, 0x45, 0x0b, 0xb1, 0x0c, 0x23, 0xce, 0xe1, 0x87, 0x2d, 0x4c, 0x69, 0xb5, 0xa8, 0x27, 0x07, 0xa2, 0x85, 0x44, 0x86, 0x11, 0x17, 0x70, 0xa4,
0x48, 0xb9, 0xd2, 0x6e, 0xab, 0x02, 0xa7, 0x75, 0x5a, 0xdf, 0x9d, 0xc8, 0xce, 0xf4, 0x5d, 0xa8, 0x5c, 0x69, 0xb7, 0x55, 0x81, 0xd3, 0x3a, 0xad, 0xef, 0x4e, 0xe4, 0x67, 0xfa, 0x2e, 0x34, 0x74,
0xe9, 0x7a, 0xed, 0x2d, 0x4b, 0x95, 0xd4, 0xf9, 0xb8, 0x35, 0xd2, 0x89, 0xd7, 0xea, 0xb4, 0x60, 0xbd, 0xf6, 0x96, 0xa5, 0x4a, 0xea, 0x7c, 0xdc, 0x1a, 0xe9, 0xc4, 0x6b, 0x75, 0x5a, 0x30, 0x50,
0xa0, 0x7c, 0x06, 0xdb, 0x00, 0x76, 0xe2, 0x47, 0xd9, 0xe2, 0x82, 0xa3, 0x0a, 0x72, 0x9c, 0x17, 0x31, 0x83, 0xad, 0x03, 0x3b, 0x0e, 0xe2, 0x7c, 0x71, 0xc1, 0x51, 0x25, 0x39, 0xce, 0x0b, 0x58,
0xb0, 0xac, 0xc4, 0x81, 0xa1, 0x6e, 0xdb, 0x0b, 0x59, 0x7a, 0x93, 0xb8, 0x2c, 0xe7, 0xc5, 0xa5, 0x56, 0xe2, 0xc0, 0x50, 0xb7, 0xed, 0x85, 0xac, 0xbc, 0x49, 0x5c, 0x56, 0x8b, 0xe2, 0xd2, 0xf9,
0xf3, 0xaf, 0xaa, 0x30, 0x2f, 0x57, 0x3b, 0xf7, 0xac, 0x80, 0xd8, 0x70, 0x2d, 0x8c, 0x75, 0xac, 0x97, 0x75, 0x98, 0x93, 0xab, 0x5d, 0x78, 0x56, 0x40, 0x6c, 0xb8, 0x16, 0xc6, 0xba, 0xd6, 0xe5,
0xcb, 0xa3, 0x44, 0x08, 0x72, 0x13, 0xbd, 0x93, 0xdd, 0x06, 0x53, 0xe3, 0x5f, 0x66, 0x2b, 0x5c, 0x51, 0x22, 0x04, 0xb9, 0x89, 0xde, 0xc9, 0x6f, 0x83, 0x99, 0xf1, 0x2f, 0xb7, 0x15, 0xae, 0x42,
0x85, 0xea, 0xd8, 0x4b, 0xce, 0xc8, 0x36, 0x24, 0x68, 0x89, 0xd2, 0xca, 0xbc, 0x3c, 0x6b, 0x9b, 0x7d, 0xec, 0xa7, 0xa7, 0x64, 0x1b, 0x12, 0xb4, 0x44, 0x69, 0x65, 0x5e, 0x9e, 0xb1, 0xcd, 0xcb,
0x97, 0x8b, 0x1e, 0x53, 0x10, 0x3a, 0x5f, 0xfe, 0x31, 0x85, 0x6b, 0x50, 0x17, 0xdb, 0x76, 0x6a, 0x65, 0x8f, 0x29, 0x08, 0x9d, 0xaf, 0xf8, 0x98, 0xc2, 0x55, 0x68, 0x8a, 0x6d, 0x3b, 0xb3, 0x20,
0x41, 0x4e, 0x81, 0xcc, 0x36, 0x5f, 0xcb, 0x6d, 0xf3, 0x6f, 0xbf, 0x01, 0x7f, 0x17, 0xe6, 0xc4, 0x67, 0x40, 0x6e, 0x9b, 0x6f, 0x14, 0xb6, 0xf9, 0xb7, 0xdf, 0x80, 0xbf, 0x0b, 0xb3, 0xe2, 0x42,
0x85, 0x22, 0x19, 0x26, 0x7e, 0x4d, 0x39, 0x88, 0x45, 0x39, 0xf5, 0x57, 0xc4, 0x8f, 0xb9, 0xb2, 0x91, 0x0c, 0x13, 0xbf, 0xaa, 0x1c, 0xc4, 0xa2, 0x9c, 0xfa, 0x2b, 0xe2, 0xc7, 0x5c, 0x59, 0xd6,
0xac, 0x79, 0x25, 0xb9, 0x61, 0x5f, 0x49, 0x36, 0x0d, 0xdf, 0xcd, 0x8c, 0xe1, 0xfb, 0x2e, 0xb4, 0xbc, 0x92, 0xdc, 0xb2, 0xaf, 0x24, 0x9b, 0x86, 0xef, 0x76, 0xce, 0xf0, 0x7d, 0x17, 0x3a, 0x7a,
0xf5, 0xf4, 0x91, 0xa5, 0x2a, 0x88, 0x65, 0x14, 0x71, 0x0e, 0x4f, 0xf7, 0x97, 0x96, 0xb5, 0xbf, 0xfa, 0xc8, 0x52, 0x15, 0x26, 0x32, 0x8a, 0xb8, 0x80, 0x67, 0xfb, 0xcb, 0x82, 0xb5, 0xbf, 0xa0,
0xa0, 0xc4, 0xda, 0x4a, 0x12, 0x3e, 0x1a, 0x27, 0x6a, 0x7f, 0x79, 0x08, 0x0b, 0x56, 0x27, 0x71, 0xc4, 0xda, 0x4c, 0x53, 0x3e, 0x1a, 0xa7, 0x6a, 0x7f, 0x79, 0x08, 0xf3, 0x56, 0x27, 0x71, 0x5b,
0x5b, 0x91, 0xc1, 0xeb, 0xed, 0x19, 0xb6, 0x00, 0xf5, 0xc7, 0x07, 0xbd, 0x87, 0xfb, 0x8f, 0x1f, 0x91, 0xc1, 0xeb, 0x9d, 0x4b, 0x6c, 0x1e, 0x9a, 0x8f, 0xf7, 0xbd, 0x87, 0x7b, 0x8f, 0x1f, 0xed,
0xed, 0x3d, 0x6b, 0x97, 0x30, 0x79, 0xf4, 0x7c, 0x7b, 0x7b, 0x77, 0x77, 0x87, 0xb6, 0x19, 0x80, 0x3e, 0xeb, 0x54, 0x30, 0x79, 0xf8, 0x7c, 0x6b, 0x6b, 0x67, 0x67, 0x9b, 0xb6, 0x19, 0x80, 0xd9,
0xb9, 0x87, 0x5b, 0x8f, 0x71, 0xcb, 0xa9, 0x38, 0xff, 0xbb, 0x04, 0x0d, 0xa3, 0x7a, 0xf6, 0x3d, 0x87, 0x9b, 0x8f, 0x71, 0xcb, 0xa9, 0x39, 0xff, 0xbb, 0x02, 0x2d, 0xa3, 0x7a, 0xf6, 0x3d, 0x3d,
0x3d, 0x33, 0xe2, 0xd6, 0xea, 0xf5, 0x7c, 0x17, 0x36, 0x94, 0xe0, 0x35, 0xa6, 0x46, 0xbf, 0x1f, 0x33, 0xe2, 0xd6, 0xea, 0xb5, 0x62, 0x17, 0xd6, 0x95, 0xe0, 0x35, 0xa6, 0x46, 0xbf, 0x1f, 0x51,
0x51, 0x9e, 0xfa, 0x7e, 0x04, 0x2e, 0x8f, 0x27, 0x6a, 0xd0, 0xf3, 0x20, 0x8e, 0x21, 0x59, 0x58, 0x9d, 0xfa, 0x7e, 0x04, 0x2e, 0x8f, 0x2f, 0x6a, 0xd0, 0xf3, 0x20, 0x8e, 0x21, 0x79, 0x58, 0xc4,
0xc4, 0x08, 0xa5, 0xbb, 0x05, 0x96, 0x14, 0xa6, 0xb7, 0x2c, 0xec, 0x7c, 0x04, 0x90, 0xf6, 0xc6, 0x08, 0x65, 0xbb, 0x05, 0x96, 0x14, 0xa6, 0xb7, 0x3c, 0xec, 0x7c, 0x04, 0x90, 0xf5, 0xc6, 0x1e,
0x1e, 0xf6, 0x8c, 0x3d, 0xec, 0x92, 0x31, 0xec, 0xb2, 0xb3, 0x23, 0x04, 0x86, 0x9c, 0x42, 0xed, 0xf6, 0x25, 0x7b, 0xd8, 0x15, 0x63, 0xd8, 0x55, 0x67, 0x5b, 0x08, 0x0c, 0x39, 0x85, 0xda, 0xc3,
0xe1, 0xfc, 0x36, 0x30, 0x65, 0xe9, 0xa1, 0x58, 0xbc, 0xf1, 0x90, 0x27, 0xea, 0x3a, 0xc9, 0x92, 0xf9, 0x6d, 0x60, 0xca, 0xd2, 0x43, 0xb1, 0x78, 0xe3, 0x21, 0x4f, 0xd5, 0x75, 0x92, 0x25, 0x99,
0xcc, 0x79, 0xac, 0x33, 0xd4, 0x8d, 0xa8, 0xb4, 0x96, 0x54, 0xee, 0x48, 0x8a, 0xcb, 0xca, 0x1d, 0xf3, 0x58, 0x67, 0xa8, 0x1b, 0x51, 0x59, 0x2d, 0x99, 0xdc, 0x91, 0x14, 0x97, 0x97, 0x3b, 0xb2,
0x59, 0xd4, 0xd5, 0xf9, 0x4e, 0x17, 0x3a, 0x3b, 0x1c, 0x6b, 0xdb, 0x1a, 0x0e, 0x33, 0xdd, 0xc1, 0xa8, 0xab, 0xf3, 0x9d, 0x1e, 0x74, 0xb7, 0x39, 0xd6, 0xb6, 0x39, 0x1c, 0xe6, 0xba, 0x83, 0x47,
0xa3, 0x7a, 0x41, 0x9e, 0x3c, 0xc7, 0x7f, 0x1f, 0xae, 0x6c, 0x89, 0x9b, 0x23, 0xbf, 0xae, 0xc0, 0xf5, 0x92, 0x3c, 0x79, 0x8e, 0xff, 0x3e, 0x5c, 0xde, 0x14, 0x37, 0x47, 0x7e, 0x5d, 0x81, 0xc5,
0x62, 0xa7, 0x03, 0xab, 0xd9, 0x2a, 0x65, 0x63, 0x0f, 0x61, 0x69, 0x87, 0x1f, 0x4f, 0x4e, 0xf7, 0x4e, 0x17, 0x56, 0xf3, 0x55, 0xca, 0xc6, 0x1e, 0xc2, 0xd2, 0x36, 0x3f, 0x9a, 0x9c, 0xec, 0xf1,
0xf9, 0x79, 0xda, 0x10, 0x83, 0x6a, 0x7c, 0x16, 0x5e, 0xc8, 0xf9, 0xa1, 0xdf, 0xec, 0x3a, 0xc0, 0xb3, 0xac, 0x21, 0x06, 0xf5, 0xe4, 0x34, 0x3a, 0x97, 0xf3, 0x43, 0xbf, 0xd9, 0x35, 0x80, 0x21,
0x10, 0xcb, 0xf4, 0xe2, 0x31, 0xef, 0xab, 0x5b, 0xc1, 0x84, 0x1c, 0x8d, 0x79, 0xdf, 0xf9, 0x08, 0x96, 0xf1, 0x92, 0x31, 0xef, 0xab, 0x5b, 0xc1, 0x84, 0x1c, 0x8e, 0x79, 0xdf, 0xf9, 0x08, 0x98,
0x98, 0x59, 0x8f, 0x9c, 0x2f, 0xd4, 0xad, 0x27, 0xc7, 0xbd, 0xf8, 0x32, 0x4e, 0xf8, 0x48, 0x5d, 0x59, 0x8f, 0x9c, 0x2f, 0xd4, 0xad, 0x27, 0x47, 0x5e, 0x72, 0x91, 0xa4, 0x7c, 0xa4, 0xae, 0x3b,
0x77, 0x36, 0x21, 0xe7, 0x36, 0x34, 0x0f, 0xbd, 0x4b, 0x97, 0x7f, 0x21, 0xdf, 0x2b, 0x59, 0x83, 0x9b, 0x90, 0x73, 0x1b, 0xda, 0x07, 0xfe, 0x85, 0xcb, 0xbf, 0x90, 0xef, 0x95, 0xac, 0xc1, 0xdc,
0xf9, 0xb1, 0x77, 0x89, 0xfc, 0xac, 0xcd, 0xff, 0x94, 0xed, 0xfc, 0x69, 0x05, 0xe6, 0x44, 0x49, 0xd8, 0xbf, 0x40, 0x7e, 0xd6, 0xe6, 0x7f, 0xca, 0x76, 0xfe, 0xb4, 0x06, 0xb3, 0xa2, 0x24, 0xd6,
0xac, 0x75, 0xc0, 0xe3, 0xc4, 0x0f, 0x88, 0xc7, 0x54, 0xad, 0x06, 0x94, 0x13, 0x98, 0xe5, 0x02, 0x3a, 0xe0, 0x49, 0x1a, 0x84, 0xc4, 0x63, 0xaa, 0x56, 0x03, 0x2a, 0x08, 0xcc, 0x6a, 0x89, 0xc0,
0x81, 0x29, 0x6d, 0x52, 0xea, 0x76, 0xa5, 0x24, 0x59, 0x0b, 0x43, 0xb1, 0x95, 0xde, 0x10, 0x10, 0x94, 0x36, 0x29, 0x75, 0xbb, 0x52, 0x92, 0xac, 0x85, 0xa1, 0xd8, 0xca, 0x6e, 0x08, 0x08, 0x4a,
0x94, 0x9a, 0x02, 0x19, 0xff, 0x5a, 0xaa, 0xc1, 0x8b, 0xfe, 0xa9, 0xbd, 0x40, 0xca, 0x44, 0x13, 0xcd, 0x80, 0x9c, 0x7f, 0x2d, 0xd3, 0xe0, 0x45, 0xff, 0xd4, 0x5e, 0x20, 0x65, 0xa2, 0x09, 0x95,
0x2a, 0x3c, 0x27, 0xcc, 0xab, 0x78, 0xec, 0xcc, 0x39, 0x21, 0x77, 0x1e, 0xa8, 0xbd, 0xc5, 0x79, 0x9e, 0x13, 0xe6, 0x54, 0x3c, 0x76, 0xee, 0x9c, 0x50, 0x38, 0x0f, 0x34, 0xde, 0xe2, 0x3c, 0x20,
0x40, 0x18, 0xaa, 0x5e, 0x77, 0x1e, 0x80, 0xb7, 0x39, 0x0f, 0xbc, 0x8d, 0x5f, 0xab, 0x0b, 0x35, 0x0c, 0x55, 0xaf, 0x3b, 0x0f, 0xc0, 0xdb, 0x9c, 0x07, 0xde, 0xc6, 0xaf, 0xd5, 0x83, 0x06, 0xed,
0xda, 0xd3, 0x0d, 0x11, 0xa9, 0xd2, 0xc8, 0x2f, 0xda, 0x9c, 0xb2, 0x60, 0xf1, 0x8b, 0xb4, 0xa7, 0xe9, 0x86, 0x88, 0x54, 0x69, 0xe4, 0x17, 0x6d, 0x4e, 0x99, 0xb7, 0xf8, 0x45, 0xda, 0x53, 0x5c,
0xb8, 0x3a, 0xdf, 0x19, 0xc1, 0xbc, 0x04, 0x51, 0x15, 0x3b, 0xf6, 0x13, 0x69, 0xb9, 0xc4, 0x9f, 0x9d, 0xef, 0x8c, 0x60, 0x4e, 0x82, 0xa8, 0x8a, 0x1d, 0x05, 0xa9, 0xb4, 0x5c, 0xe2, 0x4f, 0xa4,
0x48, 0x91, 0x81, 0x37, 0x52, 0xb7, 0xd1, 0xe9, 0x37, 0x0e, 0x99, 0x2e, 0xc5, 0x7e, 0x31, 0xf1, 0xc8, 0xd0, 0x1f, 0xa9, 0xdb, 0xe8, 0xf4, 0x1b, 0x87, 0x4c, 0x97, 0x62, 0xbf, 0x98, 0x04, 0x31,
0x23, 0x3e, 0x50, 0xf7, 0xba, 0x0c, 0x88, 0x22, 0x71, 0xe3, 0xde, 0xcb, 0x20, 0xbc, 0x08, 0xe4, 0x1f, 0xa8, 0x7b, 0x5d, 0x06, 0x44, 0x91, 0xb8, 0x89, 0xf7, 0x32, 0x8c, 0xce, 0x43, 0x79, 0xb3,
0xcd, 0x2e, 0x9d, 0x76, 0x18, 0xb4, 0xe9, 0x55, 0x0a, 0x3c, 0x4e, 0x2b, 0xb6, 0xfc, 0x7b, 0x25, 0x4b, 0xa7, 0x1d, 0x06, 0x1d, 0x7a, 0x95, 0x02, 0x8f, 0xd3, 0x8a, 0x2d, 0xff, 0x6e, 0x05, 0x3a,
0x68, 0x4b, 0x06, 0xd1, 0x79, 0xca, 0x09, 0xfd, 0xba, 0xeb, 0x8b, 0x37, 0x61, 0x81, 0x0e, 0xf3, 0x92, 0x41, 0x74, 0x9e, 0x72, 0x42, 0xbf, 0xee, 0xfa, 0xe2, 0x4d, 0x98, 0xa7, 0xc3, 0xbc, 0xde,
0x7a, 0xab, 0x90, 0x0e, 0x5d, 0x0b, 0xc4, 0xfe, 0xaa, 0x50, 0xb8, 0x91, 0x3f, 0x94, 0xf4, 0x66, 0x2a, 0xa4, 0x43, 0xd7, 0x02, 0xb1, 0xbf, 0x2a, 0x14, 0x6e, 0x14, 0x0c, 0x25, 0xbd, 0x99, 0x90,
0x42, 0x6a, 0xb7, 0x89, 0x3c, 0x19, 0xc4, 0x5f, 0x72, 0x75, 0xda, 0xf9, 0xe3, 0x12, 0x2c, 0x19, 0xda, 0x6d, 0x62, 0x5f, 0x06, 0xf1, 0x57, 0x5c, 0x9d, 0x76, 0xfe, 0xb8, 0x02, 0x4b, 0x46, 0x87,
0x1d, 0x96, 0x0c, 0xf6, 0x29, 0x34, 0xf5, 0xe3, 0x2f, 0x5c, 0x2b, 0x43, 0x6b, 0xb6, 0x44, 0x48, 0x25, 0x83, 0x7d, 0x0a, 0x6d, 0xfd, 0xf8, 0x0b, 0xd7, 0xca, 0xd0, 0x9a, 0x2d, 0x11, 0xb2, 0xcf,
0x3f, 0xb3, 0x0a, 0x13, 0x9d, 0x7a, 0x97, 0xd4, 0xc1, 0x78, 0x32, 0x92, 0x5a, 0x88, 0x09, 0xe1, 0xac, 0xc2, 0x44, 0xa7, 0xfe, 0x05, 0x75, 0x30, 0x99, 0x8c, 0xa4, 0x16, 0x62, 0x42, 0xb8, 0xfe,
0xfa, 0x5f, 0x70, 0xfe, 0x52, 0x17, 0x11, 0x7a, 0x90, 0x85, 0x91, 0x13, 0x24, 0x0c, 0x92, 0x33, 0xe7, 0x9c, 0xbf, 0xd4, 0x45, 0x84, 0x1e, 0x64, 0x61, 0xe4, 0x04, 0x89, 0xc2, 0xf4, 0x54, 0x17,
0x5d, 0xa8, 0x2a, 0x9d, 0x20, 0x26, 0xe8, 0xfc, 0x95, 0x32, 0x2c, 0x0b, 0xab, 0x92, 0xb4, 0xe6, 0xaa, 0x4b, 0x27, 0x88, 0x09, 0x3a, 0xff, 0xa9, 0x0a, 0xcb, 0xc2, 0xaa, 0x24, 0xad, 0x79, 0xfa,
0xe9, 0xfb, 0xf7, 0x73, 0xc2, 0xc0, 0x26, 0x84, 0xcd, 0xde, 0x8c, 0x2b, 0xd3, 0xec, 0x7b, 0x6f, 0xfe, 0xfd, 0xac, 0x30, 0xb0, 0x09, 0x61, 0xb3, 0x7b, 0xc9, 0x95, 0x69, 0xf6, 0xbd, 0xb7, 0xb4,
0x69, 0x09, 0xd3, 0xb7, 0x05, 0xa6, 0xac, 0x45, 0xa5, 0x68, 0x2d, 0x5e, 0x33, 0xd3, 0x45, 0xfe, 0x84, 0xe9, 0xdb, 0x02, 0x53, 0xd6, 0xa2, 0x56, 0xb6, 0x16, 0xaf, 0x99, 0xe9, 0x32, 0x7f, 0xd4,
0xa8, 0xd9, 0x62, 0x7f, 0xd4, 0x5b, 0xf9, 0x7f, 0x1e, 0xcc, 0xc3, 0x6c, 0xdc, 0x0f, 0xc7, 0xdc, 0x4c, 0xb9, 0x3f, 0xea, 0xed, 0xfc, 0x3f, 0x85, 0x90, 0xfa, 0x39, 0x59, 0xca, 0x0a, 0xa9, 0xdf,
0x59, 0x85, 0x15, 0x7b, 0x0a, 0xa4, 0x0c, 0xfe, 0x45, 0x09, 0x3a, 0x0f, 0x85, 0xbb, 0xdd, 0x0f, 0x80, 0x35, 0x0b, 0x20, 0x39, 0x1b, 0x1c, 0x07, 0x5c, 0xdd, 0x95, 0x5b, 0x4a, 0x78, 0xea, 0x59,
0x4e, 0xf7, 0xfc, 0x38, 0x09, 0x23, 0xfd, 0x98, 0xc9, 0x0d, 0x80, 0x38, 0xf1, 0x22, 0x79, 0x2a, 0x45, 0x1e, 0xcc, 0xc1, 0x4c, 0xd2, 0x8f, 0xc6, 0xdc, 0x59, 0x85, 0x15, 0x7b, 0x72, 0xa5, 0x74,
0x13, 0xaa, 0xa4, 0x81, 0xe0, 0x48, 0x78, 0x30, 0x10, 0xb9, 0x62, 0x05, 0x75, 0x3a, 0xa7, 0xaa, 0xff, 0x45, 0x05, 0xba, 0x0f, 0x85, 0x23, 0x3f, 0x08, 0x4f, 0x76, 0x83, 0x24, 0x8d, 0x62, 0xfd,
0x4b, 0xcb, 0x98, 0xa5, 0xf0, 0xde, 0x12, 0xf7, 0x71, 0xb0, 0xcb, 0xfc, 0x9c, 0x36, 0x36, 0x61, 0x4c, 0xca, 0x75, 0x80, 0x24, 0xf5, 0x63, 0x79, 0xde, 0x13, 0x4a, 0xaa, 0x81, 0xe0, 0x1c, 0xf1,
0x6e, 0xca, 0xa0, 0xce, 0xef, 0x97, 0x61, 0x31, 0xed, 0x24, 0xc5, 0x81, 0xd9, 0xe2, 0x51, 0x6a, 0x70, 0x20, 0x72, 0x05, 0x6d, 0xe8, 0x74, 0xe1, 0x10, 0x20, 0x6d, 0x6e, 0x96, 0x2a, 0x7d, 0x4b,
0xb9, 0xa9, 0x78, 0x94, 0x5e, 0xac, 0x9e, 0x8f, 0x6a, 0xaf, 0x61, 0x1c, 0x33, 0x50, 0x76, 0x13, 0xdc, 0xf4, 0xc1, 0xc9, 0xe0, 0x67, 0xb4, 0x65, 0x0a, 0x43, 0x56, 0x0e, 0x75, 0x7e, 0xbf, 0x0a,
0x1a, 0x2a, 0x15, 0x4e, 0x12, 0xe3, 0x55, 0x01, 0x13, 0x16, 0x51, 0xf3, 0xa8, 0x78, 0xcb, 0x43, 0x8b, 0x59, 0x27, 0x29, 0xc2, 0xcc, 0x16, 0xbc, 0x52, 0x7f, 0xce, 0x04, 0xaf, 0xf4, 0x8f, 0x79,
0x84, 0x4c, 0xd1, 0x0d, 0xc7, 0x51, 0x42, 0x5f, 0x8a, 0x99, 0x57, 0x49, 0x94, 0x20, 0xa8, 0xb1, 0x01, 0x2a, 0xd4, 0x86, 0xd9, 0xcd, 0x40, 0xd9, 0x4d, 0x68, 0xa9, 0x54, 0x34, 0x49, 0x8d, 0xf7,
0x8a, 0x07, 0x9e, 0x48, 0x5b, 0x35, 0x35, 0xb9, 0x9a, 0x7e, 0x8d, 0x49, 0x73, 0xa6, 0xa8, 0x31, 0x0a, 0x4c, 0x58, 0xc4, 0xe3, 0xa3, 0x4a, 0x2f, 0x8f, 0x27, 0x32, 0x45, 0x77, 0x27, 0x47, 0x29,
0xbd, 0xf2, 0x50, 0x75, 0x4d, 0x48, 0x19, 0x27, 0xc2, 0x89, 0xe1, 0xba, 0xaf, 0xba, 0x16, 0xe6, 0x7d, 0x29, 0xd6, 0x54, 0x25, 0x51, 0x36, 0xa1, 0x2e, 0x2c, 0xd6, 0x90, 0xf4, 0x60, 0x53, 0x47,
0xfc, 0x5e, 0x09, 0xae, 0x16, 0x2c, 0xa3, 0xe4, 0xd4, 0x1d, 0x58, 0x3a, 0xd1, 0x99, 0x6a, 0xaa, 0x6c, 0xe8, 0x77, 0x9e, 0x34, 0xcf, 0x8b, 0x1a, 0xb3, 0xcb, 0x14, 0x75, 0xd7, 0x84, 0x94, 0xd9,
0x05, 0xbb, 0xae, 0x2a, 0x99, 0x68, 0x4f, 0xaf, 0x9b, 0xff, 0x40, 0x1f, 0x66, 0xc4, 0xe2, 0x59, 0x23, 0x9a, 0x18, 0x41, 0x01, 0x75, 0xd7, 0xc2, 0x9c, 0xdf, 0xab, 0xc0, 0x95, 0x92, 0x65, 0x94,
0x37, 0x5c, 0xf2, 0x19, 0xce, 0x21, 0x74, 0x77, 0x5f, 0x21, 0xe3, 0x6f, 0x9b, 0x4f, 0x6b, 0x2a, 0x32, 0x60, 0x1b, 0x96, 0x8e, 0x75, 0xa6, 0x9a, 0x6a, 0x21, 0x08, 0x56, 0x95, 0xb4, 0xb5, 0xa7,
0xca, 0xda, 0xcc, 0x09, 0xb6, 0x37, 0xdb, 0x44, 0x4f, 0x60, 0xc1, 0xaa, 0x8b, 0x7d, 0xe7, 0x6d, 0xd7, 0x2d, 0x7e, 0xa0, 0x8f, 0x49, 0x62, 0xf1, 0xac, 0xbb, 0x33, 0xc5, 0x0c, 0xe7, 0x00, 0x7a,
0x2b, 0x31, 0x79, 0x74, 0x5d, 0xae, 0xba, 0x78, 0x1b, 0x54, 0xdd, 0xb3, 0x31, 0x20, 0xe7, 0x1c, 0x3b, 0xaf, 0x50, 0xa4, 0x6c, 0x99, 0x8f, 0x76, 0x2a, 0xca, 0xda, 0x28, 0x88, 0xcc, 0x37, 0x5b,
0x16, 0x9f, 0x4c, 0x86, 0x89, 0x9f, 0xbe, 0x13, 0xca, 0xbe, 0x27, 0x3f, 0xa2, 0x2a, 0xd4, 0xd4, 0x5b, 0x8f, 0x61, 0xde, 0xaa, 0x8b, 0x7d, 0xe7, 0x6d, 0x2b, 0x31, 0xb9, 0xff, 0x86, 0x5c, 0x75,
0x15, 0x36, 0x65, 0x96, 0xc3, 0x19, 0x1b, 0x61, 0x4d, 0xbd, 0x7c, 0x8b, 0xf9, 0x0c, 0xe7, 0x2a, 0xf1, 0xea, 0xa8, 0xba, 0xc1, 0x63, 0x40, 0xce, 0x19, 0x2c, 0x3e, 0x99, 0x0c, 0xd3, 0x20, 0x7b,
0xac, 0xa5, 0x4d, 0x8a, 0xb9, 0x53, 0x9b, 0xc3, 0x1f, 0x94, 0x44, 0xb0, 0xa8, 0xfd, 0x6c, 0x29, 0x81, 0x94, 0x7d, 0x4f, 0x7e, 0x44, 0x55, 0xa8, 0xa9, 0x2b, 0x6d, 0xca, 0x2c, 0x87, 0x33, 0x36,
0x7b, 0x04, 0xcb, 0xb1, 0x1f, 0x9c, 0x0e, 0xb9, 0x59, 0x4f, 0x2c, 0x67, 0xe2, 0x8a, 0xdd, 0x3d, 0xc2, 0x9a, 0xbc, 0x62, 0x8b, 0xc5, 0x0c, 0xe7, 0x0a, 0xac, 0x65, 0x4d, 0x8a, 0xb9, 0x53, 0xdb,
0xf9, 0xb4, 0xa9, 0x5b, 0xf4, 0x05, 0x12, 0x48, 0x71, 0x47, 0x53, 0x02, 0xc9, 0x4c, 0x49, 0xd1, 0xce, 0x1f, 0x54, 0x44, 0x18, 0xaa, 0xfd, 0x20, 0x2a, 0x7b, 0x04, 0xcb, 0x49, 0x10, 0x9e, 0x0c,
0x00, 0x3e, 0x83, 0x96, 0xdd, 0x18, 0xfb, 0x58, 0x5e, 0x8f, 0x49, 0x7b, 0x66, 0x3a, 0x31, 0x6d, 0xb9, 0x59, 0x4f, 0x22, 0x67, 0xe2, 0xb2, 0xdd, 0x3d, 0xf9, 0x68, 0xaa, 0x5b, 0xf6, 0x05, 0x12,
0xca, 0xb0, 0x4a, 0x3a, 0x3f, 0x2f, 0x41, 0xc7, 0xe5, 0x48, 0xc6, 0xdc, 0x68, 0x54, 0x52, 0xcf, 0x48, 0x79, 0x47, 0x33, 0x02, 0xc9, 0x4d, 0x49, 0xd9, 0x00, 0x3e, 0x83, 0x05, 0xbb, 0x31, 0xf6,
0xa7, 0xb9, 0x6a, 0xa7, 0x0f, 0x58, 0x5f, 0xbb, 0x51, 0x63, 0xdd, 0x98, 0xba, 0x28, 0x7b, 0x33, 0xb1, 0xbc, 0x78, 0x93, 0xf5, 0xcc, 0x74, 0x8f, 0xda, 0x94, 0x61, 0x95, 0x74, 0x7e, 0x5e, 0x81,
0x05, 0xa3, 0x7a, 0x50, 0x83, 0x39, 0x39, 0xbe, 0x35, 0xb8, 0x22, 0xbb, 0xa4, 0xba, 0x93, 0x7a, 0xae, 0xcb, 0x91, 0x8c, 0xb9, 0xd1, 0xa8, 0xa4, 0x9e, 0x4f, 0x0b, 0xd5, 0x4e, 0x1f, 0xb0, 0xbe,
0xbf, 0xac, 0x46, 0x2d, 0xef, 0x57, 0x17, 0x3a, 0xe2, 0xcd, 0x1a, 0x73, 0x1c, 0xf2, 0xc3, 0x1d, 0xd0, 0xa3, 0xc6, 0xba, 0x3e, 0x75, 0x51, 0x76, 0x2f, 0x95, 0x8c, 0xea, 0x41, 0x03, 0x66, 0xe5,
0x60, 0x4f, 0xbc, 0xbe, 0x17, 0x85, 0x61, 0x70, 0xc8, 0x23, 0x19, 0xdd, 0x47, 0xba, 0x1d, 0x39, 0xf8, 0xd6, 0xe0, 0xb2, 0xec, 0x92, 0xea, 0x4e, 0xe6, 0x57, 0xb3, 0x1a, 0xb5, 0xfc, 0x6a, 0x3d,
0x87, 0x94, 0x1a, 0x2a, 0x52, 0xea, 0x99, 0x95, 0x30, 0x50, 0xcf, 0xd9, 0x88, 0x94, 0xe3, 0xc2, 0xe8, 0x8a, 0xd7, 0x70, 0xcc, 0x71, 0xc8, 0x0f, 0xb7, 0x81, 0x3d, 0xf1, 0xfb, 0x7e, 0x1c, 0x45,
0xf2, 0x03, 0xef, 0x25, 0x57, 0x35, 0xa5, 0xb3, 0xd4, 0x18, 0xeb, 0x4a, 0xd5, 0xdc, 0xab, 0x9b, 0xe1, 0x01, 0x8f, 0x65, 0xdc, 0x20, 0x69, 0x8d, 0xe4, 0x76, 0x52, 0x0a, 0xae, 0x48, 0xa9, 0x07,
0x6f, 0xf9, 0x66, 0x5d, 0xb3, 0xb4, 0xb3, 0x09, 0x2b, 0x76, 0x9d, 0x52, 0x94, 0x74, 0xa1, 0x36, 0x5c, 0xa2, 0x50, 0x3d, 0x94, 0x23, 0x52, 0x8e, 0x0b, 0xcb, 0x0f, 0xfc, 0x97, 0x5c, 0xd5, 0x94,
0x92, 0x98, 0xec, 0x9d, 0x4e, 0xdf, 0xfd, 0x0a, 0x1a, 0xc6, 0x3b, 0x44, 0x6c, 0x0d, 0x96, 0x5f, 0xcd, 0x52, 0x6b, 0xac, 0x2b, 0x55, 0x73, 0xaf, 0xee, 0xd4, 0x15, 0x9b, 0x75, 0xcd, 0xd2, 0xce,
0x3c, 0x7e, 0x76, 0xb0, 0x7b, 0x74, 0xd4, 0x3b, 0x7c, 0xfe, 0xe0, 0xf3, 0xdd, 0x1f, 0xf6, 0xf6, 0x06, 0xac, 0xd8, 0x75, 0x4a, 0x51, 0xd2, 0x83, 0xc6, 0x48, 0x62, 0xb2, 0x77, 0x3a, 0x7d, 0xf7,
0xb6, 0x8e, 0xf6, 0xda, 0x33, 0x6c, 0x15, 0xd8, 0xc1, 0xee, 0xd1, 0xb3, 0xdd, 0x1d, 0x0b, 0x2f, 0x2b, 0x68, 0x19, 0x2f, 0x1c, 0xb1, 0x35, 0x58, 0x7e, 0xf1, 0xf8, 0xd9, 0xfe, 0xce, 0xe1, 0xa1,
0xb1, 0x1b, 0xd0, 0x7d, 0x7e, 0xf0, 0xfc, 0x68, 0x77, 0xa7, 0x57, 0xf4, 0x5d, 0x99, 0x5d, 0x87, 0x77, 0xf0, 0xfc, 0xc1, 0xe7, 0x3b, 0x3f, 0xf4, 0x76, 0x37, 0x0f, 0x77, 0x3b, 0x97, 0xd8, 0x2a,
0xab, 0x32, 0xbf, 0xe0, 0xf3, 0xca, 0xdd, 0x4f, 0xa1, 0x9d, 0x35, 0xe2, 0x59, 0xc6, 0xcf, 0xd7, 0xb0, 0xfd, 0x9d, 0xc3, 0x67, 0x3b, 0xdb, 0x16, 0x5e, 0x61, 0xd7, 0xa1, 0xf7, 0x7c, 0xff, 0xf9,
0x59, 0x49, 0x37, 0x7f, 0x5e, 0x81, 0x96, 0x08, 0xdf, 0x15, 0x0f, 0xff, 0xf2, 0x88, 0x3d, 0x81, 0xe1, 0xce, 0xb6, 0x57, 0xf6, 0x5d, 0x95, 0x5d, 0x83, 0x2b, 0x32, 0xbf, 0xe4, 0xf3, 0xda, 0xdd,
0x79, 0xf9, 0x82, 0x34, 0x53, 0xa4, 0x65, 0xbf, 0x59, 0xdd, 0x5d, 0xcd, 0xc2, 0x72, 0x59, 0x97, 0x4f, 0xa1, 0x93, 0x37, 0x0f, 0x5a, 0x66, 0xd5, 0xd7, 0xd9, 0x5f, 0x37, 0x7e, 0x5e, 0x83, 0x05,
0xff, 0xea, 0xbf, 0xff, 0x6f, 0x7f, 0xbb, 0xbc, 0xc0, 0x1a, 0xf7, 0xce, 0x3f, 0xbc, 0x77, 0xca, 0x11, 0x18, 0x2c, 0x9e, 0x14, 0xe6, 0x31, 0x7b, 0x02, 0x73, 0xf2, 0x6d, 0x6a, 0xa6, 0x48, 0xcb,
0x83, 0x18, 0xeb, 0xf8, 0x1d, 0x80, 0xf4, 0x5d, 0x64, 0xd6, 0xd1, 0x36, 0xa3, 0xcc, 0xa3, 0xd1, 0x7e, 0x0d, 0xbb, 0xb7, 0x9a, 0x87, 0xe5, 0xb2, 0x2e, 0xff, 0x95, 0x7f, 0xf7, 0xdf, 0xfe, 0x56,
0xdd, 0xab, 0x05, 0x39, 0xb2, 0xde, 0xab, 0x54, 0xef, 0xb2, 0xd3, 0xc2, 0x7a, 0xfd, 0xc0, 0x4f, 0x75, 0x9e, 0xb5, 0xee, 0x9d, 0x7d, 0x78, 0xef, 0x84, 0x87, 0x09, 0xd6, 0xf1, 0x3b, 0x00, 0xd9,
0xc4, 0x1b, 0xc9, 0x9f, 0x94, 0xee, 0xb2, 0x01, 0x34, 0xcd, 0x17, 0x8b, 0x99, 0x72, 0x66, 0x16, 0x8b, 0xcb, 0xac, 0xab, 0xad, 0x51, 0xb9, 0xe7, 0xa8, 0x7b, 0x57, 0x4a, 0x72, 0x64, 0xbd, 0x57,
0xbc, 0xb9, 0xdc, 0x7d, 0xa7, 0x30, 0x4f, 0xd1, 0x32, 0xb5, 0x71, 0xc5, 0x69, 0x63, 0x1b, 0x13, 0xa8, 0xde, 0x65, 0x67, 0x01, 0xeb, 0x0d, 0xc2, 0x20, 0x15, 0xaf, 0x2f, 0x7f, 0x52, 0xb9, 0xcb,
0x2a, 0x91, 0xb6, 0x32, 0x14, 0x1c, 0x9e, 0x3e, 0x4c, 0xcc, 0xae, 0x19, 0x4c, 0x97, 0x7b, 0x16, 0x06, 0xd0, 0x36, 0xdf, 0x42, 0x66, 0xca, 0x4d, 0x5a, 0xf2, 0x9a, 0x73, 0xef, 0x9d, 0xd2, 0x3c,
0xb9, 0x7b, 0x7d, 0x4a, 0xae, 0x6c, 0xeb, 0x3a, 0xb5, 0xb5, 0xe6, 0x30, 0x6c, 0xab, 0x4f, 0x65, 0x45, 0xcb, 0xd4, 0xc6, 0x65, 0xa7, 0x83, 0x6d, 0x4c, 0xa8, 0x44, 0xd6, 0xca, 0x50, 0x70, 0x78,
0xd4, 0xb3, 0xc8, 0x9f, 0x94, 0xee, 0x6e, 0xfe, 0x9b, 0xdb, 0x50, 0xd7, 0x81, 0x0e, 0xec, 0xa7, 0xf6, 0xe4, 0x31, 0xbb, 0x6a, 0x30, 0x5d, 0xe1, 0xc1, 0xe5, 0xde, 0xb5, 0x29, 0xb9, 0xb2, 0xad,
0xb0, 0x60, 0xc5, 0x57, 0x33, 0x35, 0x8c, 0xa2, 0x70, 0xec, 0xee, 0xb5, 0xe2, 0x4c, 0xd9, 0xf0, 0x6b, 0xd4, 0xd6, 0x9a, 0xc3, 0xb0, 0xad, 0x3e, 0x95, 0x51, 0x0f, 0x2e, 0x7f, 0x52, 0xb9, 0xbb,
0x0d, 0x6a, 0xb8, 0xc3, 0x56, 0xb1, 0x61, 0x19, 0xa0, 0x7c, 0x8f, 0x6e, 0x0a, 0x88, 0x8b, 0xc9, 0xf1, 0xaf, 0x6f, 0x43, 0x53, 0x87, 0x50, 0xb0, 0x9f, 0xc2, 0xbc, 0x15, 0xb9, 0xcd, 0xd4, 0x30,
0x2f, 0x0d, 0x49, 0x26, 0x1a, 0xbb, 0x96, 0x15, 0x2e, 0x56, 0x6b, 0xd7, 0xa7, 0xe4, 0xca, 0xe6, 0xca, 0x02, 0xbd, 0x7b, 0x57, 0xcb, 0x33, 0x65, 0xc3, 0xd7, 0xa9, 0xe1, 0x2e, 0x5b, 0xc5, 0x86,
0xae, 0x51, 0x73, 0xab, 0x6c, 0xc5, 0x6c, 0x4e, 0x07, 0x1f, 0x70, 0xba, 0x8d, 0x6f, 0xbe, 0xd9, 0x65, 0xe8, 0xf3, 0x3d, 0xba, 0x83, 0x20, 0xae, 0x3c, 0xbf, 0x34, 0x24, 0x99, 0x68, 0xec, 0x6a,
0xcb, 0xae, 0x6b, 0xc2, 0x2a, 0x7a, 0xcb, 0x57, 0x93, 0x48, 0xfe, 0x41, 0x5f, 0xa7, 0x43, 0x4d, 0x5e, 0xb8, 0x58, 0xad, 0x5d, 0x9b, 0x92, 0x2b, 0x9b, 0xbb, 0x4a, 0xcd, 0xad, 0xb2, 0x15, 0xb3,
0x31, 0x46, 0xcb, 0x67, 0x3e, 0xd9, 0xcb, 0x8e, 0xa1, 0x61, 0x3c, 0x89, 0xc7, 0xae, 0x4e, 0x7d, 0x39, 0x1d, 0xd6, 0xc0, 0xe9, 0x9e, 0xbf, 0xf9, 0x1a, 0x30, 0xbb, 0xa6, 0x09, 0xab, 0xec, 0x95,
0xbe, 0xaf, 0xdb, 0x2d, 0xca, 0x2a, 0x1a, 0x8a, 0x59, 0xff, 0x3d, 0x54, 0x74, 0x7e, 0x0c, 0x75, 0x60, 0x4d, 0x22, 0xc5, 0xa7, 0x82, 0x9d, 0x2e, 0x35, 0xc5, 0x18, 0x2d, 0x9f, 0xf9, 0x18, 0x30,
0xfd, 0xc8, 0x1a, 0x5b, 0x33, 0x1e, 0xbd, 0x33, 0x1f, 0x85, 0xeb, 0x76, 0xf2, 0x19, 0x45, 0xc4, 0x3b, 0x82, 0x96, 0xf1, 0xd8, 0x1e, 0xbb, 0x32, 0xf5, 0x61, 0xc0, 0x5e, 0xaf, 0x2c, 0xab, 0x6c,
0x67, 0xd6, 0x8e, 0xc4, 0xf7, 0x02, 0x1a, 0xc6, 0x43, 0x6a, 0x7a, 0x00, 0xf9, 0xc7, 0xda, 0xf4, 0x28, 0x66, 0xfd, 0xf7, 0x50, 0xd1, 0xf9, 0x31, 0x34, 0xf5, 0xf3, 0x6d, 0x6c, 0xcd, 0x78, 0x4e,
0x00, 0x0a, 0xde, 0x5d, 0x73, 0x96, 0xa8, 0x89, 0x06, 0xab, 0x13, 0x7d, 0x27, 0xaf, 0xc2, 0x98, 0xcf, 0x7c, 0x6e, 0xae, 0xd7, 0x2d, 0x66, 0x94, 0x11, 0x9f, 0x59, 0x3b, 0x12, 0xdf, 0x0b, 0x68,
0xed, 0xc3, 0x15, 0x29, 0xb1, 0x8f, 0xf9, 0xd7, 0x59, 0x86, 0x82, 0x67, 0x92, 0xef, 0x97, 0xd8, 0x19, 0x4f, 0xb4, 0xe9, 0x01, 0x14, 0x9f, 0x81, 0xd3, 0x03, 0x28, 0x79, 0xd1, 0xcd, 0x59, 0xa2,
0xa7, 0x50, 0x53, 0xef, 0xe5, 0xb1, 0xd5, 0xe2, 0x77, 0xff, 0xba, 0x6b, 0x39, 0x5c, 0x8a, 0xd7, 0x26, 0x5a, 0xac, 0x49, 0xf4, 0x9d, 0xbe, 0x8a, 0x12, 0xb6, 0x07, 0x97, 0xa5, 0xc4, 0x3e, 0xe2,
0x1f, 0x02, 0xa4, 0xaf, 0xb6, 0x69, 0x21, 0x91, 0x7b, 0x05, 0x4e, 0x53, 0x40, 0xfe, 0x89, 0x37, 0x5f, 0x67, 0x19, 0x4a, 0x1e, 0x60, 0xbe, 0x5f, 0x61, 0x9f, 0x42, 0x43, 0xbd, 0xc4, 0xc7, 0x56,
0x67, 0x95, 0x06, 0xd8, 0x66, 0x24, 0x24, 0x02, 0x7e, 0xa1, 0x1e, 0xde, 0xf8, 0x09, 0x34, 0x8c, 0xcb, 0x5f, 0x14, 0xec, 0xad, 0x15, 0x70, 0x29, 0x5e, 0x7f, 0x08, 0x90, 0xbd, 0x07, 0xa7, 0x85,
0x87, 0xdb, 0xf4, 0xf4, 0xe5, 0x1f, 0x7d, 0xd3, 0xd3, 0x57, 0xf0, 0xce, 0x9b, 0xd3, 0xa5, 0xda, 0x44, 0xe1, 0x7d, 0x39, 0x4d, 0x01, 0xc5, 0xc7, 0xe3, 0x9c, 0x55, 0x1a, 0x60, 0x87, 0x91, 0x90,
0x57, 0x9c, 0x45, 0xac, 0x3d, 0xf6, 0x4f, 0x83, 0x91, 0x28, 0x80, 0x0b, 0x74, 0x06, 0x0b, 0xd6, 0x08, 0xf9, 0xb9, 0x7a, 0xd2, 0xe3, 0x27, 0xd0, 0x32, 0x9e, 0x84, 0xd3, 0xd3, 0x57, 0x7c, 0x4e,
0xeb, 0x6c, 0x9a, 0x43, 0x8b, 0xde, 0x7e, 0xd3, 0x1c, 0x5a, 0xf8, 0xa0, 0x9b, 0xa2, 0x33, 0x67, 0x4e, 0x4f, 0x5f, 0xc9, 0x0b, 0x72, 0x4e, 0x8f, 0x6a, 0x5f, 0x71, 0x16, 0xb1, 0xf6, 0x24, 0x38,
0x09, 0xdb, 0x39, 0xa7, 0x22, 0x46, 0x4b, 0x3f, 0x82, 0x86, 0xf1, 0xd2, 0x9a, 0x1e, 0x4b, 0xfe, 0x09, 0x47, 0xa2, 0x00, 0x2e, 0xd0, 0x29, 0xcc, 0x5b, 0xef, 0xbe, 0x69, 0x0e, 0x2d, 0x7b, 0x55,
0x51, 0x37, 0x3d, 0x96, 0xa2, 0x87, 0xd9, 0x56, 0xa8, 0x8d, 0x96, 0x43, 0xa4, 0x40, 0x4f, 0x48, 0x4e, 0x73, 0x68, 0xe9, 0x53, 0x71, 0x8a, 0xce, 0x9c, 0x25, 0x6c, 0xe7, 0x8c, 0x8a, 0x18, 0x2d,
0x60, 0xdd, 0x3f, 0x85, 0x96, 0xfd, 0xf6, 0x9a, 0xe6, 0xfd, 0xc2, 0x57, 0xdc, 0x34, 0xef, 0x4f, 0xfd, 0x08, 0x5a, 0xc6, 0x1b, 0x6e, 0x7a, 0x2c, 0xc5, 0xe7, 0xe2, 0xf4, 0x58, 0xca, 0x9e, 0x7c,
0x79, 0xb0, 0x4d, 0x92, 0xf4, 0xdd, 0x65, 0xdd, 0xc8, 0xbd, 0x2f, 0x65, 0xa8, 0xe4, 0x57, 0xec, 0x5b, 0xa1, 0x36, 0x16, 0x1c, 0x22, 0x05, 0x7a, 0x9c, 0x02, 0xeb, 0xfe, 0x29, 0x2c, 0xd8, 0xaf,
0xfb, 0x28, 0xe0, 0xe4, 0x9b, 0x1e, 0x6c, 0xcd, 0xa0, 0x5a, 0xf3, 0xe5, 0x0f, 0xcd, 0x2f, 0xb9, 0xba, 0x69, 0xde, 0x2f, 0x7d, 0x1f, 0x4e, 0xf3, 0xfe, 0x94, 0xa7, 0xe0, 0x24, 0x49, 0xdf, 0x5d,
0xe7, 0x3f, 0x6c, 0x62, 0x16, 0x8f, 0x60, 0xd0, 0xae, 0x45, 0x6f, 0x7b, 0x18, 0xbb, 0x96, 0xf9, 0xd6, 0x8d, 0xdc, 0xfb, 0x52, 0x06, 0x61, 0x7e, 0xc5, 0xbe, 0x8f, 0x02, 0x4e, 0xbe, 0x16, 0xc2,
0xfc, 0x87, 0xb1, 0x6b, 0x59, 0x4f, 0x80, 0x64, 0x77, 0xad, 0xc4, 0xc7, 0x3a, 0x02, 0x58, 0xcc, 0xd6, 0x0c, 0xaa, 0x35, 0xdf, 0x14, 0xd1, 0xfc, 0x52, 0x78, 0x58, 0xc4, 0x26, 0x66, 0xf1, 0xbc,
0xdc, 0x01, 0xd3, 0x5c, 0x51, 0x7c, 0x4d, 0xb7, 0x7b, 0xe3, 0xf5, 0x57, 0xc7, 0x6c, 0x09, 0xa2, 0x06, 0xed, 0x5a, 0xf4, 0x6a, 0x88, 0xb1, 0x6b, 0x99, 0x0f, 0x8b, 0x18, 0xbb, 0x96, 0xf5, 0xb8,
0x84, 0xe0, 0x3d, 0x75, 0x29, 0xfa, 0x77, 0xa1, 0x69, 0xbe, 0x07, 0xc5, 0x4c, 0x56, 0xce, 0xb6, 0x48, 0x7e, 0xd7, 0x4a, 0x03, 0xac, 0x23, 0x84, 0xc5, 0xdc, 0xed, 0x32, 0xcd, 0x15, 0xe5, 0x17,
0xf4, 0x4e, 0x61, 0x9e, 0xbd, 0xb8, 0xac, 0x69, 0x36, 0xc3, 0x7e, 0x00, 0xab, 0x9a, 0xd5, 0xcd, 0x80, 0x7b, 0xd7, 0x5f, 0x7f, 0x29, 0xcd, 0x96, 0x20, 0x4a, 0x08, 0xde, 0x53, 0xd7, 0xad, 0x7f,
0x6b, 0x45, 0x31, 0x7b, 0xb7, 0xe0, 0xb2, 0x91, 0xa9, 0xc7, 0x75, 0xaf, 0x4e, 0xbd, 0x8d, 0x74, 0x17, 0xda, 0xe6, 0x4b, 0x53, 0xcc, 0x64, 0xe5, 0x7c, 0x4b, 0xef, 0x94, 0xe6, 0xd9, 0x8b, 0xcb,
0xbf, 0x84, 0x44, 0x63, 0x3f, 0xb2, 0x93, 0x6e, 0x18, 0x45, 0x6f, 0x0b, 0xa5, 0x1b, 0x46, 0xe1, 0xda, 0x66, 0x33, 0xec, 0x07, 0xb0, 0xaa, 0x59, 0xdd, 0xbc, 0xb0, 0x94, 0xb0, 0x77, 0x4b, 0xae,
0xcb, 0x3c, 0x8a, 0x68, 0xd8, 0xb2, 0x35, 0x47, 0x22, 0xaa, 0x84, 0xfd, 0x08, 0x16, 0x8d, 0x8b, 0x31, 0x99, 0x7a, 0x5c, 0xef, 0xca, 0xd4, 0x7b, 0x4e, 0xf7, 0x2b, 0x48, 0x34, 0xf6, 0xf3, 0x3d,
0x9b, 0x47, 0x97, 0x41, 0x5f, 0x33, 0x40, 0xfe, 0x5d, 0x81, 0x6e, 0xd1, 0x29, 0xc5, 0x59, 0xa3, 0xd9, 0x86, 0x51, 0xf6, 0x6a, 0x51, 0xb6, 0x61, 0x94, 0xbe, 0xf9, 0xa3, 0x88, 0x86, 0x2d, 0x5b,
0xfa, 0x97, 0x1c, 0x6b, 0x72, 0x90, 0xf8, 0xb7, 0xa1, 0x61, 0x5e, 0x0a, 0x7d, 0x4d, 0xbd, 0x6b, 0x73, 0x24, 0xe2, 0x55, 0xd8, 0x8f, 0x60, 0xd1, 0xb8, 0x12, 0x7a, 0x78, 0x11, 0xf6, 0x35, 0x03,
0x46, 0x96, 0x79, 0x25, 0xfe, 0x7e, 0x89, 0x1d, 0x8a, 0xe8, 0x42, 0xfd, 0xe0, 0x6f, 0x18, 0x65, 0x14, 0x5f, 0x2c, 0xe8, 0x95, 0x9d, 0x52, 0x9c, 0x35, 0xaa, 0x7f, 0xc9, 0xb1, 0x26, 0x07, 0x89,
0xb7, 0x4f, 0xfb, 0x21, 0x60, 0xbd, 0x90, 0x45, 0x4f, 0x40, 0xdf, 0x29, 0xdd, 0x2f, 0xb1, 0xbf, 0x7f, 0x0b, 0x5a, 0xe6, 0x75, 0xd3, 0xd7, 0xd4, 0xbb, 0x66, 0x64, 0x99, 0x97, 0xed, 0xef, 0x57,
0x5f, 0x82, 0xa6, 0x75, 0x69, 0xd3, 0x8a, 0xd5, 0xca, 0xf4, 0xac, 0x63, 0xe6, 0x99, 0x5d, 0x73, 0xd8, 0x81, 0x88, 0x5b, 0xd4, 0x4f, 0x09, 0x47, 0x71, 0x7e, 0xfb, 0xb4, 0x9f, 0x18, 0xd6, 0x0b,
0x5c, 0x1a, 0xf6, 0xfe, 0xdd, 0xcf, 0xac, 0x69, 0xfd, 0xd2, 0x32, 0xa8, 0x6d, 0x64, 0x5f, 0xfd, 0x59, 0xf6, 0xb8, 0xf4, 0x9d, 0xca, 0xfd, 0x0a, 0xfb, 0x7b, 0x15, 0x68, 0x5b, 0xd7, 0x41, 0xad,
0xfd, 0x2a, 0x5b, 0xc0, 0x7c, 0xcd, 0xe1, 0xab, 0xfb, 0x25, 0xf6, 0x87, 0x25, 0x68, 0xd9, 0x16, 0x28, 0xb0, 0x5c, 0xcf, 0xba, 0x66, 0x9e, 0xd9, 0x35, 0xc7, 0xa5, 0x61, 0xef, 0xdd, 0xfd, 0xcc,
0x6e, 0x3d, 0xdc, 0x42, 0x5b, 0xba, 0x5e, 0xfc, 0x29, 0x66, 0xf1, 0x1f, 0x51, 0x2f, 0x9f, 0xdd, 0x9a, 0xd6, 0x2f, 0x2d, 0x53, 0xdd, 0x7a, 0xfe, 0x3d, 0xe1, 0xaf, 0xf2, 0x05, 0xcc, 0x77, 0x22,
0x75, 0xad, 0x5e, 0xca, 0x07, 0x9d, 0x7e, 0xb5, 0xde, 0xb2, 0x4f, 0xc4, 0x63, 0xfa, 0xca, 0xb9, 0xbe, 0xba, 0x5f, 0x61, 0x7f, 0x58, 0x81, 0x05, 0xdb, 0x76, 0xae, 0x87, 0x5b, 0x6a, 0xa5, 0xd7,
0xc7, 0xf2, 0x8f, 0xaf, 0x6b, 0x82, 0x31, 0x9f, 0x38, 0xa7, 0x45, 0xf8, 0x89, 0x78, 0xed, 0x56, 0x8b, 0x3f, 0xc5, 0xe0, 0xfe, 0x23, 0xea, 0xe5, 0xb3, 0xbb, 0xae, 0xd5, 0x4b, 0xf9, 0x54, 0xd4,
0x79, 0x88, 0x90, 0xee, 0xde, 0xf6, 0x7b, 0xe7, 0x26, 0x8d, 0xe9, 0x86, 0x73, 0xd5, 0x1a, 0x53, 0xaf, 0xd6, 0x5b, 0xf6, 0x89, 0x78, 0xa6, 0x5f, 0xb9, 0x0d, 0x59, 0xf1, 0x59, 0x77, 0x4d, 0x30,
0x76, 0x87, 0xdf, 0x12, 0xbd, 0x93, 0xaf, 0x93, 0xa7, 0x5b, 0x54, 0xee, 0xc5, 0xf2, 0xe9, 0x9d, 0xe6, 0xe3, 0xe9, 0xb4, 0x08, 0x3f, 0x11, 0xef, 0xe8, 0x2a, 0xdf, 0x13, 0xd2, 0xdd, 0xdb, 0x7e,
0x1c, 0x89, 0x4e, 0xca, 0xe2, 0x16, 0x73, 0xbc, 0x65, 0x35, 0xce, 0x5d, 0xea, 0xeb, 0x4d, 0xe7, 0xef, 0xdc, 0xa4, 0x31, 0x5d, 0x77, 0xae, 0x58, 0x63, 0xca, 0xef, 0xf0, 0x9b, 0xa2, 0x77, 0xf2,
0xdd, 0xa9, 0x7d, 0xbd, 0x47, 0x76, 0x6a, 0xec, 0xf1, 0x21, 0x40, 0xea, 0x8c, 0x67, 0x19, 0x47, 0xdd, 0xf3, 0x6c, 0x8b, 0x2a, 0xbc, 0x85, 0x3e, 0xbd, 0x93, 0x23, 0xd1, 0x49, 0x59, 0xdc, 0x62,
0xb0, 0x16, 0x19, 0x79, 0x7f, 0xbd, 0xcd, 0x81, 0xca, 0x5f, 0x8c, 0x35, 0xfe, 0x58, 0x08, 0xc0, 0x8e, 0xb7, 0xac, 0xc6, 0xb9, 0x4b, 0x7d, 0xbd, 0xe9, 0xbc, 0x3b, 0xb5, 0xaf, 0xf7, 0xc8, 0x02,
0xc7, 0xca, 0x85, 0x6c, 0xaa, 0x39, 0xb6, 0xc7, 0xdc, 0x52, 0x73, 0xb2, 0xf5, 0x5b, 0xe2, 0x4f, 0x8e, 0x3d, 0x3e, 0x00, 0xc8, 0xdc, 0xfc, 0x2c, 0xe7, 0x62, 0xd6, 0x22, 0xa3, 0x18, 0x09, 0x60,
0xfb, 0xa3, 0x9f, 0xc3, 0xc2, 0x7e, 0x18, 0xbe, 0x9c, 0x8c, 0x75, 0x18, 0x95, 0xed, 0x42, 0xda, 0x73, 0xa0, 0xf2, 0x44, 0x63, 0x8d, 0x3f, 0x16, 0x02, 0xf0, 0xb1, 0x72, 0x4e, 0x9b, 0x6a, 0x8e,
0xf3, 0xe2, 0xb3, 0x6e, 0x66, 0x14, 0xce, 0x3a, 0x55, 0xd5, 0x65, 0x1d, 0xa3, 0xaa, 0x7b, 0x5f, 0xed, 0x8b, 0xb7, 0xd4, 0x9c, 0x7c, 0xfd, 0x96, 0xf8, 0xd3, 0x9e, 0xee, 0xe7, 0x30, 0xbf, 0x17,
0xa6, 0x8e, 0xfe, 0xaf, 0x98, 0x07, 0x4b, 0x5a, 0xaa, 0xea, 0x8e, 0x77, 0xed, 0x6a, 0x2c, 0x59, 0x45, 0x2f, 0x27, 0x63, 0x1d, 0xa0, 0x65, 0x3b, 0xa7, 0x76, 0xfd, 0xe4, 0xb4, 0x97, 0x1b, 0x85,
0x9a, 0x6d, 0xc2, 0xd2, 0xc7, 0x55, 0x6f, 0xef, 0xc5, 0xaa, 0x4e, 0x92, 0x29, 0xcd, 0x1d, 0xde, 0x73, 0x83, 0xaa, 0xea, 0xb1, 0xae, 0x51, 0xd5, 0xbd, 0x2f, 0xb3, 0x10, 0x82, 0xaf, 0x98, 0x0f,
0xa7, 0xfb, 0x5c, 0xe4, 0x87, 0x59, 0x4e, 0x3b, 0xae, 0x1d, 0x38, 0xdd, 0x05, 0x0b, 0xb4, 0x77, 0x4b, 0x5a, 0xaa, 0xea, 0x8e, 0xf7, 0xec, 0x6a, 0x2c, 0x59, 0x9a, 0x6f, 0xc2, 0xd2, 0xc7, 0x55,
0x9a, 0xb1, 0x77, 0x19, 0xf1, 0x2f, 0xee, 0x7d, 0x29, 0x3d, 0x3c, 0x5f, 0xa9, 0x9d, 0x46, 0xb9, 0x6f, 0xef, 0x25, 0xaa, 0x4e, 0x92, 0x29, 0xed, 0x6d, 0xde, 0xa7, 0x9b, 0x62, 0xe4, 0xe1, 0x59,
0xc0, 0xac, 0x9d, 0x26, 0xe3, 0x33, 0xb3, 0x76, 0x9a, 0x9c, 0xcf, 0xcc, 0x9a, 0x6a, 0xe5, 0x82, 0xce, 0x3a, 0xae, 0x5d, 0x43, 0xbd, 0x79, 0x0b, 0xb4, 0x77, 0x9a, 0xb1, 0x7f, 0x11, 0xf3, 0x2f,
0x63, 0x43, 0x58, 0xca, 0xb9, 0xd9, 0xf4, 0x26, 0x33, 0xcd, 0x39, 0xd7, 0x5d, 0x9f, 0x5e, 0xc0, 0xee, 0x7d, 0x29, 0x7d, 0x47, 0x5f, 0xa9, 0x9d, 0x46, 0x39, 0xd7, 0xac, 0x9d, 0x26, 0xe7, 0x8d,
0x6e, 0xed, 0xae, 0xdd, 0xda, 0x11, 0x2c, 0xec, 0x70, 0x31, 0x59, 0x22, 0x6e, 0x3c, 0x73, 0xf3, 0xb3, 0x76, 0x9a, 0x82, 0x37, 0xce, 0x9a, 0x6a, 0xe5, 0xdc, 0x63, 0x43, 0x58, 0x2a, 0x38, 0xf0,
0xd7, 0x8c, 0x4a, 0xcf, 0x6e, 0x09, 0x94, 0x67, 0xab, 0x12, 0x14, 0xb0, 0xcd, 0x7e, 0x0c, 0x8d, 0xf4, 0x26, 0x33, 0xcd, 0xed, 0xd7, 0xbb, 0x31, 0xbd, 0x80, 0xdd, 0xda, 0x5d, 0xbb, 0xb5, 0x43,
0x47, 0x3c, 0x51, 0x81, 0xe2, 0x5a, 0x99, 0xcd, 0x44, 0x8e, 0x77, 0x0b, 0xe2, 0xcc, 0x6d, 0x9a, 0x98, 0xdf, 0xe6, 0x62, 0xb2, 0x44, 0x44, 0x7a, 0xee, 0x4e, 0xb1, 0x19, 0xef, 0x9e, 0xdf, 0x12,
0xa1, 0xda, 0xee, 0xf1, 0xc1, 0x29, 0x17, 0xc2, 0xa9, 0xe7, 0x0f, 0xbe, 0x62, 0x7f, 0x91, 0x2a, 0x28, 0xcf, 0x56, 0x25, 0x28, 0x14, 0x9c, 0xfd, 0x18, 0x5a, 0x8f, 0x78, 0xaa, 0x42, 0xd0, 0xb5,
0xd7, 0x37, 0x65, 0x56, 0x8d, 0xa8, 0x5f, 0xb3, 0xf2, 0xc5, 0x0c, 0x5e, 0x54, 0x73, 0x10, 0x0e, 0x32, 0x9b, 0x8b, 0x49, 0xef, 0x95, 0x44, 0xb0, 0xdb, 0x34, 0x43, 0xb5, 0xdd, 0xe3, 0x83, 0x13,
0xb8, 0xa1, 0x54, 0x05, 0xd0, 0x30, 0x6e, 0xda, 0x69, 0x06, 0xca, 0x5f, 0x4c, 0xd4, 0x0c, 0x54, 0x2e, 0x84, 0x93, 0x17, 0x0c, 0xbe, 0x62, 0x7f, 0x91, 0x2a, 0xd7, 0x77, 0x70, 0x56, 0x8d, 0x78,
0x70, 0x31, 0xcf, 0xb9, 0x43, 0xed, 0x38, 0x6c, 0x3d, 0x6d, 0x47, 0x5c, 0xc6, 0x4b, 0x5b, 0xba, 0x62, 0xb3, 0xf2, 0xc5, 0x1c, 0x5e, 0x56, 0x73, 0x18, 0x0d, 0xb8, 0xa1, 0x54, 0x85, 0xd0, 0x32,
0xf7, 0xa5, 0x37, 0x4a, 0xbe, 0x62, 0x2f, 0xe8, 0x81, 0x35, 0x33, 0x10, 0x3e, 0xd5, 0xce, 0xb3, 0xee, 0xf0, 0x69, 0x06, 0x2a, 0x5e, 0x79, 0xd4, 0x0c, 0x54, 0x72, 0xe5, 0xcf, 0xb9, 0x43, 0xed,
0x31, 0xf3, 0x7a, 0xb2, 0x8c, 0x2c, 0x5b, 0x63, 0x17, 0x4d, 0x91, 0xee, 0xf5, 0x3d, 0x80, 0xa3, 0x38, 0xec, 0x46, 0xd6, 0x8e, 0xb8, 0xe6, 0x97, 0xb5, 0x74, 0xef, 0x4b, 0x7f, 0x94, 0x7e, 0xc5,
0x24, 0x1c, 0xef, 0x78, 0x7c, 0x14, 0x06, 0xa9, 0xac, 0x4d, 0xc3, 0xb0, 0x53, 0xf9, 0x65, 0xc4, 0x5e, 0xd0, 0xd3, 0x6d, 0x66, 0x88, 0x7d, 0xa6, 0x9d, 0xe7, 0xa3, 0xf1, 0xf5, 0x64, 0x19, 0x59,
0x62, 0xb3, 0x17, 0xc6, 0x71, 0xc6, 0xba, 0x4b, 0xa0, 0x88, 0x6b, 0x6a, 0xa4, 0xb6, 0x9e, 0x90, 0xb6, 0xc6, 0x2e, 0x9a, 0x22, 0xdd, 0xeb, 0x7b, 0x00, 0x87, 0x69, 0x34, 0xde, 0xf6, 0xf9, 0x28,
0x82, 0x68, 0xed, 0xfb, 0x25, 0xb6, 0x05, 0x90, 0xfa, 0x59, 0xf5, 0xe1, 0x24, 0xe7, 0xc2, 0xd5, 0x0a, 0x33, 0x59, 0x9b, 0x05, 0x78, 0x67, 0xf2, 0xcb, 0x88, 0xf2, 0x66, 0x2f, 0x8c, 0xe3, 0x8c,
0x62, 0xaf, 0xc0, 0x29, 0x7b, 0x08, 0xf5, 0xd4, 0xbb, 0xb5, 0x96, 0xde, 0xbb, 0xb5, 0x7c, 0x61, 0x75, 0x4b, 0x41, 0x11, 0xd7, 0xd4, 0x18, 0x70, 0x3d, 0x21, 0x25, 0x71, 0xe0, 0xf7, 0x2b, 0x6c,
0x7a, 0x07, 0xcf, 0xf9, 0x9c, 0x9c, 0x36, 0x4d, 0x15, 0xb0, 0x1a, 0x4e, 0x15, 0x39, 0x92, 0x7c, 0x13, 0x20, 0xf3, 0xe0, 0xea, 0xc3, 0x49, 0xc1, 0x39, 0xac, 0xc5, 0x5e, 0x89, 0xbb, 0xf7, 0x00,
0x58, 0x16, 0x1d, 0xd4, 0x0a, 0x0e, 0x85, 0x0f, 0xab, 0x91, 0x14, 0xf8, 0x7d, 0x34, 0x37, 0x17, 0x9a, 0x99, 0xdf, 0x6c, 0x2d, 0xbb, 0xd1, 0x6b, 0x79, 0xd9, 0xf4, 0x0e, 0x5e, 0xf0, 0x66, 0x39,
0x3a, 0x44, 0x2c, 0x1b, 0x0b, 0x52, 0xab, 0x08, 0x5d, 0x46, 0xd1, 0x3c, 0x82, 0xa5, 0x9c, 0x8d, 0x1d, 0x9a, 0x2a, 0x60, 0x0d, 0x9c, 0x2a, 0x72, 0x51, 0x05, 0xb0, 0x2c, 0x3a, 0xa8, 0x15, 0x1c,
0x5d, 0xb3, 0xf4, 0x34, 0x27, 0x8a, 0x66, 0xe9, 0xa9, 0xe6, 0x79, 0xe7, 0x0a, 0x35, 0xb9, 0xe8, 0x0a, 0x4c, 0x56, 0x23, 0x29, 0xf1, 0x28, 0x69, 0x6e, 0x2e, 0x75, 0x88, 0x58, 0x36, 0x16, 0xa4,
0x00, 0x9d, 0xa9, 0x2e, 0xfc, 0xa4, 0x7f, 0x86, 0xcd, 0xfd, 0x41, 0x09, 0x96, 0x0b, 0x4c, 0xe8, 0x56, 0x11, 0x14, 0x8d, 0xa2, 0x79, 0x04, 0x4b, 0x05, 0x1b, 0xbb, 0x66, 0xe9, 0x69, 0x4e, 0x14,
0xec, 0x3d, 0x75, 0x3c, 0x9f, 0x6a, 0x5e, 0xef, 0x16, 0x5a, 0x58, 0x9d, 0x23, 0x6a, 0xe7, 0x09, 0xcd, 0xd2, 0x53, 0xcd, 0xf3, 0xce, 0x65, 0x6a, 0x72, 0xd1, 0x01, 0x3a, 0x53, 0x9d, 0x07, 0x69,
0xfb, 0xdc, 0xda, 0xd8, 0x84, 0x71, 0x53, 0x72, 0xe6, 0x6b, 0x95, 0x8a, 0x42, 0x8d, 0xe2, 0x0b, 0xff, 0x14, 0x9b, 0xfb, 0x83, 0x0a, 0x2c, 0x97, 0x98, 0xd0, 0xd9, 0x7b, 0xea, 0x78, 0x3e, 0xd5,
0x58, 0x13, 0x1d, 0xd9, 0x1a, 0x0e, 0x33, 0xd6, 0xdf, 0x1b, 0xb9, 0x7f, 0xb8, 0x65, 0x59, 0xb5, 0xbc, 0xde, 0x2b, 0xb5, 0xb0, 0x3a, 0x87, 0xd4, 0xce, 0x13, 0xf6, 0xb9, 0xb5, 0xb1, 0x09, 0xe3,
0xbb, 0xd3, 0xff, 0x21, 0xd7, 0x14, 0x05, 0x58, 0x74, 0x95, 0x4d, 0xa0, 0x9d, 0xb5, 0xa8, 0xb2, 0xa6, 0xe4, 0xcc, 0xd7, 0x2a, 0x15, 0xa5, 0x1a, 0xc5, 0x17, 0xb0, 0x26, 0x3a, 0xb2, 0x39, 0x1c,
0xe9, 0x75, 0x75, 0xdf, 0xb5, 0x0e, 0x9a, 0x05, 0x56, 0xd8, 0x6f, 0x52, 0x63, 0xef, 0x3a, 0xdd, 0xe6, 0xac, 0xbf, 0xd7, 0x0b, 0xff, 0xca, 0xcb, 0xb2, 0x6a, 0xf7, 0xa6, 0xff, 0xab, 0xaf, 0x29,
0xa2, 0x79, 0x11, 0x67, 0x4f, 0x5c, 0x8f, 0xbf, 0xac, 0xcd, 0xbf, 0x99, 0x71, 0xaa, 0x06, 0xa6, 0x0a, 0xb0, 0xe8, 0x2a, 0x9b, 0x40, 0x27, 0x6f, 0x51, 0x65, 0xd3, 0xeb, 0xea, 0xbd, 0x6b, 0x1d,
0xd9, 0xab, 0xf5, 0x51, 0xb7, 0xd8, 0x7a, 0x7c, 0x8b, 0x9a, 0x5f, 0x77, 0xde, 0x29, 0x6a, 0x3e, 0x34, 0x4b, 0xac, 0xb0, 0xdf, 0xa4, 0xc6, 0xde, 0x75, 0x7a, 0x65, 0xf3, 0x22, 0xce, 0x9e, 0xb8,
0x12, 0x9f, 0x88, 0x43, 0xef, 0x5a, 0x96, 0xaf, 0x55, 0x0f, 0xd6, 0x8b, 0xd6, 0x7b, 0xea, 0xe9, 0x1e, 0x7f, 0x59, 0x9b, 0x7f, 0x73, 0xe3, 0x54, 0x0d, 0x4c, 0xb3, 0x57, 0xeb, 0xa3, 0x6e, 0xb9,
0x25, 0x33, 0xd7, 0x33, 0xa4, 0xdb, 0x35, 0x4d, 0x73, 0xaf, 0x66, 0x9f, 0x02, 0xbb, 0xb2, 0x66, 0xf5, 0xf8, 0x16, 0x35, 0x7f, 0xc3, 0x79, 0xa7, 0xac, 0xf9, 0x58, 0x7c, 0x22, 0x0e, 0xbd, 0x6b,
0x9f, 0x22, 0xfb, 0xb0, 0xad, 0xd7, 0x28, 0xcb, 0xf0, 0x27, 0xa5, 0xbb, 0x0f, 0x6e, 0xff, 0xe8, 0x79, 0xbe, 0x56, 0x3d, 0xb8, 0x51, 0xb6, 0xde, 0x53, 0x4f, 0x2f, 0xb9, 0xb9, 0xbe, 0x44, 0xba,
0x9b, 0xa7, 0x7e, 0x72, 0x36, 0x39, 0xde, 0xe8, 0x87, 0xa3, 0x7b, 0x43, 0x65, 0xd6, 0x93, 0x57, 0x5d, 0xdb, 0x34, 0xf7, 0x6a, 0xf6, 0x29, 0xb1, 0x2b, 0x6b, 0xf6, 0x29, 0xb3, 0x0f, 0xdb, 0x7a,
0x6a, 0xee, 0x0d, 0x83, 0xc1, 0x3d, 0xaa, 0xf6, 0x78, 0x8e, 0xfe, 0x43, 0xe0, 0x77, 0xfe, 0x6f, 0x8d, 0xb2, 0x0c, 0x7f, 0x52, 0xb9, 0xfb, 0xe0, 0xf6, 0x8f, 0xbe, 0x79, 0x12, 0xa4, 0xa7, 0x93,
0x00, 0x00, 0x00, 0xff, 0xff, 0x54, 0xaa, 0x5f, 0xca, 0x53, 0x70, 0x00, 0x00, 0xa3, 0xf5, 0x7e, 0x34, 0xba, 0x37, 0x54, 0x66, 0x3d, 0x79, 0x59, 0xe7, 0xde, 0x30, 0x1c, 0xdc,
0xa3, 0x6a, 0x8f, 0x66, 0xe9, 0x7f, 0x0f, 0x7e, 0xe7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x55,
0x01, 0x55, 0xb7, 0xad, 0x70, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

@ -2686,6 +2686,12 @@ message PolicyUpdateRequest {
/// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged. /// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged.
uint64 max_htlc_msat = 6 [json_name = "max_htlc_msat"]; uint64 max_htlc_msat = 6 [json_name = "max_htlc_msat"];
/// The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true.
uint64 min_htlc_msat = 7 [json_name = "min_htlc_msat"];
/// If true, min_htlc_msat is applied.
bool min_htlc_msat_specified = 8 [json_name = "set_min_htlc_msat"];
} }
message PolicyUpdateResponse { message PolicyUpdateResponse {
} }

@ -3538,6 +3538,16 @@
"type": "string", "type": "string",
"format": "uint64", "format": "uint64",
"description": "/ If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged." "description": "/ If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged."
},
"min_htlc_msat": {
"type": "string",
"format": "uint64",
"description": "/ The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true."
},
"min_htlc_msat_specified": {
"type": "boolean",
"format": "boolean",
"description": "/ If true, min_htlc_msat is applied."
} }
} }
}, },

4
log.go

@ -31,6 +31,7 @@ import (
"github.com/lightningnetwork/lnd/netann" "github.com/lightningnetwork/lnd/netann"
"github.com/lightningnetwork/lnd/peernotifier" "github.com/lightningnetwork/lnd/peernotifier"
"github.com/lightningnetwork/lnd/routing" "github.com/lightningnetwork/lnd/routing"
"github.com/lightningnetwork/lnd/routing/localchans"
"github.com/lightningnetwork/lnd/signal" "github.com/lightningnetwork/lnd/signal"
"github.com/lightningnetwork/lnd/sweep" "github.com/lightningnetwork/lnd/sweep"
"github.com/lightningnetwork/lnd/watchtower" "github.com/lightningnetwork/lnd/watchtower"
@ -79,7 +80,6 @@ func init() {
addSubLogger("CHDB", channeldb.UseLogger) addSubLogger("CHDB", channeldb.UseLogger)
addSubLogger("HSWC", htlcswitch.UseLogger) addSubLogger("HSWC", htlcswitch.UseLogger)
addSubLogger("CMGR", connmgr.UseLogger) addSubLogger("CMGR", connmgr.UseLogger)
addSubLogger("CRTR", routing.UseLogger)
addSubLogger("BTCN", neutrino.UseLogger) addSubLogger("BTCN", neutrino.UseLogger)
addSubLogger("CNCT", contractcourt.UseLogger) addSubLogger("CNCT", contractcourt.UseLogger)
addSubLogger("SPHX", sphinx.UseLogger) addSubLogger("SPHX", sphinx.UseLogger)
@ -99,6 +99,8 @@ func init() {
addSubLogger("PRNF", peernotifier.UseLogger) addSubLogger("PRNF", peernotifier.UseLogger)
addSubLogger("CHFD", chanfunding.UseLogger) addSubLogger("CHFD", chanfunding.UseLogger)
addSubLogger(routing.Subsystem, routing.UseLogger)
addSubLogger(routing.Subsystem, localchans.UseLogger)
addSubLogger(routerrpc.Subsystem, routerrpc.UseLogger) addSubLogger(routerrpc.Subsystem, routerrpc.UseLogger)
addSubLogger(wtclientrpc.Subsystem, wtclientrpc.UseLogger) addSubLogger(wtclientrpc.Subsystem, wtclientrpc.UseLogger)
addSubLogger(chanfitness.Subsystem, chanfitness.UseLogger) addSubLogger(chanfitness.Subsystem, chanfitness.UseLogger)

@ -531,7 +531,7 @@ func (p *peer) loadActiveChannels(chans []*channeldb.OpenChannel) (
var forwardingPolicy *htlcswitch.ForwardingPolicy var forwardingPolicy *htlcswitch.ForwardingPolicy
if selfPolicy != nil { if selfPolicy != nil {
forwardingPolicy = &htlcswitch.ForwardingPolicy{ forwardingPolicy = &htlcswitch.ForwardingPolicy{
MinHTLC: selfPolicy.MinHTLC, MinHTLCOut: selfPolicy.MinHTLC,
MaxHTLC: selfPolicy.MaxHTLC, MaxHTLC: selfPolicy.MaxHTLC,
BaseFee: selfPolicy.FeeBaseMSat, BaseFee: selfPolicy.FeeBaseMSat,
FeeRate: selfPolicy.FeeProportionalMillionths, FeeRate: selfPolicy.FeeProportionalMillionths,
@ -1862,7 +1862,7 @@ out:
fwdMinHtlc := lnChan.FwdMinHtlc() fwdMinHtlc := lnChan.FwdMinHtlc()
defaultPolicy := p.server.cc.routingPolicy defaultPolicy := p.server.cc.routingPolicy
forwardingPolicy := &htlcswitch.ForwardingPolicy{ forwardingPolicy := &htlcswitch.ForwardingPolicy{
MinHTLC: fwdMinHtlc, MinHTLCOut: fwdMinHtlc,
MaxHTLC: newChan.LocalChanCfg.MaxPendingAmount, MaxHTLC: newChan.LocalChanCfg.MaxPendingAmount,
BaseFee: defaultPolicy.BaseFee, BaseFee: defaultPolicy.BaseFee,
FeeRate: defaultPolicy.FeeRate, FeeRate: defaultPolicy.FeeRate,

@ -70,10 +70,11 @@ func validateAtplCfg(cfg *autoPilotConfig) ([]*autopilot.WeightedHeuristic,
// chanController is an implementation of the autopilot.ChannelController // chanController is an implementation of the autopilot.ChannelController
// interface that's backed by a running lnd instance. // interface that's backed by a running lnd instance.
type chanController struct { type chanController struct {
server *server server *server
private bool private bool
minConfs int32 minConfs int32
confTarget uint32 confTarget uint32
chanMinHtlcIn lnwire.MilliSatoshi
} }
// OpenChannel opens a channel to a target peer, with a capacity of the // OpenChannel opens a channel to a target peer, with a capacity of the
@ -91,9 +92,6 @@ func (c *chanController) OpenChannel(target *btcec.PublicKey,
return err return err
} }
// TODO(halseth): make configurable?
minHtlc := lnwire.NewMSatFromSatoshis(1)
// Construct the open channel request and send it to the server to begin // Construct the open channel request and send it to the server to begin
// the funding workflow. // the funding workflow.
req := &openChanReq{ req := &openChanReq{
@ -102,7 +100,7 @@ func (c *chanController) OpenChannel(target *btcec.PublicKey,
subtractFees: true, subtractFees: true,
localFundingAmt: amt, localFundingAmt: amt,
pushAmt: 0, pushAmt: 0,
minHtlc: minHtlc, minHtlcIn: c.chanMinHtlcIn,
fundingFeePerKw: feePerKw, fundingFeePerKw: feePerKw,
private: c.private, private: c.private,
remoteCsvDelay: 0, remoteCsvDelay: 0,
@ -136,11 +134,13 @@ func (c *chanController) SpliceOut(chanPoint *wire.OutPoint,
// autopilot.ChannelController interface. // autopilot.ChannelController interface.
var _ autopilot.ChannelController = (*chanController)(nil) var _ autopilot.ChannelController = (*chanController)(nil)
// initAutoPilot initializes a new autopilot.ManagerCfg to manage an // initAutoPilot initializes a new autopilot.ManagerCfg to manage an autopilot.
// autopilot.Agent instance based on the passed configuration struct. The agent // Agent instance based on the passed configuration structs. The agent and all
// and all interfaces needed to drive it won't be launched before the Manager's // interfaces needed to drive it won't be launched before the Manager's
// StartAgent method is called. // StartAgent method is called.
func initAutoPilot(svr *server, cfg *autoPilotConfig) (*autopilot.ManagerCfg, error) { func initAutoPilot(svr *server, cfg *autoPilotConfig, chainCfg *chainConfig) (
*autopilot.ManagerCfg, error) {
atplLog.Infof("Instantiating autopilot with max_channels=%d, allocation=%f, "+ atplLog.Infof("Instantiating autopilot with max_channels=%d, allocation=%f, "+
"min_chan_size=%d, max_chan_size=%d, private=%t, min_confs=%d, "+ "min_chan_size=%d, max_chan_size=%d, private=%t, min_confs=%d, "+
"conf_target=%d", cfg.MaxChannels, cfg.Allocation, cfg.MinChannelSize, "conf_target=%d", cfg.MaxChannels, cfg.Allocation, cfg.MinChannelSize,
@ -173,10 +173,11 @@ func initAutoPilot(svr *server, cfg *autoPilotConfig) (*autopilot.ManagerCfg, er
Self: self, Self: self,
Heuristic: weightedAttachment, Heuristic: weightedAttachment,
ChanController: &chanController{ ChanController: &chanController{
server: svr, server: svr,
private: cfg.Private, private: cfg.Private,
minConfs: cfg.MinConfs, minConfs: cfg.MinConfs,
confTarget: cfg.ConfTarget, confTarget: cfg.ConfTarget,
chanMinHtlcIn: chainCfg.MinHTLCIn,
}, },
WalletBalance: func() (btcutil.Amount, error) { WalletBalance: func() (btcutil.Amount, error) {
return svr.cc.wallet.ConfirmedBalance(cfg.MinConfs) return svr.cc.wallet.ConfirmedBalance(cfg.MinConfs)

16
routing/localchans/log.go Normal file

@ -0,0 +1,16 @@
package localchans
import (
"github.com/btcsuite/btclog"
)
// log is a logger that is initialized with no output filters. This
// means the package will not perform any logging by default until the caller
// requests it.
var log btclog.Logger
// UseLogger uses a specified Logger to output package logging info. This
// function is called from the parent package htlcswitch logger initialization.
func UseLogger(logger btclog.Logger) {
log = logger
}

@ -79,6 +79,9 @@ func (r *Manager) UpdatePolicy(newSchema routing.ChannelPolicy,
// Apply the new policy to the edge. // Apply the new policy to the edge.
err := r.updateEdge(info.ChannelPoint, edge, newSchema) err := r.updateEdge(info.ChannelPoint, edge, newSchema)
if err != nil { if err != nil {
log.Warnf("Cannot update policy for %v: %v\n",
info.ChannelPoint, err,
)
return nil return nil
} }
@ -93,7 +96,7 @@ func (r *Manager) UpdatePolicy(newSchema routing.ChannelPolicy,
BaseFee: edge.FeeBaseMSat, BaseFee: edge.FeeBaseMSat,
FeeRate: edge.FeeProportionalMillionths, FeeRate: edge.FeeProportionalMillionths,
TimeLockDelta: uint32(edge.TimeLockDelta), TimeLockDelta: uint32(edge.TimeLockDelta),
MinHTLC: edge.MinHTLC, MinHTLCOut: edge.MinHTLC,
MaxHTLC: edge.MaxHTLC, MaxHTLC: edge.MaxHTLC,
} }
@ -157,6 +160,11 @@ func (r *Manager) updateEdge(chanPoint wire.OutPoint,
edge.MaxHTLC = amtMax edge.MaxHTLC = amtMax
} }
// If a new min htlc is specified, update the edge.
if newSchema.MinHTLC != nil {
edge.MinHTLC = *newSchema.MinHTLC
}
// If the MaxHtlc flag wasn't already set, we can set it now. // If the MaxHtlc flag wasn't already set, we can set it now.
edge.MessageFlags |= lnwire.ChanUpdateOptionMaxHtlc edge.MessageFlags |= lnwire.ChanUpdateOptionMaxHtlc

@ -11,9 +11,11 @@ import (
// it. // it.
var log btclog.Logger var log btclog.Logger
const Subsystem = "CRTR"
// The default amount of logging is none. // The default amount of logging is none.
func init() { func init() {
UseLogger(build.NewSubLogger("CRTR", nil)) UseLogger(build.NewSubLogger(Subsystem, nil))
} }
// DisableLog disables all library log output. Logging output is disabled by // DisableLog disables all library log output. Logging output is disabled by

@ -224,6 +224,10 @@ type ChannelPolicy struct {
// MaxHTLC is the maximum HTLC size including fees we are allowed to // MaxHTLC is the maximum HTLC size including fees we are allowed to
// forward over this channel. // forward over this channel.
MaxHTLC lnwire.MilliSatoshi MaxHTLC lnwire.MilliSatoshi
// MinHTLC is the minimum HTLC size including fees we are allowed to
// forward over this channel.
MinHTLC *lnwire.MilliSatoshi
} }
// Config defines the configuration for the ChannelRouter. ALL elements within // Config defines the configuration for the ChannelRouter. ALL elements within

@ -1449,7 +1449,7 @@ func (r *rpcServer) OpenChannel(in *lnrpc.OpenChannelRequest,
localFundingAmt := btcutil.Amount(in.LocalFundingAmount) localFundingAmt := btcutil.Amount(in.LocalFundingAmount)
remoteInitialBalance := btcutil.Amount(in.PushSat) remoteInitialBalance := btcutil.Amount(in.PushSat)
minHtlc := lnwire.MilliSatoshi(in.MinHtlcMsat) minHtlcIn := lnwire.MilliSatoshi(in.MinHtlcMsat)
remoteCsvDelay := uint16(in.RemoteCsvDelay) remoteCsvDelay := uint16(in.RemoteCsvDelay)
// Ensure that the initial balance of the remote party (if pushing // Ensure that the initial balance of the remote party (if pushing
@ -1537,7 +1537,7 @@ func (r *rpcServer) OpenChannel(in *lnrpc.OpenChannelRequest,
chainHash: *activeNetParams.GenesisHash, chainHash: *activeNetParams.GenesisHash,
localFundingAmt: localFundingAmt, localFundingAmt: localFundingAmt,
pushAmt: lnwire.NewMSatFromSatoshis(remoteInitialBalance), pushAmt: lnwire.NewMSatFromSatoshis(remoteInitialBalance),
minHtlc: minHtlc, minHtlcIn: minHtlcIn,
fundingFeePerKw: feeRate, fundingFeePerKw: feeRate,
private: in.Private, private: in.Private,
remoteCsvDelay: remoteCsvDelay, remoteCsvDelay: remoteCsvDelay,
@ -1631,7 +1631,7 @@ func (r *rpcServer) OpenChannelSync(ctx context.Context,
localFundingAmt := btcutil.Amount(in.LocalFundingAmount) localFundingAmt := btcutil.Amount(in.LocalFundingAmount)
remoteInitialBalance := btcutil.Amount(in.PushSat) remoteInitialBalance := btcutil.Amount(in.PushSat)
minHtlc := lnwire.MilliSatoshi(in.MinHtlcMsat) minHtlcIn := lnwire.MilliSatoshi(in.MinHtlcMsat)
remoteCsvDelay := uint16(in.RemoteCsvDelay) remoteCsvDelay := uint16(in.RemoteCsvDelay)
// Ensure that the initial balance of the remote party (if pushing // Ensure that the initial balance of the remote party (if pushing
@ -1679,7 +1679,7 @@ func (r *rpcServer) OpenChannelSync(ctx context.Context,
chainHash: *activeNetParams.GenesisHash, chainHash: *activeNetParams.GenesisHash,
localFundingAmt: localFundingAmt, localFundingAmt: localFundingAmt,
pushAmt: lnwire.NewMSatFromSatoshis(remoteInitialBalance), pushAmt: lnwire.NewMSatFromSatoshis(remoteInitialBalance),
minHtlc: minHtlc, minHtlcIn: minHtlcIn,
fundingFeePerKw: feeRate, fundingFeePerKw: feeRate,
private: in.Private, private: in.Private,
remoteCsvDelay: remoteCsvDelay, remoteCsvDelay: remoteCsvDelay,
@ -4864,15 +4864,25 @@ func (r *rpcServer) UpdateChannelPolicy(ctx context.Context,
FeeRate: feeRateFixed, FeeRate: feeRateFixed,
} }
maxHtlc := lnwire.MilliSatoshi(req.MaxHtlcMsat)
var minHtlc *lnwire.MilliSatoshi
if req.MinHtlcMsatSpecified {
min := lnwire.MilliSatoshi(req.MinHtlcMsat)
minHtlc = &min
}
chanPolicy := routing.ChannelPolicy{ chanPolicy := routing.ChannelPolicy{
FeeSchema: feeSchema, FeeSchema: feeSchema,
TimeLockDelta: req.TimeLockDelta, TimeLockDelta: req.TimeLockDelta,
MaxHTLC: lnwire.MilliSatoshi(req.MaxHtlcMsat), MaxHTLC: maxHtlc,
MinHTLC: minHtlc,
} }
rpcsLog.Debugf("[updatechanpolicy] updating channel policy base_fee=%v, "+ rpcsLog.Debugf("[updatechanpolicy] updating channel policy base_fee=%v, "+
"rate_float=%v, rate_fixed=%v, time_lock_delta: %v, targets=%v", "rate_float=%v, rate_fixed=%v, time_lock_delta: %v, "+
"min_htlc=%v, max_htlc=%v, targets=%v",
req.BaseFeeMsat, req.FeeRate, feeRateFixed, req.TimeLockDelta, req.BaseFeeMsat, req.FeeRate, feeRateFixed, req.TimeLockDelta,
minHtlc, maxHtlc,
spew.Sdump(targetChans)) spew.Sdump(targetChans))
// With the scope resolved, we'll now send this to the local channel // With the scope resolved, we'll now send this to the local channel

@ -985,6 +985,7 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB,
return nil, fmt.Errorf("unable to find channel") return nil, fmt.Errorf("unable to find channel")
}, },
DefaultRoutingPolicy: cc.routingPolicy, DefaultRoutingPolicy: cc.routingPolicy,
DefaultMinHtlcIn: cc.minHtlcIn,
NumRequiredConfs: func(chanAmt btcutil.Amount, NumRequiredConfs: func(chanAmt btcutil.Amount,
pushAmt lnwire.MilliSatoshi) uint16 { pushAmt lnwire.MilliSatoshi) uint16 {
// For large channels we increase the number // For large channels we increase the number
@ -3084,7 +3085,8 @@ type openChanReq struct {
private bool private bool
minHtlc lnwire.MilliSatoshi // minHtlcIn is the minimum incoming htlc that we accept.
minHtlcIn lnwire.MilliSatoshi
remoteCsvDelay uint16 remoteCsvDelay uint16