Functor Run Pointed Run monoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoids (Index)monoids-0.1.9: Lots of Monoids (Index)monoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of MonoidsRun 1 (Type/Class) Data.Monoid.Generator.RLE 2 (Data Constructor) Data.Monoid.Generator.RLE monoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoids monoids-0.1.9: Lots of Monoidsmonoids-0.1.8: Lots of Monoidsmonoids-0.1.9: Lots of Monoids , decode
- , encode
- , encodeList
- , prop_decode_encode
- , prop_decode_encodeList
- ) where
-
-import qualified Data . Sequence as Seq
-import Data . Sequence ( Seq , ( |> ) , ( <| ) , ViewL ( .. ) , ViewR ( .. ) , ( >< ) , viewl , viewr )
-import Data . Foldable
-import Data . Monoid . Generator
-import qualified Data . Monoid . Combinators as Monoid
-import Control . Functor . Pointed
-
-
-data Run a = Run a ! Int
-
-instance Functor Run where
- fmap f ( Run a n ) = Run ( f a ) n
-
-instance Pointed Run where
- point a = Run a 1
-
-
-newtype RLE f a = RLE { getRLE :: f ( Run a ) }
-
-instance Functor f => Functor ( RLE f ) where
- fmap f = RLE . fmap ( fmap f ) . getRLE
-
-instance Foldable f => Generator ( RLE f a ) where
- type Elem ( RLE f a ) = a
- mapReduce f = foldMap run . getRLE where
- run ( Run a n ) = unit ( f a ) ` Monoid . replicate ` n
-
-decode :: Foldable f => RLE f a -> [ a ]
-decode = reduce
-
-
-
-encodeList :: Eq a => [ a ] -> RLE [] a
-encodeList [] = RLE []
-encodeList ( a : as ) = RLE ( point a `before` as )
-
-before :: Eq a => Run a -> [ a ] -> [ Run a ]
-r `before` [] = [ r ]
-r @ ( Run a n ) `before` ( b : bs ) | a == b = Run a ( n + 1 ) `before` bs
- | otherwise = r : point b `before` bs
-
-
-prop_decode_encodeList :: Eq a => [ a ] -> Bool
-prop_decode_encodeList xs = decode ( encode xs ) == xs
-
-
-
-instance Eq a => Monoid ( RLE Seq a ) where
- mempty = RLE Seq . empty
- RLE l `mappend` RLE r = viewr l `merge` viewl r where
- ( l' :> Run a m ) `merge` ( Run b n :< r' )
- | a == b = RLE ( ( l' |> Run a ( m + n ) ) >< r' )
- | otherwise = RLE ( l >< r )
- EmptyR `merge` _ = RLE r
- _ `merge` EmptyL = RLE l
-
-instance Eq a => Reducer a ( RLE Seq a ) where
- unit = RLE . Seq . singleton . point
- cons a ( RLE r ) = case viewl r of
- Run b n :< r' | a == b -> RLE ( Run a ( n + 1 ) <| r' )
- | otherwise -> RLE ( Run a 1 <| r )
- EmptyL -> RLE ( return ( point a ) )
- snoc ( RLE l ) a = case viewr l of
- l' :> Run b n | a == b -> RLE ( l' |> Run b ( n + 1 ) )
- | otherwise -> RLE ( l |> Run a 1 )
- EmptyR -> RLE ( return ( point a ) )
-
-encode :: ( Generator c , Eq ( Elem c ) ) => c -> RLE Seq ( Elem c )
-encode = reduce
-
-prop_decode_encode :: ( Generator c , Eq ( Elem c ) ) => c -> Bool
-prop_decode_encode xs = decode ( encode xs ) == reduce xs
+ , Run ( Run )
+ , decode
+ , encode
+ , encodeList
+ , prop_decode_encode
+ , prop_decode_encodeList
+ ) where
+
+import qualified Data . Sequence as Seq
+import Data . Sequence ( Seq , ( |> ) , ( <| ) , ViewL ( .. ) , ViewR ( .. ) , ( >< ) , viewl , viewr )
+import Data . Foldable
+import Data . Monoid . Generator
+import qualified Data . Monoid . Combinators as Monoid
+import Control . Functor . Pointed
+
+
+data Run a = Run a ! Int
+
+instance Functor Run where
+ fmap f ( Run a n ) = Run ( f a ) n
+
+instance Pointed Run where
+ point a = Run a 1
+
+
+newtype RLE f a = RLE { getRLE :: f ( Run a ) }
+
+instance Functor f => Functor ( RLE f ) where
+ fmap f = RLE . fmap ( fmap f ) . getRLE
+
+instance Foldable f => Generator ( RLE f a ) where
+ type Elem ( RLE f a ) = a
+ mapReduce f = foldMap run . getRLE where
+ run ( Run a n ) = unit ( f a ) ` Monoid . replicate ` n
+
+decode :: Foldable f => RLE f a -> [ a ]
+decode = reduce
+
+
+
+encodeList :: Eq a => [ a ] -> RLE [] a
+encodeList [] = RLE []
+encodeList ( a : as ) = RLE ( point a `before` as )
+
+before :: Eq a => Run a -> [ a ] -> [ Run a ]
+r `before` [] = [ r ]
+r @ ( Run a n ) `before` ( b : bs ) | a == b = Run a ( n + 1 ) `before` bs
+ | otherwise = r : point b `before` bs
+
+
+prop_decode_encodeList :: Eq a => [ a ] -> Bool
+prop_decode_encodeList xs = decode ( encode xs ) == xs
+
+
+
+instance Eq a => Monoid ( RLE Seq a ) where
+ mempty = RLE Seq . empty
+ RLE l `mappend` RLE r = viewr l `merge` viewl r where
+ ( l' :> Run a m ) `merge` ( Run b n :< r' )
+ | a == b = RLE ( ( l' |> Run a ( m + n ) ) >< r' )
+ | otherwise = RLE ( l >< r )
+ EmptyR `merge` _ = RLE r
+ _ `merge` EmptyL = RLE l
+
+instance Eq a => Reducer a ( RLE Seq a ) where
+ unit = RLE . Seq . singleton . point
+ cons a ( RLE r ) = case viewl r of
+ Run b n :< r' | a == b -> RLE ( Run a ( n + 1 ) <| r' )
+ | otherwise -> RLE ( Run a 1 <| r )
+ EmptyL -> RLE ( return ( point a ) )
+ snoc ( RLE l ) a = case viewr l of
+ l' :> Run b n | a == b -> RLE ( l' |> Run b ( n + 1 ) )
+ | otherwise -> RLE ( l |> Run a 1 )
+ EmptyR -> RLE ( return ( point a ) )
+
+encode :: ( Generator c , Eq ( Elem c ) ) => c -> RLE Seq ( Elem c )
+encode = reduce
+
+prop_decode_encode :: ( Generator c , Eq ( Elem c ) ) => c -> Bool
+prop_decode_encode xs = decode ( encode xs ) == reduce xs
hunk ./doc/html/monoids/src/Data-Monoid-Self.html 1
+
+
+
+
+Data/Monoid/Self.hs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+module Data . Monoid . Self
+ ( module Data . Monoid . Reducer
+ , Self ( Self , getSelf )
+ ) where
+
+import Control . Functor . Pointed
+import Data . Monoid . Reducer
+import Data . Monoid . Generator
+
+newtype Self m = Self { getSelf :: m } deriving ( Monoid )
+
+instance Monoid m => Reducer m ( Self m ) where
+ unit = Self
+
+instance Functor Self where
+ fmap f ( Self x ) = Self ( f x )
+
+instance Pointed Self where
+ point = Self
+
+instance Copointed Self where
+ extract = getSelf
+
+
binary ./monoids-0.1.9.tar.gz
oldhex
*
newhex
*1f8b0800000000000003ed7d6b77db38b2e0fdbafa15b8b97346545a56fcca63b2ed1cbb13a7e3
*bdce636c65b233d9de8492289b638a54482ab6bb33fbdbb71e7892a0243b8ed27daf99138bc4a3
*50000a4055a150986469168f8ab5f5de46ef2ff7feed9b3cebf03cbc7f9f7ee1a9fed2fbc6c6c6
*83ad079b1b5b1b0ffe6d7d6363ebfec37f13f7bf0d3aee332bca300754be164eb5727f9067e2f4
*ffe1c1d3fd57c7fb375c06b6c783ededa6fedf7c089dedf6ffe6d643e8ff9534e27ff3fe7f9a4d
*2ff3f8e4b414c1b02336d7d7ff22f647e7613e12ff3989cab2b5972482e20b914745947f8e46bd
*56eb281ac54599c783591967a908d39198159188535164b37c1851c8204ec3fc528cb37c5274c5
*795c9e8a2ca7df6c56b626d9281ec7c3100174459847621ae593b82ca39198e6d9e778042fe569
*58c29f08802449761ea7276298a5a318331598a905483e6eb5043c77858b5521b2b14267988d22
*3181ae864a9421a08930c341f619a36403101021d2ac8c87511752c48548001e82b10b4d47158c
*a0d06112c69328ef356102255aada130816a8e66809d4646a2a051ba3a3212824149c8ca8eb2e1
*6c12a565a83aec1ef4450631b998846594c76152e8769750a8cb28b355195dc757514cd931411a
*4e2244eda008c3a1f85f591a1580bb89a3bea0d27415538698e50520702906115210d42613513a
*82d0088905109a646524b8a580064780e9678de018a2b96d8a6c5c9e231149f212c5341a227d41
*d618a92e47ca4a99c68a82ebd17f71702c8e5f3fefbfdb3bda17f0fee6e8f5df0e9eed3f133ffd
*5df45fec8ba7afdffcfde8e0e7177df1e2f5e1b3fda363b1f7ea1984beea1f1dfcf4b6fffae8b8
*7567ef1872dea188bd577f17fbfffbcdd1fef1b1787d240e5ebe393c006000fd68ef55ff60ffb8
*2b0e5e3d3d7cfbece0d5cf5d0100c4abd7fdd6e1c1cb833e24ebbfee52a1f56ce2f573f172ffe8
*e90bf8dcfbe9e0f0a0ff772aeff941ff1596f5fcf5516b4fbcd93bea1f3c7d7bb87724debc3d7a
*f3fa785f60b59e1d1c3f3ddc3b78b9ffac07a5438962ff6ffbaffae2f8c5dee1a15bcbd6eb77af
*f68f1075bb8ae2a77d7178b0f7d3e13e1644957c7670b4ffb48fb5316f4fa1e100bdc36eebf8cd
*fed3037881b6d887baec1dfdbd2b611eeffff52d248248f16cefe5decf50b560418b40973c7d7b
*b4ff12518666387efbd371ffa0ffb6bf2f7e7efdfa19b5f3f1fed1df60dd3afe9fe2f0f53135d6
*dbe3fd6eebd95e7f8f0a0610d052100def3fbd3d3ea0363b78d5df3f3a7afba67ff0fa5507baf7
*1db40ae0b807599f51e3be7e8555051ad97f7df477048a6d406ddf15ef5eec43f811b627b5d41e
*36c131b4d8d3be9d0cca8306ecb74c1dc5abfd9f0f0f7ede7ff5741f635f23947707c7fb1de8aa
*83634c7040c542e743996fa9cad84580558b5e2d82ed52478a83e762efd9df0e106d9918bafef8
*40920935d9d317b2b97baddafcefaeffc751399bf692d3e246d79845fcdfc683fb95f57f6be3e1
*f6edfabf8ae73ffefddeacc8efc1ea742f9fa5a76171162549eb8980e5799644e2252e96c104fe
*76c4394cdf510be2e2c934cb4bf1cc5e158e2130a1584c2c1e3f1607af45d051df3b30738fc359
*5222c03a15de3edfeb71c7bffcea0dc34198dc58190bf8ffadaded0795f1bfbdbeb9713bfe57f1
*2077f6f87ffc0fe4a664e7b73e473932488f2990e8a29500179a161107fd74fc6c4b85ac8de324
*7a0c8152726c8533e0bf7209514a127b3d294ce05480ec77943ff6c58b1fa333fcdd3d8184496f
*984d9eb4a07706711297979c23ba000e2e264636699d6693681a9e48b44ecb72faf8de3dc895a5
*e10873dfcba31018c6160819d149964b10cfc2326c159769362de282830eb39238d497b2054651
*31cce3294e6c8f7df19a417fcc7c685574d2151ecce264b4565e4e234e2967491a5e6baa9d8578
*b2b3d1db6c419b0e72901180b9e57ca3680abc70f15810bb3b0881277eb223b6c59fff2c7e14db
*bd8d6e4bb1d2d4a605c6aef736397ebdb7d5e58c65745172d4868ada9451d31018ed21466ef5d6
*39724bc11d833811e5651e459c795d65de9099079765842b00884094e02f9c60a3b72e13a8765f
*0304f250a2777f4bc179b06eb00893244a30c18642724323392965cc7a35a6282718b3a9f26cea
*98415c165159c9a610ffeb2c1e9e3d3d8d86674e9e30cf4110a9b4618b682e03d1648d97c4e271
*4b5151efe73c9b4d2b9fbda7d904653d946caa51c7b3933037814c4ebdbd118a7352faf34534e5
*9b4e1312a03d599f72d34374528ff32128e39e8344754c7d5a8bfa39021ac35ccd31bdc37f3c7c
*3427fae870bf167b185d2096bd6392d4df640589b68dc9def69f3fea3d8b50a0af23a212bdcbf2
*51bd6e2f715ea8870253123737a41bddd013aff33adce32819d7028f2214f8eb006478efe9a907
*ba8a7c07a26d2df26deab4d691d373f8d5fb29cb9228aca401f426b127a8d7cfb3a94b3526ee55
*646367c29dea533092d1abd9a412fa92069037b0b7372bb309b4f1f0593c1e039f99967158d6aa
*a6dbffe474b896d1040dd3e3da3b983ec4da38cdd660fa4dd74633eeb0680d876e5e16b70c67e3
*e3f27fd8d037bf097075fdffe6e6d6faadfe7f158fa7ff79adba411dc022fe1ffe55e5ff07f76f
*e5ff953c6b37f8b4d6d6c417fcc3733a71bc8f6d4e09a2cc7e034401cffc70adbee700c90e59bc
*60082070b418fa4b2d4060b89dc9273b408663253e1020477a80d837b038a8f8c7624a5fb04071
*59fb172572dfa2cd2b6d1b55d3c56c4aaa8f36d5a72db2297236b80ab56eb221d75a2da97f318d
*c73c6a20ec081f03d915862bed8a93343a8185507d15b30170e2c3527e4fe274c67c92d6ee28dd
*8e0fbc278eb81c4fb8c547b6e2741c5f24e281f848e57d6c119d8897711a4fc204e4179489ca08
*354410c442575b22dec65d8036e56bb786495814520813a1d879c2558557461e2b02a04389af88
*5314b1385cc243c55428d69e8890450b046cc24c846ea94aa46839d07624845fa33c6319425552
*0c2012bea6097ea8f403a152e90238a54aa0730cb0dd606a4a8791004ecaae6e708cdf1dabd206
*1d8cea09f9d9132751792cd930caa4b1c3af814c1f40d5c4a043a94ca1cf1139e80be821bbec37
*bc13d354be8a767190a1945603d0b8a89081951f70ba57c74975b741e7d90cf1f3e342713d1d40
*9860586b1e4024e8c6c6c5b80a40cde67346d3c0f8395099028b2e3a73cb3703a7090b2b450597
*8af06683d2c55b810317988be3f75e976e9fd53c1efe8f04ad9bdc025ac0ffad6f6d6e56f9bfed
*07ebb7fcdf2a9edfd6fe43bca65dd0e30f3fbf786a49d1593e3d0dd342fcc7dabf1c6e44ab185c
*5ec4e63aaac98db6a12b74762fcbc150ec10935faeff819c34bb02438fe44c093328bfdece5c57
*7a3ce39f19ac1b54035c5dfedfda86e4b7f2ff0a9ee6fe376adbaf5d0be6cfff1bdb0fb6aaf67f
*f71fdedfbc9dff57f1e0fc7fb8f7eae7b77b3fef8bb7e9281ac62314820f248b5a7445ff721abd
*9e322dc0e7f324ba8821c5d32cc59d2508211df99b300f2798f429ced29195b002ea793801893b
*e285e586c5668f020204fb866d0c571b81e9701fcf512aa06ea2a28ec0743f1d3f5b2bca4b5215
*5474128237f1a07ebbd298a297e5277555c4025d445519b127da1af1b6d81dee8ab800ae7e9a15
*0534f1e51a99bb8549fc6b34321b825d5861e3e1a90a28c4e73099b12d1ec2c46d49d1de4fa209
*41ec923521e7384bb3f3429c66e7648f371ec7c318104d2e45389de25fd1969b12a415a1edbd21
*e96d42b42d2cced11492113f8e51ce091df463340e2c01f9e472825c463c442bc5b82c08532808
*28252e31194447c2aa1ba10d5c89b8435dfa3c4b8858f5cb1dae848d1f1a17a2da06d0d6151149
*342ed7ca6c8d0d3f09ef119bb96228c68a1c0190b16401b52ba3132459b247752b83f0c3cf619c
*600550d6cbc6bd6fa90cf2eec679d542f6665357b819ba02fb5db16be194d39aef7e66de514694
*5fb99dec3fa3cb22c03f5d143ef1a52363fe467416f00fc5f2ab8ac76dae4701fda5587aeb3473
*857bb433eb04e1169f08f02f64b423fab8db1de05f375c918808c6f0d6c53f2fc3a94ef3690614
*368e61f818286121f0b721c94f9765a4c4eb42e01bea2d4c6817ad724749bba9089392b6fd1e19
*288f18c7a5b21e86bf5e624efa754a2fb3a7a7b3f4ac5812884102bf008545f98fa34fb3880637
*e01d7d721b9b6c07fa683b10bc8cc2620684030b820e75bb46430ae0adb9b8924b2a2b794bcc56
*36653b484b9993df9ccc3232e0df39208052240878ab82c0c8807f9b40c8fcd5cc9493b2a9605c
*54f32ce9bd912611bd633df9f8d4ac6a88b346752235aa46912ada7a6c4b4d2a0e6da549d55382
*185a9a265a16707680d0c78fc55d6984a1e0605810898fb2e88f6242c2572073ac3d115107ffd2
*eb44e5ed67bc762e97776200e8d271165a1ec2508399b42af88f516b4b188dc5249a4ccb4b0b49
*08e268b4bc11a84bb5323aa88cad746e2a4bbda71b9807b63d67f81abc9e6a47d014e760b8a3d2
*f1242182ff43bae922cd86b036f5c4b8e3458106f90204aa692ac55b2d88654359d3304722cecf
*4fd331da89ea241d8824686a1af1e244d3ac0f118ad811da1ec2d41d63ae58f3f7c35fbc8560f8
*8e1836d48e06e70cc65115b09ad0c4671191e656171458f3de67a4445fa9b5443b22ba2a0a5691
*30658a61434932ee1a753405c839d2075f46ede08b7f90e9af9e4c0ce47018176553552afb0a4e
*55286e476ddccc2969513172cafedc509289dea18feee7ce3295833c734b4598678d85ea5828f3
*0c4aac4ebaf522bde51d5c88b84292cc3bc58dd468c543d971375a5c5b583bb26121171d971b86
*d52a2df08c131d0c4266b9380381234de8e4139d073a0346114510e0e26390372f6c89a59546e7
*841b72933089eff0cb6f8ac1c4e97f28fe25fc4d4c294cff3554b8966a69fac52627ec7b0a9f79
*78a82e9d8b8649b423ce96eaf346043c7dcf65981e9e8b8a9d6c47c40b91819e3ec18da74136c3
*6d720ba5ebd185144e152d8c50269c4b237f93190033f9fa9b1135e6538a4cb390563ce976c4e7
*6569250218b26118d07c6416104c3dd932a82cc2c34335aaa08574e34be85fcc5c9c3cf82c4332
*651e856521dac492b4919f6e237fd0c6cc7d3a201941f46536a3b3a800cc3032943a94e9d5a150
*7554f0244356a73ccdb3d9c929a6d2061f1606497c1689365a9fb63501b2c434947cca23263f7e
*9d4b7d9ca4c6ec35b472636a0f7b34d1cce1a3661e89d85a85e93c0c2bdce05cfc6a695decaec0
*39421ceb032407f948b3900edaa8b894270d0ffeb12f3513241e107dd444843a6f4d12022a21af
*0aaaca252f010891aec169e8d9af84770dec863550c81a2f91b199f5ed8aba94e626b976354936
*5822731d01e487972a1726f05a66c9ed2e913bf4145cb201d1a2ac92e1f4154e0bd05230ce7c10
*e4b271ddda57b8a665c09c3500d1bcee12303ed760d496e4af0353478696a2bd9a9e7b14e7d110
*55e06546ec0a2e62a8aa2656d65eb85adef131ec2a9d4a1513a92891b9ecb5321e7dfbcdece6fd
*3f75ece0eb2d4116ecff6d3dd8aceeffdedf5ebfb5ff5dc9b370ff4fd477fc44c3969ff0ecf9e9
*9d07dabf79c59cd333f4e2806bd3f7d902545ad3dff506609aa56b6a1310a6a937fda745476f06
*ee0e77d7ccd4445b819a6b25af1da1188600014ff29096121b9bbc65e0d6a19cc1646b68f6b98d
*8a20e094d1cf06c85e9330bd14e7e1652179df3c2a6779da26798d8b0ba1b4c18c36ea92781297
*727f2e83e8020a04bcb1b3e54ee04df6b16f43ccdeedf26d8729f32367530c6bdc25deb88b0266
*2183a56accd914c33027603acba3b7905f6f8d61f3e880ea3e9652ecdb87f62a51d4a2c26782ed
*53fd9b1116745ade9dae861d99d635f6732a3b34d7dda2b9893d9a9bd8a459bc4bb3609b8694d0
*6fe8f06cef0d0c629cc41a76d96255377e3309ede8807f3b5210a6e1482296748d3388c8615088
*4a91717cd1a329c0e624762b93c02e8490d00c831fcf26585bff0497a60129f1eee228a059a19a
*68b2dbab4d36b4df9d14190295fbeae61484341f28c3e1d91ab919620f4372d2095398f4e2a2c4
*c9c8c134631f45b8ef8e606182a139b9070d11158e0180d996d76e83c846c06ced930faa096482
*091ba6e1ac50dbfbe81d885c0cc1c04cd19021cfa6794c56f9972e0747e54abf456d9c16da04a0
*8df304ccaf597e863031571a26d9896609f150797a39c96685dd24d20113796f9ae82957cfbabc
*15378a60d9c02c11b29d9f912513e3592a2df0e54970188131eea71719f76dd0c1591edb20a44e
*b2d6359aa493c4d875401e9ad087d9049090bc715e1000ac91c83ea32b283eedca1377d125304a
*3fd045b8cfe31caa81000f43ac0f7481645c07d0d56237dce5a67a195e0ea2367ef7bc2620a7a4
*8f015286fe909cb43249e95273c5e9145616d9b0125ba4f1136626a095d046855d8f49fb13bdc6
*61166e69e8f0192646d8e8256aa6c9042043e9127a01d5e6b54a5887a38962c8b483d6606c8b49
*0695d69425a778b24901e8d2ac05410ec322ea1aef5cd1391482ce0fc8815988ac92ecb8534893
*401b0031cd0a3225c031824b445c1a239d3005c0217bdf9207a16a5bbd8fd5fa8ddbbc44a9ee79
*990999c8ca861cc2a77366e60bae42400128a6d22c001d400bb91aa79490768a48b565b66695b8
*1491dd0de7757252c349ef708edd8d19cb04883454007c52d93da602dee491534296facb18cd48
*e7d160ca43f070405b95e09a98eaed3022bc332c0c66d57de1995ae9099ebd174c314d6224a3ad
*96e8b66dac158e4bf2c6c6dc1a91913487529d51cce252d1e284eaacabd66b394c0b499fdae465
*ecd3c604a1d92e1f4bed440548d336e19275535589425813e428d7ab0e536bcbb0554ba03c96da
*1b3b97c190dbddf061049099aa49d711bc534bf016a9b0f3ec48464ef7a362f3089ac5bd21860d
*30c72235d9768851d4e0b4b635b0c662d71a980cc77c07936e6a6b5ea91b2e70af8edfbafcc3bb
*769cf82312ec474e34d15f5da8a97ae7d417e22312ef47990d52eb104049bfa79d65d0b63f324f
*1dbad912b5e88a6a6d30dbe2fa744536af6e08a4b176d67b76f59ada1f536fb5bbd32b54dcd700
*08e06a4d00c2c9fce640904b3588f53eb51bc754d235ae98d963c89e1e83c71291c2ae0b7cfdf0
*83787ff18b1774506bb80f0889017d5070dc30c65586d581a2330cb187826d1565086c4c0f8c54
*3d7d9278d2f3a41a7644b09f8e32d79a4166c408db9ac43aceaaa084be838d323b9d60c46fcff9
*502b7fed8ca8cc8ec741e7e7f49ef094b9d5414e4fc589e3a39a4b1ed1939d623c99c3859960fe
*fc5f336f5eab6062497d2030c25fecdc2cf5422dd39f6ab3399b1b3e88ac1229337758fcf8a563
*780cf8fef2a463ef1a06c7b8eb391120ed88d25d70c2ea6cc3f2681fd2ce84bff32b4b9baf4170
*8bc44b37d1a79ebf061853ad0586414d3c45e0de42cda44896214d84bcc5c83880074caa5dd638
*89a76e2c728cc4f70d629032e23c07d6e37398da157e9dd7475ccdfa48d7bc01a50a3e50ea341a
*4139f110bdf982f492e52376c08b2cbf68ef7f6a8b51161569bb14e4078cf8a1a2cc6144cd40a6
*1111e90ea43d22550fbbfd0b1504fce800b943812517cc97eae70bfbd63d8f8bc8c10b93fb868c
*dc64f25a42c95a83ec39cbf34b65cae06d804a9a86bee9e9743d3725fa33127f226025ee75b8dd
*7366770f6f69f96ca82ae82ec4754944e760f9db9a41743ff54ca04ae553431345088e34fd23bf
*d90e75ed5f2b3fbdd8bcff53f17cf515db400bf67f1e6c6c6e55f67f1eaeafdffa7f5fc9e3ecff
*784e6c359cedf2ee147d9fdd9c8a03b7dff5a68ed9d0a17d13dd72a8ba70b678dea18e7214c172
*8096dabca3d33e224b26edb75dad1c51978c9eb2313a384fa30897b66918e7ea9c97569298f2d8
*040fc4d2619215a8728435322ca3114e7c67ec3062575a39ed929e214b23a9439ba505347431be
*646dd5485cc651324257f4109586bc924df3ec0448668269a8497bc21c64733bacba7d45a8c5a4
*f24095e7c8561f855af7260f82954a8f165dc8d465264ec3cf91563d6bb8459291729834a32376
*a0df23152cc202a8d02d689148da2b2c4f6a4aab9a37141e6a559058207745868bae728a357ba8
*d0691f66d083e739ea8a7217a24cdb00a9529e0571ff625a83688624f63169e963d992b256a416
*b17d9a76b97dc761718ae746108a3c3c5869e078cce5cafd3fdd79e1e84d322b4809441481c187
*c085e1217d741c48c4ebc50f7713bc485ada963aaaa4e596d8cec7d40243f8b6f79232ca531950
*122dcd45f9262734dfd6a5dbbbcb3a7a02acef8a4a56e5a016e3bbc2e3dab28b14de15254c5145
*2314e84267cf14883680ff74540f7e3b5646165e3183af2ca0cd00fe5346f8f59ff0f3ed8c56e3
*e017393398567bc7fd97b568223f4c54fa630e46e84fb2bc6cc878c46e82ebbb829564ef8ecd71
*3bf85826bd3c1688bba298635116584dcac814429fcbe5b10ae25c8bb2bdcb631805a62cfe5e32
*97559accb710cbbe55adfe12a9ed0af55b8bf6b297f55766b948f2c49a33b28b36dc9b5ca1b9ae
*4b70e1b8c1edf6faaeb3dce17187afbdb583eb19eea9b0d12e8e7abdc5a24ec755767feacbb3bb
*9a018b904613342d792c76613680a81f7086207752f81b8430310c3abbad115485422632e63739
*81300affb2f52ad51aa0c122cf2d0141b06529b935c3309131c140c6e4a3dc85f958c5e823d59d
*bd6fd52aacd923ef62eb5418663181f5c35f048fbf01b680ae30864c64cc6f72e2f354d8da94ab
*543e20089d4a273240ebbc2263a2ea55c1c7b483ac70410a07b52b6a1bb66ba670416f549024b7
*661e2c291c5f7919535ed1249a75af6856bf5ca97ccb7199070b2b561188eb0d4d163bdf1b9a4b
*33c84b9c64c0dca27984dcef2516f480388f4978c6160ca200f62105f601e100df322bf9b4d365
*85f1609e0ded12f0000d20c59d436c768ae6f1653c9c25614e8e1180211dcf12c91c297fefcbd1
*d3fbc92fb5f6918a408b9c786ed80141675cbedc54bb994b522c2a0d3dbdb07c29d244039a159b
*4c31f66d9c346334d040f301dec983a679212f29314a524b2d3be96a4c3b5ebab1d5b41e9cb5f2
*c846fb022659450d970556407afe137fb2cc7503d2228d21a04da97aaa7e1d04409524a98f8596
*10bd50a092992e55e3f32996cd9e8576268516a020beda402cd72bac18ffaa7e59aa1cc55ddd50
*51c1dcfe433e41e4375cd4f902a241de0dd93928f81c75b22b2dfcf05b143e77342b8e126da356
*51e0e1aa0b64865fdcd4e0589a8c24f7cc3fd09b2b26a46f573c9b58c8d2d3c681dbc7912bd205
*c58a6b967bbe0003358afb6a24694cc4aa51395c1d2a0d6d610db9be83c04a88e1f0fb16cfe3bf
*8f13c0b72a7821313a83b18fa3f1bb0d8cc36f878b2ad7cb37bcbea1c69f57c831aa1290c4be7d
*5187ab2beab8fff2a608d73530984b27ae81c157958f6a6fcb96ce08a1cbd5ff1ff1143d5ff870
*206bbb060cf6aeca283ca55ddf8a3185550e086e68802b2fa4ad146522a9beaf66206e93ab3b4f
*5ddd72d148a25ade865344701784d279f9a3135ce217c3308e00300feeddf8392694437c0c8307
*e4f7ded2bc7daef034efffa37c7b336ec0e7efffaf6f3ed8daa8defff8f0f6fce76a9e6beeffff
*eece7492f6fd0fb1f7af37c2a54ed6eb6e841d9e846791b3373e212d99bc361e63d2e81c0f50a9
*933f74666924dad81874b20a0bd2278d62ad46a413506833c05be5f2504d9929df3c091e35bb34
*7e63799280b5411d10cbe98c15ae0072dfb6501a52585fd5a91da96c96e79fe8c8029d9557e79a
*0414c917c8a33a0cab7347d6e38e5e247be2ef8026eacbfe89969850c86e5beadedaa2273ef2c9
*a08fbb889213633b3e1cef321259611d0b5387cb06113442ac8efb44e9309c1633328610ac8a95
*b569e3310379104c9e38c0d31be6b450acbcd2beac5db37807cf184da321aea5c9e58a0ec4ea9b
*4996700e8b6949a5df559a4db557dbb059fb1cfb30cb7b6f32b4d3f01e505525ccdd67d3be7478
*3f41ed0cfca615acbc7322466a7691ca8e4e0303a706c2c4b743a10d3a13db49a3ac0a176c12a3
*1e578c25988b8edeb3c00f2bb76c806aee2906d7cb82d9c99f5e1e61339ae5557151cdeb3fdd2c
*79230cc082f5ff01acfd55ff0f1bebb7f77face471d6ffe51db92f58ff3d138eb9a874e17c44a6
*25949ecc7e9e9a0d2f9ead5e848581d61546d6a3d3333a9cd204f4b70ba38a5e3af30bb02f7976
*cbd297afcaf2acef59255ea70ff49b2e1f3ffc6630dfe03cfb4d9cabb7cec4cf3f127f43be0048
*ac472311766c397fd599b3ece8e35bcac9031a702b570f9cb4ab94015da92fd0271b0d4538472e
*990fa07e6c9b83b16c83a1e84438b33a69ca6009e385b8e29f88e80663555fa34186f71d87d43c
*00da5e9e0de429b3e7751198fd4f6ccbfe3e24e75fd6cf3208848ea3abcacb2200c6b956ed4d65
*d569c77cc612ff584babee0075aac1d1d9289311e599514f190c5547f0fce1398960c0cbd6f441
*f783f6c1554dadc1622bd701beffc5818483c28ba20bab7e9445c133470d6cb0185a85aa81d50e
*eb584de90727232444e9d0c29273768336c5b5bb6dcadceeec6a36508da11df9468ce05bd3f3ff
*62bdb36107f73f75a101bac7a7d97917d5face094e33283bb645910ef3d814719ca9147fdb1635
*1c32d069d15284ea53b162a996ae26a6b11701c99bbead7483624e39479d3b95e8750c36787ba1
*873fb500088743ad966858d46a990e8ffad6eadd37d6451ec63a8565c9f388a437e92904deb467
*0c36d546f7074c3905d9b957a6533a7d634fa9be098412b1e33d7d5167a771325d76625550f514
*5003bfdc6c3b1f4579f2defc9831a6f28ce9dad1dac8a4685913ab5f4dd6a6d9ce8d34dccb9c59
*8fb2f0ccd7692aacb9a44a3173a604ca20479a353d54ec9ec47896901996145e7aeef4216966a2
*889bbecd44629a75b2783ae9ca01d895e3a84b7b6bde61cec556f7e0ed294721d63cf1500a97bf
*34e1b5498842074edea0d68c90cd3f2d79f1d5dc13a1d98cb63d5d71af7e6f41e6f6b9d6d32cff
*c338b8a15b4017c9ffdb35f97ffbfed6edf9bf953cd7d2ff4b3fa937a9c1c43fa4e49fafe607a2
*e4344beaf9e76bfa97d7f52fd4f6cfd5f7abfa1da363b2a6e378c569364b48bb3f806ce4daaca2
*52bed333b06eaee57dca1a6400aea0ab79195e48dd07bc019b7081fa0ef8b14f0ac54a2d036f01
*fca724b1ad90810c6ff238cba1fd1ee30719529fd065afe7f7f0cc1efac9caca52df46666508ac
*7759b8fa54978e4dd0755eaa8ed72ba4ac12d1735cbdc4329b1ac44d71e65d56a45a9c535ad399
*a7e5d5e8357d46a30ea3e1f25c2fd335092f80cd8296f9096dd06d410cdb3f24deed8279277c01
*ae297494f1357689e0442e8344026a57c828e9b7423146548e9721c2188519c74886067d6d5d2c
*2cc03a905f2b43722f2f1d304ad4c2d4168bab242d0984f16a92b2745e47c472cb3102969bda11
*af284bbdcb4ee2cf518acee2b0ef6294a0a129ea7d47473977e897fb2e4ebf49dfc56953df91ff
*d80b6fdfc5e995faae5a86eabbd8272663eaba902c61305a8d5de764d55d17fb656337b5db7598
*454f36d8eed66404f29d89da71625e6574fc61ee4895695024227f8dbbcad162b82b695627e1e3
*29919c31b593456b7c1b9c2a98a8f1ae03a80ee465672e05757c5a296ba09b029b067cad31e68d
*fb9a1317cb1550636966e8ab78ff14a0737bc8c985ed221ec8544dd38307ae354de858e379c822
*23b3c80019d95464452ca0229a33ae4145b00ad649c8c6a782869a769620a1f9e4832f815392dd
*9b9e9a0bf40136998679f4d11fbd23f6ffba4ce60fc2f3ec889ffb94d91bbbb0e4c37eade4003b
*1a6be5cfccd103baf9cc4a32983bd49a9acb9e9f170db5d8ab63f60db5a6d2cc4c3d6fa859b9bd
*337765a8d94d3377a879e15ad37a75a87d6f41ec3b3dcdf2bf3a46fdf54a8005f2ffc6e6fdaaff
*9ffbf7b7b76ee5ff553c372b4b2e61a8a74fe7ff918cf55e928ff1b088412e4746352fca2c8329
*3189c99933aaa7efc8b9f30e9988dde1a9f68e727bf344cc7354b01299de711ee293eb85945ca7
*c94c593ffc1ae5995780b52f272056e422110fc447ccfab1d5c21f5af12dcb2ccbe780e0043bc6
*181fcba967e0e01d65cdffbd87ca7fc9a779fe3787e1bf76055864fffd70e36165fe7fb0b1b179
*3bffafe2f1ea7fd5453f5ed3afdfbf47b83fc612e35ef08382589285a8032968d0614bdb1ee1fa
*ca3a9c5d49f04d96d61d40295fb0d13e28d495979a272e32e5746040f5a15b30f47d66e45dae56
*3cd4b2440bbf6245d6ca96eb8d658d964d16cb1b086a63cdd77c8f534b685fe77a049a63e1ec73
*16f4f38ba7bd7d18552d7614637b30717d8f90f06c7d4b1be8a6336b52ea6bf288a2853e3b81d9
*a877fda2e80de6f99e511cf7324699e7bdae51898c14d988a572f66ca2eb1ef3bde015bd37831e
*9bf04a017c7ac0233d5aa9eac2a3e543caa71af4e67534845e004a20f66657f2b0154926e976b7
*9061fa95e7ffe6f5ff6958462720220fc3e42b1980c5eb7f55fe7bb0b9b571bbfeafe271d6ff9f
*f79ef5afb0e87fa7e5dd22ccdff70aef0a9137d94abe15d46e9625575099407b596408d606a965
*e6cff71670be9ff13da0bf746088de6a6e210bb4e3565845da296596e2191eb54d8a6a6269b15f
*5da6dfe451321b45e2341ed10417f43a5d3cf9b37825ae55c8a30dcfd83b28ac6219db2e169382
*d5e1747d5836f827b047f20efa301fc4307fe7c8774990ed1eafe25475b2f7db91efbfe916c185
*1b634277f15620d8c44eafdf1a9277f1e658e992933fc6d63acc21273a6180d7689f1883766374
*50d0493aba0c5d5545b280a9aa754f70dd5ea2172c918accd6b8b3256e4db2e7b4505759e4be5c
*f04abbcde9762e74679647d33c2a70dc9025a8bc9c5de1d362a290e500d889561cc89880c27105
*9c347045ba915552538518f5db2f5d0f5f2fc9c8b747bf0319ddcce8f8d82f8da9b7fbe2ea3628
*10b3cddad4af05b62e76f08256daf54cdfe770adf9bf79fd274bc7559cff7ab8b151bbff777dfb
*c1edfabf8ae7c6cf7fd7af0bee0accfa7aca82d477530a58ee857fd75cc39c8b7f3da663a87ac6
*fb1b6d3ff13472dbabe13ad8d7d015190ed736a987beb60df3b0c7d77bca1cfc15f00f0af7fca6
*d8073ccfb567eef6230087f198ee8264627001d1b13cf36a009a837904e39d74ce49d553206420
*8505f607b13176c057eb1d7caa854a83d5a2b8be5e17d78a0f48459bab8b2ee4817a4ee8387f99
*01faca593e3a750fe50dab4450c19327487fb870a6f2887f8a240f0c141eb27ff941aeeb779ccb
*87eff4c8afbd7418c08e81f89e4b86c5a2f748178587ef4771318411188d8c413f634b0a12f94a
*ec957c27c548d0a9e946c2cadaaca0789766191948e74541873b4f06db3c800c1a589942f1e449
*8d37082b87d1037220e4c58256f1b00ab0824aa8ae359b83808b32df8c564f5701dec2d9ffe8ed
*e1feb1b8839870e23bfa8a33ce8bf3b595d00cb93beafa1c138489856201d565abea4a5bba9c02
*466441174e0ce27424b51ca9bcd040deb09b31d3cd001d8f148c3b29d5888af620e41cbd96891c
*e7957056661398e28774416cc89e29d8592f9532cd8a0257a6968530d090d54fd02a764741276a
*0a240634a0433b2acc86139afd2ce224e5aca419707b7a680bae46286f7e5077276822aafadce6
*da1e947c57c234cf3ec723e91aa4e6ad5b8270af69af391bd6c7570932dd8f5ce09544ea6e900a
*66a1bc9da176ebeaa4f0de9a204739ed95e2a4012ba8b912b967dc3ed8ad42f2c38e1bf45b7566
*e5311f5ee3e40e8fccaeae94c37fbfacb8cc0bbd0ed0aad8d6dd61392902c71f1a8fd10a08e555
*d8094e6b805cf769e47c8da0556b80f5aa9c3c9a87b39e03277aa3d7b200a27d607f090b6ea29b
*57a69c5b9c24bdc69be9dc429dcea9d29ca75839fae231dd32aeae2ac155b22d2ddf72beaf7a77
*bc6bdf6482b7d0c074b10b12b6e10e9c5bd61906c8ade7e889bab25c5907d0ac006be1faba2368
*8b0899445399aa72f2b55a212f31d4bdf819a268f623f83399cd57cae5c0b9c59ea4d109fafd95
*b0d537971ba733db7b207e72a66236500a7519a9831ac56a17358b5ce7a1b7e0e6c400a9504a1d
*79b508276e6e2917e26e8fe885db20c0ef8ea3db088e5058692ac98d9cdfcda277575c9aa2f0ab
*52545329730ab835cef8833e73f67f8cffaa6fbaffb3b1b5be59d5ff3cd87c70ff56ffb38ac7d1
*fff86c382ada1b9f7a6779b74118ff3c9cc4c4977fa7dd2343d67f243d10b11763d97415d390b7
*25668a7dda20b513c3576a64e938c14b95280a7d05162cbaa3547f476eb7dce922c88a30df1577
*1c7dc21df4b717254544eb0addebaaafdfc3738ba482804feddc47dd4ce7da41127b60f708b91a
*92c688abd934b3a8a15187658c40ec1dae70140f998bd0ea273a8df7f2837c87ce90efacd7b2fc
*1d57b301e302ec68115959ad9c87d9095d0a52cd15a6ea86b62cd741ca131688c0d50d390f08e9
*c9d0fab2f56845b976189fd5d10542828a987c7832448188f18e1bfda1312c662ac554de21ce5f
*6956eeabdc95522521c8d637a5e7d1340a4bf341adaaae9c1b5e0e9368a9ed44ea2a6a31ae80c2
*ddaa1e3531b62e35275542e3af51b77090c52b143b555d9cad83beaab1d182bce433d0136eabff
*6c858ced1f13241a5db473b7649fc9324cdad2d5460fdd964e618d907bc2188bca8f6c4cdb7a34
*a5e03d48fae0b29e415a9ac4c90d8a2e4f0cbbcec8604e33c08605d69c5ca20c48e7223f828e05
*69ccf6341a4dbe72475ec7c33eb7b8e678330faa3fda3a2f096f1e3471e42d8321a1e341933024
*20f2566933b4afd9094a617bb51ef0a964d932dd9dc85b340cea35964274b53726766fa03a4ce6
*973d2175616e3754ba40ea8cbdcdefc590e6d1f918567b43a13991bdf15277074fd0d7ec0a762e
*fbf51dd192d32e55ca48ec56f56aed6eb5bace3d36ee42bd4deed42f5f69e59a6bd615b256ffcf
*ee3bae94531f659c2715a8e359ceb71e2bb4d8740030ba23dbe34e4b4fdc58bc5566a531df0f7e
*31cd091f56be1dbd222edd848ab56257c9ca43f25810c7d6fe29cb92760bc9ba46c0ba1d308d69
*0afca20c3ca292a4da1637841320712594200563945ecec5c81e48a845b6d01a9e4643e24d814d
*2ca20815739844529544731296c35322497d27f0144ae3451e93cfed5b467ccd6dcb4b3d3f11ee
*0b46ca152bc0aea896ae0024bf720520cfd82687eb57c01eefb389e5c512589b3a39bc8240895a
*c7500307500e1eaff0724d82b0d079c36c95859264b4ae8896ca45a849a055f49e62375a7dd806
*bcdaa8f01cf0be262164a1493d1a156e9f526fb79073f48ca34f2e82a67b4daf52ce1d6a929e08
*76763a55e4e84649bcd7507a83af158eda686042f1eac826d45b9249bd1e8a2af305e08905f588
*5116170bd7cf623628a252dbd8f1c1f182af18b7b1638ebb711eaada44350e93898264cde08edb
*c031d4e10bc4624d48a5cb0e6bf0f922e8a6f8f3b888cc5933b5ead4579b3697e4d0eef3382f2c
*ca45b1214cb2936c867beba2ad1ddbf65020c25af372b0ec24c067ad556f71f6a93425c792a15f
*54f535e227ca40c7206ed0d0020b5dd7ee1a38aa2d47b1370aa728c3d31a8f607f3c2dcbe9e37b
*f7c2d9c9ac288ba237803a16d3acec0db3c9bdcdf5f547f7d61fde4b3290df60f95a1be34ee35a
*3c5e8bd7688b766d63fdd15a9cf64ecb49f2a4a551a8700afa1a1abe8288b65d53ee6293e5625d
*5caef3bec9177cfb51acebae432932ca733c91493b09c8b227517a529ede31197676ac1cad3a15
*8cb9088a3144a408495e7e65082842af2c97942fb8b00c062e3a22b8141f3fcdb2f2a3d8ec5472
*5d221a1b90eba21261637252870820d7c446c7c0b5009c107abf3622e8016721287e6d44d1ca54
*4d7465749d24bf7696a35992ace7d12b8c12310ee384ae9f88f209aa75781b9c0c7ae5e28c4e9e
*f073a25c47125cff61551977815b5017455bfac6c037fcb6ab59b4971e7851587e835a30601a4b
*516dda8ca4f1ac4c74c1e8abdac0175a974030bcdfeee3fc377b9af77f2c9dc7b73dfff3f0feb6
*67ffe7f6fe87953cb7f6bfbfef7d1f67a347ede6d48d7ed1b0736a9981b5a5d1487b45c7776d05
*e90d19037b12480b578ed55adf40bf756d65b032119656411686413da86bccccacd04eb528321f
*76be9c228d11315b26eb88b9e6c00b34fb37670a5cbb3e43d9265a7a7e320b0672aa5a063bd4e5
*da07df6db60fb6d4eddfce46d8a8ff514962be7e73f706c8deaa6a2cec28f66d4b290ba8d748ca
*c4077413a8b2d535e1b6e5b0091db8794371b7623f5cc3c872c98d56c40d886943e22a70073b6d
*49bc10a15a5d8c49712db5534cd5a658a7d666c526bfc7b2d84a6e1917bb59fe10e6c50ee1597d
*4816c64e27421fdb242c3791f0d70aaec0ac5a1b9b99a66671ec8c5ccbee780f350669d56cf8a6
*2c8fab0bd2581e6fbf9621b283ea37364576c79f65906c47d866c976b8bcade1ea369df65264d5
*b6abdd0a38538449e04e5afe2a78e72feb126f4f2e7beef2440ffcad02d3c18f5f70f6b067d8c0
*c1763903eb3915b8e625cf552c96315f9e83856bc46c27ec316e7543d179cdd068ca5c45619e41
*b36bc7ec8e7a65cdec702acb18343b19a44db31be6aeb25f67d97ca55160290debdbf396c173b5
*cedee1502528d7e2d94f52dae2b95ebcb17b9e57ba317d26ff1e4d96cf7bf32c9ff796b37caea3
*e8da3fcf4353127b035d570da0eb25d5cca0e715a62da1a50df48f7f7ab2c00eda53b59a35f45c
*1a5006d1d214ba56e2fcc2e697f3bbd7a735eb7ff4eec4bdaf2d83953cf79bf43ff45e39ffbdbd
*bef56fe2fe4d5470d1f3df5cffb34cff1ffee3e1a3af51012ed0ff3dc03eafe8ffb6efdffaff59
*c9e3e8ff6cf3ecdf97cf1f4d8c3d24c6dfb702afe23bf66936416727643f1526e80ba73c9db032
*030d3bc241362b116492c5746c1db51ee908969ecb9e78878c1b0a3c97e82c0c80815c85a5a705
*2e40c6fb1fc9422a63298a6c960fa32e7afd9b847493cc009a04c59f8ca4a1c872ce5294f96c08
*62210895a66496bd8037946e5a7a205741bbb7995d1c9a1a114eaa529c6b940195145997b44358
*b73cfa348b73b5593e8a49f0c65d2f36169f6653be6f1d61b136934d6a30b512a92d1ba6509073
*1a624f67698296c2687c832072aa5d1e8da14bb17bc4e13fde910d2f2cf7f1f05440b78a71748e
*5c0f39528f0bbc853efa14e7d2406134233ca374988d648bd3edf45800f0e6302e30eb0c58d11c
*b223fc870f7be238463ee13cc23e4ddbd0fc40a7b2ba4078e4dc06210d004a994721dbdb1ffee3
*f8d846156a96a5c9a52e9bddcdd19dc408fd329b89610eadc138418f02a4b335dad865c774d435
*69548a0452f5c44d2b7d7d5a5f7754ce51fcba16f45d6cb74701fe21cf09f8a2d4a6a308aaaf54
*bcd416eec7fe2763463efdc0a93f38e9ea1132cf821b978f814c236c6abab6f853e5da621917c0
*5b37f8f2a4d36980b2f0bee425ae3dbeaa69385f32af3c3c5057e8218a6a2f6370d3950301ed88
*32d4b1444a89e618f018fd889104092caa43e8e537d56f28ecbdc72b77bb61e717d2ad9210f52c
*66c32d7b531d9a0e186b138d17cf7eea218a49541a774c86f336f63101976eb3ed841499c4e8c8
*1d797b26d4a49f9108ca51174587d565fdac4dc106870ba8a18cf0ef9df3859d51477bafa65a90
*e1a8ae35d90a48281f2012ef8678ff8bb690d831b158782182e0bc3bec3c3e77d10a2696d2e573
*470485f8f2045fce0b610c518c65c767d980713a8a2e00eab9959d44361048864a63c0f3e51a2a
*7f61ea8f51cdae4d47756fb3c13c0f1d6c0ed9e57c07b40adf714de9d0c81417105c9930fd9aa2
*3c2ca166e987aa86704ade6a51b84f92cbae5c1e78d741773dcc8678ff205053aab0d17750c87b
*a9193b9540d2654f4e136d731da9d810eb0a4edb01a4ee50874e44bb237933acf5a36ec0563dad
*a17c807f53f17ef80b94fb3e98426f9ab811f425c01d3e1e52ff0ec3222264922c3b43a500a686
*44199f4fa0eb3da04590c86c006d3164815fdd1e8206ee98f5b14a86d309743eea4a25d0b11821
*d9cc8643944dd711828df007244aba53fa7a5d97e01cb54ccfed7fd21db7ffc973b1b8d3731057
*e9bbfd4f6dc4d4ea360cb1c104b243baf0c3e36fa97e4330cd3d87b1bebe23c39d253b4fc358d4
*7d98300828a43bee3c6ee8378570b5e7fe3a8b87676c278aab1d50c0e563b972ea5664a773f5c5
*d03794c8d8d393948c8324dc408775d0280c27cea571a13ef662e3a58f0674209507210a55287d
*6f69ea8ff72c23ff1f1dee7f9505d022f9ffe1fd9afcbff5f0f6fed7953c5795ff1b8f835b3643
*5503a0efae330002be5519ac5c6570344ba5e5b52350e33d04a30c2f25c08de22443fc672989f6
*f10832d251e7389dcecaa2b702cb25974a969660217100ff497e855f25be429d03f8bfac344be2
*de95e5599deb4625da6ef0e3974ef76f71747e18f47afc76446fc1931f3bddcff099d0dfdc75c1
*acac7996125babd272ed14beed016049f3259620918894074cbcc2026895898f7d192331a2f4ca
*bf38ebbd7df566efe97f92c3ba7f073ed1e38a1fd3d67df033043c9e4009d82cc7be2c4f5d22e0
*6667258d4161c3186a58bcf615c573f66205355fb3071adeee81adab6577205069cb806fbf499a
*951651844ec52c4ab5005917a88f80c074ea4dc2607bfc296fe5eba0ff692ac6062b4985e15ae2
*bd44b041bed7b19680afcebf59e77d900054a195531b1865779c928ff1da454983fa74c947ec4c
*2304bb38ab969c2b13a7211f3a1997387bf28ac31d932b8986f43d75ce17c103ab1fdaa988f5e7
*083b38081f8724a46054a0a8ebe320825915ea10a25b30feb0cbe136b044240af8a5950bf36818
*960ec3e832dee7907ad734a64e1d0c1e0f0021d43500333ee0d49c2c487fd8b0520e8a560db0f5
*b8274a72581fb9760307c2d74b420d7dd0207d50eac502d1eb341229f00f1a1d5e17ab4314576d
*d446c7d2cc49dfcf439abb194e1f13e9b3034dcdd0e43749b273db1f9f425b993a201da072ca6f
*ef23637bc6c40143124b6784df78c497a6788a89f213686b9af821c61d51410222b9a2a74947a7
*26c21888543cfe51e4edea9127431a8a7011ce17052798fc90763ae2892faba1099535a18426dd
*3e56ed4863f241a6cb75820f3a8e921eca0489a751ad1ba8bded2a6d2278de73d5983d26574a46
*076b248c5c6b14548b4a2d827a9c96731a4bce0c813d9a7efc526ba4e661e402d8a07804205c00
*b2593c8f02a09cc7caf9469a9592a5265532e9d032a3ab898454a9a6211cacacaf9a8624065cd9
*ab56331186a6a8b29e6a1e5dad9a962272fe39daa1028234a3cf6cea99482d147ec5cc12a0afa1
*abe132fdfa9166f95f0e81afb6feb896fd07f9ffbfb5fff8f6cfe2fe4753a6af3b00b640ffb3b9
*b1b95dd3ff6c6cdfea7f56f1acd2ffdf77d2034942ee2121ffbed540cd47bf6eb2c97c5a10a78d
*b0c24b9cdfc2b43224b0debbd2ee437efaaf425874c0e939b05351decf2325531d5826cfbbc3dd
*b53b32d79d2e5b374f306a17cd5e2d547013d74aca0701fa785e4332db741326c8689f508c0046
*bb8812bcf529143a0f29a966ca8ca36df0920716da9328441f1d6dfb2481c100d66c3466b5437e
*136e03e1ba3f74c5ef39d701796a0825d41853fae9554b9a5fc44bae09eed6fb4ab1850a4ad854
*cced2ecc1fe859bcfee3ad9bdf76fd7fb0bd513fff7d7bfff34a9e25d6ff3fec828f947bbbe0cf
*5ff0a98d965cf031ad1b12a79fc3241e69205d3ae6ab3fafbaeabfcb723cc5067f1f29c3a537e6
*c4e1241a9e86695c4c684dc68da8b7fde78fcc1140d4b546044ca225203d6e5aa1112544d20587
*395433b71ca7b48648bdee25c57c81a0a9acb3c0aa0ae2b24dbfec5bc589da91a76430d06a22b2
*95a3da499bb16a3c7b6229eb967081834dd745ae4dabb713164cba186cdd79689532404d41e086
*742b296ad73a37165efd6ec2a64b51d7c7e80631ac05ccc3b9cbf13787f8bc8ad818bcc78f5fbe
*353335c7ffcb6814e339a7af57005d43ffb3b97eabff59c9b344ff1fcf4ebe8e035cc0ff6d6c3d
*a8ddff0d0ce02dffb78ae766398d65fcf048b2ea1159fdbed9b38a59cef125a41b96f15014887b
*d3dd9bcc8cd8172e14f36f5ca85d8e50bbf9fa874ea77e7b425383aec2dd8f53e69c831f2aa1e4
*0ea1220b19439d655e63c092398e2f12f140fc205a2d08f27bf093cc19c66b7f19b7ea09fb699e
*ff5ddf0c5fc3055c7dfd7fb07d7ffd76fd5fc5b374ff7f0517b068fdbfff60d3edff4dbc14fc76
*fd5fc573b36bc512ebbf4b56ff55b9808a6fa489ef1aa61be00abac1dd399c414353af803ff096
*bc9049b0d2757de95ca88aa5b8bb3c4b210b58d8548dacc75d8bf57828ee02e77197390fd78f51
*8e1c086986f80f25db612f45bf33f6a379fe3f8c2ed014fb3bd97f6cddcaff2b7916f73f2a2cbf
*ee06c8f9ebffc6e68687ffbbddff59cd734dffbff53da1791e81317f924409dad0e2d9966ee5a4
*d1ebcf519e64e1281a1d97e83901827c5b51df693b490e04da9df843dd1949fb499ed655ee84f1
*e8c4640a2947d1840f862b97f5657616a5f1aff2c8b6753e81dc438ea01be314ef91c416117cc8
*68740f4ff340850a7d6018a3d7a661ce5e081ccd48381cce26e4f6a310e849230e1382036b6b96
*4f180f3ee6c465a00f0fb2f318cce204be67533cd28e580af6a9b1223fc70e2d2cf6746cb6d7d6
*f06e43a620693d63bde7b3d4fe7c9b16d370188d020857efea441135c77360160dd4436c74e558
*c37a87dcf6e7db147b4702a55705937a4dc3f432524c394e106d5f0471718cf8752ade2ee8c292
*09fef4331cf59d395b80dc48cb9c1e5ae8c8d8da3f69e3cd7b6981e4447e3f81e8c8650a99f160
*baf622c2ee8a71148de418903934f0281c9e52c391d7e3599ef23123a60b34f9797a3a4bcff090
*3e36c5a462c1fc451c4727e4f6452710ef27bf54921bcf89da65a2da16ddb78ee3f1ed44233952
*b420d1265cacfb94149521c3aaf0c42320935f4c54c0684f585fa6bb0f6f5fd14914ea09e4cfab
*0913f1c30f108e7facd0dcdae3b2b574da7129a3e33db9203132071738c03ebac021b969753b52
*5aa0d573e97ab4b122e44d43f6899d2a69a381150f62a7e6f5f2db160c4c12d86994b17e130c1b
*9b761556506b510736e288f1f093b7ada6aeef6a3b21be66278bae21fa18e5818d571399862187
*0701a7e974f08090d52f9ab6ede33bb243dc8c9e93668c4afdb49d458f12948c916344a553284e
*c4a4e02d7183b5ce615e0bebbdddbc95dca95a02f89accdece252bfc4a73b9f14eb3cdebaa8382
*275d6f9938ca65f44ef5a6c41b9b05695db8da2c68ce1cd2d2433321bf995a78a6b52e4f04ca21
*6ce70a342ccba9d170fbffa46d5df89fbc248c496a542c0780c9b9888217518c07c11ac53460f9
*d594e329bb99727c6b0a3374664d2180ee9ac265a0bb20d9e3664d913dcf3f173826f52a72b12c
*b9e259de69219015445fe0daa447a338b8141fe564f551539f629b8800f5c76fc2e2a810657452
*3ccf413157f32ae4680a5e38ab2e9a3a352845750d86223573a506245c4b239da6e75871d56766
*9db03e39eb28ea5b83ef18023c07a23d90f88095c96b5751397df6e553ee0876ec1e5d7250f85b
*e72b66548b4481fe68c8588448acb6a4437e9764c81fdf880a65a94dd3a26fc25399ae416e9ed2
*aad4c64916131ba7f3d11ac7485293a836525a158c21348a69a0b36aae0a9955b3cea7324fa334
*13d9db928578ba27812ea6c874e9ccd84ba95a09ce78293d20128fa2358c673797b314c0aca590
*9102d5be434b4b8d73aefcc54ab0659ceb3abc1292d64232735323dfa81c4cba6937ebfc62155b
*1085bd0f2eba16e95f767fc5f3e217e2c735510cc334d16ed70b91141013500a88cd0bf18bd58c
*415274f3820ff2ff1a4f45608413e31a00ed3f3b9d259ad7515a789a17e36bcd4b4c8f6a5e2d40
*afb6794db1dfbe79e5525e6bdeefadbfbc7dbeee59acff3f26cf406fb222c681739d8d8005faff
*f5daf98fcdf5ad07b7fbff2b79aea9ffafe994bfb36ede25d2ff4a4afa8374c8dea9c913c828e2
*4b6123916443e903886ed566ff5d780f345e179e67b393534a92d82a758447c71f43722642a60b
*c6c5501eb1ef11bd0b406bdc7f48e53be9da75a1e4abfb940b93a502d841846b28b908450b89cf
*11603c9b8ed0b9378a69c62f765cf0794abacf3c322da54e166669e5b0a53286e84369f2865df4
*16169203958c0e682aa8e4989bfc842b6871151a3a1f2387da213509e636cab412afb98ae4cd5a
*6d9c1dcad7e3e7315e8f43f61aa6c2a66157e1a8ac81d497df82e80ae45cfae1407e7900a9405c
*ed9d80a759329ba83445354de14963da4d85803ce329b2badd50b5b98029a9d3a4ff278d45b168
*77e026761eec4d90160976a6a1804f42ff615628b7840cd742a4da0003da545b5ef5edaee661dd
*b38e2fa39bbd2cb99c64f9f4341eaa8b17cff0627874a3674145323f47077f40d613399d290782
*a8bc730aa02d0cb78f98d4b592620726b382c3aa3ed4ac06f977a71900edff8b8ec9c341010125
*39f567d8544535799ca5d93970bf7c791cfa35cb9902fe83a6a1510cd31319d7a0dba441841b7f
*f04723f645aa9f96c64a0846ec5dd406a00501c42bb58721141c9e44ea32c09e5504676d2ac400
*368f550479f7a772cc0c8555b30b80c1391f78531da055f0dab61438f65398ae133cd60eb0509b
*1b019de1c4d5abec29916a81940cfb9f9498f4949d4f1135294a545731e0e481c33a1de1228ade
*a2090710e64f522eae25e71794828c43661d4af78e8b1f44f048ac89e0620d5d82c1bcf5513cf2
*6d0854c8b0a21000fc891045025288a4cae004ddce418049f641291f6532fde12451dd4a49f487
*9384f1bfc404f2d5a375684499950f63357ac4067affabd6f81f519ecda9f5af18bd5357ffcadc
*6f92593127f734a1ebc4eab79819858567dc2fa3ba303bf9be59adb6edb7a818b3ed27fb619d8f
*51aadefe60add44ae13cd20d1b24405fb8c5e0e419da5b7512acc993a0b7831f84dc0df7e5913d
*6ea63fcca3a89a325f74e0cf25435034d684a994a41d4c355d3660aae26d4c7d796c4c759e464c
*35a97b4bb5fac02ed697c9142bc7872a8a358c18f2816e45f0b5884675221bc3406b408b130497
*06295f160a6b8bcbb695453705e6bd68535bc87dd90f7ace362060a1320b1f7c34a9fe1611757d
*430a67002ba66c4b1cd7e19f89f8c025abcab3cbd08374447e2a59f77c0e6be7499a1197eb3bf4
*ac8f49a31d0e1eb7f6a974bdf8131abc2ce045831e5ec5953ae4cdb1c4f891c18f0bb42d4f6d03
*ce98bc653188ec8814efd6a8a0e124da917ef51825a5bc6be6a4b0e6c3599ea368c36b5557d075
*39925b02762492171620eb014be649a4d63aab5e2d9bb9454cab4822e26cb6e1b0ca4e365aac70
*08d012439b7bc34a0aa68b3929d09fa1bc4de05a6d406c543a9b0ca0c3e3b17559b1e19096a81d
*71fd5616593398ee34de891ddf8c357b9296ec0423aeae0ed69ca2ec07c530b6ea32840767b94a
*213d31c3eec985237bc72392b495cfbf3b6b77dc89c01ecfde7c0e3f32467b8c3b8fefe00fa666
*bb183b60d808e903295e477435d4373fadb658ff87b3c7d719815fc3fefbfe83ed5bfbef553c4b
*f6ff33722cf94dce7f6d6e6e3dacf6ffc3eddbf35fab79aea5fffdceca5ea4c89ea4c83f9caa57
*e975892953eeda81db2387ad16ef263dd411db3612830cafdfce72ac152b6407e1f08cbeba08ad
*a02b08e592cada0552ef488b2df47897e00586972002e667d1a8c77a24ad93b2ecb1fd66d8c449
*18ecf2485ef300b821362c102a67d6aec6595ffd655b51a89be800897f22d3105a5665aea93832
*67681908af845a49fa2c626e4799e24453d1b60c0bdaa8160905196640d1d018640cfba8adae91
*2c15b45186173622ba909ef967ea185d55a578de2b58c1ccf325774b41c90a4489ea808672982c
*9a88d9545df5c82c38aee7b9be92c36a889ed8d70a78f418bf56666b4ccbd4acf88641ec4c5edd
*2ecd578150bfa3021daf53283269582f92f0d74bd1fee9b28c98fd695748492bfc811806970465
*88266ea4ba2f998d9717285078d195f4560e4fd5259e1626740301d21a02920ee78b32b6122363
*8ddd7512a171936ad09fa261a8d5f629b71cdd076a3951c07281439a2523a98d637817c83e16e1
*04757405cc4f082e8f4e60302451411789c89182ca443d4e843c8940779c0c4fb3ac20acb85958
*3bd7e2eb49b294ee20214290378c4e32e8df173c15d8f254a1e8f83c8688411217c57896485030
*a8a229b4689200728908cd8df67ced89f2042faf35353427f46e076e690ccb19edfd8ce30bf283
*35cd4abc260520b2ef2ac85c44c0e5e39c03e5237dc7529959c08407d358563c96107f3c2dcbe9
*e37bf7a679761e0d46200f25d914a7af41929df486d9e41ede0a07dff706f1c91af6ed69384bd6
*fe197e0ed766e578edd11a917c543e91005ffdf4583c9b45d8907ced01f6a9d46d16a475466eff
*8ca9268ce96257525302771b1768bf672cfa101e0fb2f0127af9341e404fedbe0ed2ffbbd9d905
*d2380d3fc7d0a3ea4489e9d9909a936ea1e3315ca8db4d10246313e6275afc8190c165a9e601bc
*52075a329e480294f2a1c6b63619dce4b23777abc75ee8ae72d8a44b246a8e81e82f5b8871b636
*7ec21b6e83e21404fdc36ed0fb33defad2fbd2eb74e6f8675b782a63d1c64b7d7b537a2a3763f0
*e8f953e00aff82f5597b44f3262f40941708f291bd28d1fd48258fd56d3b02c90377a9505b8253
*0d8f769852703304164c903451f2dc92e2ff84b6226122a3b90d02e25c5d6484e311d772a614bd
*1b8b5b85531867794cc52411b426ee76466a41c499b8c01a41b992bef82ece1936196fbcbc00b9
*efc5bada0df8225e6c7ed8a8ed0650e30b2bd156532227cd6603a05ad2ed25c06d5f05dcd6dca4
*2a07ed279305177054eae2da8651d865d6661095e7b89bb27ef1689d568af58bc1584f21d85139
*cc1f395e342d3b0f17363cf0168f910d3a5345f04c0ef3d40cd92379eb86060433e500bafc1277
*93d3022988b65a7856429c515383d71d0023486c0f4e3bb28bc721eb97808c2edd9bae987120e2
*c0ab25052d321beb17f4f056621f2dbad85b2035cf313b3f2ea489b872258034ccab82bc29dbdb
*62880d2f961845c30cab4f8b042e58d668e9aac376869584e1884bb749448b935d3a4df67a5a9d
*d33f44e9b480a245ec314099887f7fe19c8efa02817daaf2389915a764f64d4a237b48d3d6e129
*6e61e194969a1d2ab39cc405f2767e3408f20be5c3d1316d7dc1be19658ae0c57ac76cbbe8401c
*9a64896a9bb9bebff8c5a4d85a22c5a6da5372d3742fad54db0be16c2f09678b54e4bffad2757f
*fdc56e70ab11899a184adfdb5c8e434b99ce29a0d5c2eb41e6b4354f0478412a193952185388b9
*7599bf25a417eb6228ce94d7cd2ff0f12377ef0e843ad7280f36501d2727559570e849e834c8f0
*975a9e88f34c64d70f3b4eecd8c46e7962efebd86d3bd6b6f55f021daebb2a5f8c10a48434124f
*76b805fefc67f868aae46013301a5975bb26065b160662210a1349ea43b559f315e5ca0a44cb95
*ec567e0bf3e24dde57af7e77e422b27de506d8be6603d44bbe5a134ce4c8e7aa5fbdf46e542d5f
*37e3f83a9db0cdb971a3fe3addd08dba6346a83501614c9d647de44c23687340b1ec7b1f37aef7
*81f1c74d49606c715669b58674e36064592a38d9557448e742992d868f070278620b604e00d72f
*b6c678d9da86778ad370279862e84e57da63700f981382f927039e77082a0d54191f50ece6fc62
*edf28976002081f8203f2d2c028944a0ea1fc8765cbfd8801e1b998b98e62105340b686d2d8996
*8d9fa42d83a10a988b631dd975421688d43a763d1f63a0731068803caf88b48dbda66d83bf095a
*ae069eaa3c94558121e31c225f541f1828ad96ee68ef40a1aba42ab400838446f270134732902a
*7e8cc63cacdd31be43ac544797b2e52fc55b9ce9582870678757585346e896811f915d7aa44b17
*5fbe08877ba447d522dab06a11cda9c59c1274fdb617d4cf5b519b025455c77655ffb22c22f831
*b663c67623b4dc8a8fed8a8fb7ae53f1a5caabb63ad76fbba9bc47d72b0fe7ebb4f0f39fbad5fb
*c44256b9c760520de85702246bc9250cc5b010a700b9ac3a6cb0666d9ca5692ef72e540580f067
*a615b184667a3c2c6a0e212c3e93c4c96151bd38cf7ede13c37d0a88303fd89830183d1e15928f
*fe93e4009bf01e35e03dbe3a525b73917a3fb253124ef32a103d8eac2aa8a9a3a112515325ee5f
*b912db4b5742b2659e9948278615c64aae2a31bfdae3c763abe2662a69a8fab856757b89309683
*569685129d939aefdacde9181819c83bc739e18bb5f41d5d165db7d92cf9f5cd080d3b66f8f27b
*2873a3b4570063f8a1d242c82cfea936f0388f9692a0373f88a995676a864c25a91c29aa2006bf
*70c028205bf3cadb72ca5349474e5a9d94874325b11e058c9e446ef1503060a4dce020d858a64c
*1c7c5599dbf39a64db6992ed794db25d414f27c621a593ebc412c16a726b409d9189cdd9b263ca
*009ad3867a06a8a75e124bd3e65f89a596d02c3ce794ab9307d72a77ce217165f2ab165b8f956f
*1f6fb5c690be6b504abc689fec488d91a793e4587ad0412522274b2c473d14e9261fb2631dca90
*b8622637c6109300be52656645a35f1d36d7da0d8ec98eef43c7c196eee82e1a8aee23dc1dbb10
*90722999dd24f89c21863efcda2cf33637b5fa606ec8d3e2da03c5d066b12cbea44fe264e3ea61
*69de00f7f7bf746c1702c7021def9c8a8f98ea2324d16383b39d72aeb22335567d51527c35fd3c
*ec8212fb1855428d6be622ac4bb330615255ec4764fda89b0a89b5c50b526565361c22099e87e6
*0640cd70df07e91833627b3890ce36c4d9a638dbaaf6f98638e54e877202497b1062f57e479c9a
*e49b8a4630f9a439dd9628395d89eead4ee5965fcddf02124addd90276e88538ed300076b32061
*e81311d89cd831a5cfff820bd69c7f20b4c744cc725fd2cb1dc80d02f6deaf12aa22a592b93411
*92feec48bb5dac77d5beb7e7d6e5e3b1fffb39cf66d31b70fbab9fabdb7f6e6d6ddeda7faee469
*ecffafbef5c73cf3ed3fd7371edc7f50e9ffed87f76fed3f57f2dcac35cb3c234e22abff8afefe
*4fb06237eddb7fad43b7e5e099ed93b08cba50f880ce4d78dcfdbb2dfb2d8fa25b252d71e94fa3
*3f7f0223c3a1a6fa743ad6549d1697d5f59e115fd2b73f1733af85eb8d6bbcfb43d5210db22704
*479c206342c74af80fc5025b1fa7b302ef7e4648ded42a6e479cc82ab6547973a0eb24904d37c6
*cd8fffc6f9ff296d45d09def5fbb0a2c98ff37ef3fdcacfa7fdfd8bebdff6d25cfcd4e168be77f
*8bacfe50ab003b108ba3a23effffec99ff979bfe0fd0d476c457d0a3e129cd54f0f9691626f138
*8e46b575c2df92e8f684a791208ff81a92e85bdf235cefcefa7a60cff31ab1a5bc7e58d5a8cfe8
*64f87e0a6d8be6de09f99549a294dbf9304a53b45adb9b9dc0c82e8a2c6da3af8ca27c4cb6c0d2
*fc3994b13d347b2ea65949a6cf406c8feead3fbc9740f2b5301dad8db319fc8dc76bf1da791e97
*d1dac6faa3b538ed9d9613229970144e4bee3e66029435385adc4fd134b4e425060da381deb214
*a8ad68e9cab1bb38eab84997a8e1041ddba47c1d2dc9bf29abe14d968b7571b9aecc2ee0ed4741
*860422908b0b24e8e041677abf5cef9894b837271cd78faeb264ccb029c6d5518cc972ac62a447
*67692fb9ec0b4bc4bee8e0f1ea8f9f6659f9516c762ab92e118d0dc8755189b03139a94304906b
*023d4628b8168013366c6b44d003ce4250fcda88a295a99ae8cae83a497e0546e37bcffcfc78d6
*ff2318813729fe5f47fedfd87c782bffafe269ea7f5ec15722ff6f6d6c54efffdd7eb87ecbffad
*e4b9fef9cf9be52de6718e48903d8ef87df38c738e7b1ee2d93eeb4c9fe493e4f93979e951114d
*62f98a298f233c5b82fea82088dc7ff533117ec63d353c6e92018f18993b7b86dc3778b2335207
*daf2e8d32c56a7504a5ad3e9941e395920c1190f78425113eb023b04375580d9694724dad809ed
*6fcc535a1ded532f60b4e426b13925454835c2dd9ed2231c6103bb91bdbb2ad20af76a158ee411
*4d19a6397147e75061bd3954bab7d8c595fe2e9ae3dfed91fd297e013b70972c4f775b7c662f90
*7ba379b776776057df90426ca0a9a9c0cd11cb4b2fd41819c8dcdc746cb96cd9c51dc4de5d6446
*ee1213445f0ab5aba361356a158f1edf8138d1f71d4e9ca6a07af71809fa64c46c2cdc3a76ab85
*7578335997dde223ca9efb642c4007741908a12962d517b2ff0c373d81b84668361a3638c23fbe
*32381b92eea925aa119d44f90d57c501f9d5d56168bf1386f6f6b9d2d3c4ffa10d6b145ecbdd73
*ed59a4ff7bf0a0caffdd5fbfddff59cdf387f0ff417c81a4c83f2c07b827640d242fc59c5f1b03
*db3df491158973f42ea07835d196ea82361f4b8e0b6213454c8ad3e2720255cde3a118c5636003
*e9b43b72726956e20d4eff54171dd0c952f4023ba10643fc87650f39c993a8348e30308574b580
*27f8f17ffb750e659356ed8ee906644a7b1083ffa3fc0eba6ae63a90162c92a8fff9cfed7bed2f
*5fda6b83107d4e90ab8d18bd4a0c66c85eac25615942e788368253ace54d92539daf54f43397af
*c444f819a8972ed6497dccb969faa87a3da27be0bda52f8451b060bdd5afbfd985202f85efe25f
*73ee84b13da6ca4559e7f798d9e9b8e76152709c0e0a2dbd940e1cd8998220c46316830e1a6521
*7dc137bc0d9c6bb0588de941e2446f7fe9c81e41e9d9b5b6ebe372a21e9059ea80ebe7b37a9de8
*b2edc61ac90a58a522cf85c4f80a042e4aa331333e1f71042d48a3e8d99bdd0eaebb92a44ef7d4
*964cf70cf237cb6735adff34cc6f44fbb3d8fe63736bbbaaffd97ab07ebbfeafe2b9d95977e122
*8e64f5475dc1bff90a458de35f9e78d9c579472e546a9e99bf2259d95aca0dbd5e71c99f446a84
*3b74df806ec6daee04cc6e98b44f2696195be48bbe4d936cdb2ced4a9fd5467fd3ed9e92efeb13
*67d8ad4fb821c9f97a020d6f05ca153c4df33f5e2bf56a36598dfcb7519dff6fe5bf553d8be43f
*15844e9ea28bb2f94620be3223897f8d46af98d57da6b8d7ef212d4afafda3ae3530519fe7c895
*4b97d989b23c41390de763725856906f1c7b026f439d79629752266d1bbc3bcdd88d6257c100b0
*288c006329c542dc2b1f44a284ba18277fb3f2f4df57b1f0c9ce5aa0f397a902f94b92997cbf09
*c14c211102afadde7fb3ca40b92cac0a6524901102869f9740ccf9270dd97b040a056ca54465e3
*0b75ba72072d407d80a5ad8f1f2eda236256695769c42fcbbed287ac2b75f981b3e06563cc6eec
*890fc042eff24d22f272250173c36c427e498ba82b8041c09836f00fdaab16f9c444d501126511
*25630f6a354ec142ce93bcce6dcc4faf398e45602b491a1a528973aa85fc2d29853aab29bf8f45
*48a3fc7773e6ff0be5bfadaddafeff7d487ebbfeafe0b9d9a97db1fcf75fcffc9faf3ffc46d6ff
*30a12e7504c069dc6f2fa82e3800e0ae258dc7003c82ed3c4b7f2fd43912eff71e5a7f8867befd
*d7cd9801e27c7835fbbfedadfbb7e7ff56f22ce8ffbd5999a127f7e133b9cb54c6e195af015eb0
*fe6f6d6c56ceff6d6e3c78b875bbfeafe2b9fefe6f83e156af89649aa4bb9e63aaf56ca9e301b8
*2ce2fa880ba55a15bbbc4c763c4b827fa590e5ce930dc95bed33323adae15f4b1cb38da76c5329
*25f63d63db258fc8f74cbd5ab6f8cfc4857352fd99b81429a50d2ee8ca36b49bfa41a41d1703d7
*46aa22c3d53060f9ed19fde2858276c972c3cc2997ccb4d8882bc5fbead870cbc68045d1bc2b6c
*fb2d79a4a163c9aa3554945c1a50f11d2e519f61e8987729dcabf641f1b682a50ae436525fa993
*4f9fa1abe6b522647e2bc46ded9a1cea54bbe31755b9e21694ba785a07e311616b70b4d85acf6e
*245a4fe9d51c6e7739d9ac7c43f1518e8a8f98ddfe9419a5d83bf4f4b5743e424dceef1dfd221d
*6848d719dc5b9450872131e80f971a94ff10d599f29bfb517db45abf01174be73ac5ba78f263ab
*153cf9914c16adf182b7a7623582d0f246b5f74cd027fe76d48bfa6d05630026c6ed8e087729e9
*ba08db9290c7f00558846d1842e3366a0b782ed97b461e68e827e07bd5306bdee9f82616673aa1
*64bed9e43fed69648f5be6077c59620271bab5da8fd51275370ed5361039b6d9b37a7588761cff
*ba65bdff30cfbcfdff9b3a04740dfe7ffdd6ffc76a9eb9fddfcfb3295d44f2757ac005fcfff6fd
*079ef3dfb7fabf953cbf9ff33f5277b8c87aa4a78892d32ea9479caf495c5e97b8509b38579fb8
*221b12d3448d1a3a25e1cc51ca511c54e7ae50e088af2475a7cc17d32d4e92f3e8ea74817ae99e
*44a57af76fd135dd1dd42c94e1c5f5f4d2257e44c95e5db56bd655cedafcaa411fe4d7402d4ab2
*5455929e4052eac4c7a6094213bc6342dd1b6efba7b661abd80dda2092b4bbed1fda9d5db68fd9
*6d0367185dc8d3ffa42c6e2bb8eddd1e5bd7bcc37b4d76c35d0124086c276e2169c68db2d887b8
*48ff9c47055af7162243db5cbaf525d5d7e13050106cd202efa98172e58dcda5aa853a7ed61307
*25ed21d3eedd8861af6308aab193282c4a1125746b1303c52b6294525be83bc64e61e108f3e129
*88a2c55a36837a9751d11be7f746d9b0b8b7be7e6f63e3ded6c37b0fff72efcdb3e766ad998ec6
*4fccaeac6978bbbd695f567f21274facb47f7bb66a2f8bdd4dbc3ebe04a6009bd5adf62cf9f69b
*4cc33cfae889db11fb7f5d98adeabf969e1df133bb10acc7ce2ff0b0ef1618d0d5cb50074f368e
*1ba068125af1035f9b2869c3df2c5ae67046bed9af063af7015543376c822b774375648f6e929e
*074a0a4f00653990f361c5e91bbabd0beab63444b65fb6b25a4528f78a3a6dddc5a25d86053490
*f161c7e356d1038e5d2bce6bbac61d7e7f2d5945c460ffe4314ea811a3521c290aae1087874265
*061f7d72b92084ff80d6d97260d432e8715029cf126ca993bb42eebb7b353356fde765f4e86296
*cc69d4307686efcdf1b9cf5cfe1f6b7c0336000bf8fffba8ecafd8ff6ddeda7fafe641fefff59b
*fec1eb57c71f7e7ef154ac8dd36c0df8e7742dcba7a778e31df2fad79212bae22db037c37814da
*89bf8b35a0d914fe43981e201baa9a0b4f62399681cf2298ed2022a97a14281c7701629f6e1d44
*bbed70f406cdb1a545214c5239fa35220746c6ae5b9d742fc488af73455ecf3ab38528029f173c
*79b2d39146de1369e52d0d25a248b37ec32c3d0f2f7bf9ac8485a3e8c13a7befff0d8705d0d3bd
*f3f82cbe876e97eea157a6e21e7aac7e45d7b2161bf79eaccaccde581c2c61c060f91cb0d701db
*dd402dbc49d0a1eee8214b8afb4b352f039564ef8e7b87789d33080087f0b14cfa63beba19721c
*638e45598ef1f65353087d2e97c72a88732dcaf60e5d68e5a62cfe5e3297559accb7d844c449f1
*1c7a26cafb79e4ddf1431b3dbe2edb177b4c7689f570b679c60b5cebb5a074c7ea1e62c43bfae4
*c0d07101bc7534843e8885bd377825e9b0079ca5f6a520792210c751030f5f7751dffe830806f4
*663c3ab85cdec4e7c7c1e166a43f0573e9ba9610f362ded9b7490373848de5ec392d9fd5f402ed
*3e71c5b1a650c91fb0bab2e203aa7878a58ad7f8bfe5eaedc9e665266bb55e3663bdce6815ced3
*765b0bfc85bd3b0402f82c0712fbbcb89281217b4cded155768143607db9a049de5a21b4ce613a
*0576368f7173b6765648c14490682ad786e150bedc14fa2c33dba657116de355f476e1b4bab9cb
*4ffdc8abbf49df4f7e5936a99422279ee3b48dfdfca9b2330a9d178513811effb536aa51e6e081
*dd87d433317185bc40d7deead6b401ceb19a83e16f9fcaae1a062c0febf00661f1c2d617d15250
*ce17d7139734f8df17b9385f12b7c5500fbf0954b930c915ab0f906f08db06b837c2ffcf95fff0
*98ff0d98802f90ff1e6e6cd6e4bf8df587b7f2df2a9e559dffba216e7e39490fe8765941af8bec
*669888fd2489330e7be417feb630d823fb4567086cf76412c609ba915d42ec23576eb33cad1ebf
*658f1b522d6fed2048712bbc906771713be1c6c4a42609091bb12e20b9db435d415e4002fa8bbb
*3df4a27cad29c528ea577f4291b3ab42ba2fc30b0af1ef0af5a3a2ecfd75160fcf9e9e46c333cb
*1f9b920df6a6352e7f99ada445db40738d01eb07a867053b9b406a6f1762308b93722d4e05558d
*3658b86f7b7a3b83da87f632f88d3632f8d577bc0c7d7ee092ca1b19126c772f1fc4c0ade6ae25
*9e2a34ecb286db311e92e53aba7ca3b50f2f5cedfe44f6d762f01595b2a71875340cb7068c7e79
*22fbbf7288ca5f8a475250052dca5a5f4d97cd6994b7cbe6b076393ced20770f28c6b353c039ea
*db041a92a298a0616fa00a406d0c540b8449b121074cefeac20149933e9a6707d7e16854d03c44
*2da1a625d9a9e40a083d54466bb07814259df003eaefb10d9cd96a419f7312041463857f116a82
*70c7831e0b760ba8ce08ec3d1ce7402443328549fabfd0e18a1a9b36097d9035e602efa935fb77
*3bca1f8dcef4011398e43bda0b8f556348a1bf06b4510721833a1485b429c6042d95c04694f170
*eb82e6b3ce66a5d36c563827b4723a09adaa7142a776fa2350d1b4db33ab4137a8ef88995b174e
*f1d946f433a4a8d626bcf024720ac2144e356655fc31c51cfc319af0ff50036be3ffd2cc794e35
*30a1dbde7572d4533e13a5f9f49266a8a3f18429eb992ec57b116c882e5fd1aa2bdc7c9b5e1792
*af777922328598a5675e3e538c5ae705de2d38cc0c66568b63a784791cc27cb55e49e554cf24db
*103d275958056edad7cab5396fc3bb61f2b8d222698056d6453ff0054ba307ae47a16020fb76b8
*eb2be7fc0c66d5b3d3cddfd2f7574eae779ecdf1c5fbef73203a69e53e70a732ba7c49798ff9a2
*d3b147efc5020b838be5b1b2d23a58d92b4e3de942ac147ba0232b1cc20743ea9526500c843b80
*4cc96375845dc1f12c93752ec383876234744f7f6f91f6f6b97d6e9fdbe7f659e2f9ffea59aae7
*000e0200
}