Skip to content

Instantly share code, notes, and snippets.

@ycopin
Created April 19, 2017 15:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ycopin/619f5254e67886e06b79c836d8eead94 to your computer and use it in GitHub Desktop.
Save ycopin/619f5254e67886e06b79c836d8eead94 to your computer and use it in GitHub Desktop.
Simulation of seeing in large telescopes (D>>r0), tested against SNfactory ad-hoc PSF models.
# lbda: 4327A
# radius[spx] flux
0.716608613055 12.3552
0.745272338424 11.5852
0.745343175736 11.7769
0.834997936881 10.4475
1.55358944456 4.54829
1.57210666273 4.74318
1.61169010512 4.2645
1.68493686848 3.5319
1.74032685753 3.35422
1.75684694171 3.12297
1.79226673209 3.36554
1.85843829222 3.02449
2.22949482886 1.52675
2.22956586929 1.63293
2.26810158109 1.49356
2.3864965395 1.25747
2.50436608068 0.936273
2.53564800666 1.00553
2.57673311389 1.15053
2.64212091831 0.831548
2.84900419776 0.594853
2.8765223231 0.583048
2.91271272972 0.675153
2.95450069299 0.464054
2.97073230766 0.661472
2.98549666889 0.826283
3.03348947381 0.520949
3.15229100498 0.431523
3.15583097812 0.429738
3.18473553815 0.40955
3.22985083738 0.390899
3.34164711507 0.400866
3.48282339057 0.264776
3.51958836633 0.289079
3.56111809486 0.369776
3.62251206252 0.301754
3.71499467699 0.209787
3.71506573374 0.280393
3.80624506539 0.181903
3.81961937739 0.245014
3.85427253245 0.315292
3.90638349286 0.21185
3.93801478407 0.216523
3.97741102894 0.182418
4.00963045684 0.190295
4.02225203426 0.201376
4.04604214996 0.215724
4.10019441344 0.223117
4.19075895105 0.159204
4.23430276792 0.167069
4.28187742792 0.166068
4.38779345193 0.172258
4.41132978275 0.119673
4.43217301666 0.160119
4.55231486508 0.163044
4.55489274787 0.138129
4.61133216536 0.156659
4.61574725029 0.130903
4.63553478918 0.115133
4.67432513177 0.132926
4.75308449483 0.135578
4.77468775407 0.145954
4.86763479788 0.12417
4.94166816714 0.119244
5.11250019988 0.100622
5.14730787421 0.101647
5.18381181554 0.121259
5.20067742058 0.0851084
5.20074848183 0.110162
5.23572576045 0.120342
5.24276662586 0.113552
5.27072464047 0.0976773
5.3226859422 0.101061
5.37114048618 0.102004
5.37139631847 0.0972523
5.47300132818 0.102482
5.4895360163 0.0946428
5.494603756 0.0905185
5.54667280234 0.0987886
5.60412125453 0.104601
5.60565947748 0.0864304
5.63826802659 0.0823288
5.72187640056 0.087733
5.76272665222 0.0884338
5.87321571525 0.087444
5.88741514768 0.090112
5.89834272182 0.0884296
6.08820976309 0.0842796
6.10320793027 0.0701937
6.10975008792 0.0780519
6.2109695558 0.071304
6.25063231368 0.0781598
6.28707456055 0.0712531
6.29016204293 0.076421
6.32362546528 0.0949923
6.36647668914 0.0752858
6.37287235961 0.0686733
6.37408350084 0.0894448
6.40590213299 0.0689079
6.43020509584 0.0848073
6.47952226162 0.071904
6.54275077635 0.0773923
6.57796639746 0.0802376
6.59908825003 0.0705312
6.64504325816 0.0650343
6.67331319186 0.0732772
6.6844667654 0.0713967
6.68631708223 0.0718472
6.68649220901 0.069661
6.81477152573 0.0720635
6.8485932839 0.0717355
6.92172979656 0.07091
7.0012341749 0.0654785
7.01223861405 0.0660574
7.04105826117 0.0682567
7.04980125208 0.0667779
7.07574269414 0.0687417
7.27140842143 0.0642235
7.27310203124 0.0585062
7.37238482467 0.0664186
7.38586791292 0.0680497
7.39040165176 0.0707092
7.42796882965 0.0668018
7.48741291865 0.0565187
7.50171787322 0.0633702
7.53986712527 0.0627339
7.56589687247 0.0628192
7.59537730648 0.0637952
7.59811853646 0.0637862
7.65665216215 0.0593574
7.71392687641 0.0592076
7.75354246372 0.0620853
7.81951423141 0.0661176
7.83954189482 0.0555423
7.89228038364 0.0632143
7.93813168346 0.0649871
7.94932363649 0.0656511
8.05903117593 0.0696435
8.12372685071 0.0631257
8.17226365677 0.064036
8.19845933265 0.0591071
8.29727509571 0.0531699
8.36770178377 0.0604193
8.50830765398 0.0608632
8.52398615886 0.055592
8.53115203558 0.0583338
8.53765804024 0.0594891
8.56954033569 0.0563404
8.59252856405 0.0573073
8.59258097012 0.0594579
8.60953474605 0.0597631
8.63519245452 0.0559289
8.71203502457 0.0545608
8.72315814804 0.0583596
8.79695263499 0.0555135
8.80156929375 0.0556808
8.85036671934 0.0563155
8.88011142202 0.057412
8.92400234686 0.0583789
8.98609785093 0.0564457
9.04624865759 0.0603954
9.10006349 0.0585736
9.14090205762 0.0555651
9.26072865572 0.0593005
9.29909399773 0.0577292
9.33805436566 0.0581372
9.34914012608 0.0560803
9.49498230705 0.0562901
9.53591177379 0.0545264
9.58499289816 0.0566096
9.59027308371 0.0529429
9.60940640301 0.0549165
9.61814821684 0.0503754
9.65805003171 0.063911
9.67253636646 0.0561432
9.71155025843 0.0575919
9.73661702538 0.0582254
9.76118321868 0.0579715
9.77895436687 0.0560509
9.83355597488 0.0562717
9.85243406899 0.0592493
9.9017908702 0.0534869
9.97487957323 0.0558348
10.0555383063 0.0562221
10.0909219472 0.0512105
10.0944264535 0.0565847
10.163130117 0.0565575
10.1736796356 0.0571313
10.1852922705 0.0542905
10.3305975653 0.0535239
10.3641298066 0.0529833
10.4203145061 0.0548901
10.5134658945 0.0561336
10.5252947021 0.0495351
10.528141146 0.055008
10.534496756 0.054671
10.5884431583 0.0561611
10.6042916555 0.0506579
10.6265506055 0.0567964
10.764270591 0.0507111
10.7954280765 0.0549711
10.8514769538 0.0568192
10.9442549519 0.0561116
11.0528078648 0.0602084
11.0561657198 0.0491225
11.0580784016 0.0556615
11.1016403932 0.0562249
11.1438453632 0.0571678
11.1784741553 0.0519887
11.4464172469 0.0586112
11.4552593037 0.0509309
11.5137508099 0.0533362
11.6788378502 0.0546892
11.8122319215 0.051182
11.8155777402 0.0591309
11.9508165928 0.0568809
12.011004085 0.0511922
12.0208727733 0.052377
12.5248695186 0.055433
12.5313987639 0.0574275
12.6115499831 0.0611926
12.6296464902 0.0517462
13.2746333263 0.0621648
13.2948005553 0.0534115
#!/usr/bin/env python
"""
Based on Brian Borchers' MATLAB implementation
(http://infohost.nmt.edu/~borchers/hankel.html) of Walt Anderson's
Fortran code for numerical approximation of Hankel transforms of order
0 and 1 described in:
Anderson, W. L., 1979, Computer Program Numerical Integration of
Related Hankel Transforms of Orders 0 and 1 by Adaptive Digital
Filtering. Geophysics, 44(7):1287-1305.
Author: Yannick Copin <y.copin@ipnl.in2p3.fr>
"""
import numpy as N
def hankel_weights(order=0):
"""~30x faster than hankel_points_ascii"""
if order == 0:
return N.fromstring('\x8fC\xa7\xfbr\xaa\xfa9{\xd9\x8cj+y\x0c\xbd\xfb\xad\x9eC\xf8\xfb)=\xa3Ng\x98\xb6\x82\x1f\xbd\xc2\x9a\x84Y\xff\xc4.=\x92"\xfc\x1f\x8f\xde\x1d\xbd)p\xe2\x83i\xf2/=\xdbF\xa8W\xedI\x18\xbd+2\xef\xb8Ij0=\x18\xb0\x10x\xbdi\x11\xbd/\x8a\xee\x14\xbf\x0c1=\xed|\x19%`%\x03\xbd\x16\xdc\xd6W\r\xfb1=\x9a\xd4A\xe0\x1cd\xc4\xbc\x90\xc9#a\xddF3=\xe3\xabJg\xf0M\x03=\x1d\xc7u\x04&\x035=\xa5\x17\x1c\xc2o\xa0\x15=\x9d\x02\xe4\xfc\xb0F7=\x0c\x1c\x12\x94\x9e\xd8!=4\x14\xad\xf1[-:=\xe3\x93\xd5\xf4\x03,*=\xd9\xb2\x91\x1dJ\xd9==e\x0f_\xb7\xc4\x0b2=\x03/\xc6\xd8$:A=\x9c\xe2\x0eY\x96\xfc7=\x01\xef\xda\xbb\xc2\x18D=`~\xca\xf9\xc2!?=A\xc7\x8a\x01\xcb\xa7G=\r\xb9\xc3\xa7\x96\xe0C=\xa8I\xdd\x02\x84\rL=+\xfa\xe0\xc9\x0c\x18I=\xe9WEt\\\xbcP=\x15WzPKkO=]zq\xedM\x11T=\xc0\xc3\x12\x13\xea\x8cS=T\x10\x86~\x89(X=\xe6P0q\x978X=\xdd\x17\x10\xec\xc3,]=\x1a\x04\x8a\x0e\x02\xe8]=\x8e:\xae\x85\x15\xa9a=M\xdd\x104zjb=\xa0\x0f\x8e5?le=\x92\xc8\xc30\x00\xa3f=N\xd0\x8fh\xcf\x06j=\xaf\xde\xa1\xe6\xa9\xc8k=M\xbc!nW\xa8o=\x03)\xecV\x0b\x08q=\xf4]5;yEs=\x9cd\xf3\\\xc5\xdct=\xb1\x1a\xc4d\xcdzw=\t\xe7\x9c\x95\xc1\x89y=\xa7\xfe\xf7\x9c\x81\x9f|= \xe5\xb7!\xee>\x7f=UJ\'\x86Dt\x81=\xd4,\xcc\x85j\x1b\x83=\x9c{A[HK\x85=,\xc5\x96\xd0z\\\x87= \x7fd\x07L\xfc\x89=\xd3=\xcaxQ\x8e\x8c=_\xba.X\x8e\xb7\x8f=\x04#\x17:!s\x91=\n\x8b\xd0s\xfe[\x93=l\x1e\xdd\x01\xb8R\x95=\xb7\xf8\xdc\xca\xc8\xa2\x97=\\\xb1W\xee\xb3\r\x9a=\x8b\xc2\x0b\x08\x1b\xdc\x9c=I\xf6p<\xaa\xd4\x9f=WUn\xc5\xd2\x9e\xa1=\x8a\xd2\xd8\xd6xq\xa3=\x9cf\xcd\xed}\x84\xa5=\xddUz\x16\x82\xc0\xa7=\xaf\'\x9a6\x1bG\xaa=\'\xce\x85\xb6\xb3\x03\xad=\x0b\xe8\xc7b\xca\x0b\xb0=\xdb\xf7\xea\x98\x8e\xb8\xb1=\x11e\x8f\x9e\xd4\x98\xb3=\xb6\xc92\x08c\xa5\xb5=\x1ex\xe6\xc8(\xef\xb7=}\xe7\xd8%\xaap\xba=Hz\x94cW;\xbd=\x92\xa7n9\xd2%\xc0=\x12\xee\xd0j\xe7\xd9\xc1=\x9d[\xed\xfc<\xb9\xc3=@\xa6ET\x85\xcd\xc5=\x07\x95\x95.R\x17\xc8=\x89fRK\x1f\xa1\xca=\x1a\x00\xed\xdd\xf0l\xcd=\x9f,!5&C\xd0=\xc7\x81S\xaes\xf8\xd1=\xd8\xeaDD\xcf\xdc\xd3=\x13D1*\x13\xf3\xd5=^\x95iD\x88B\xd8=_9\xc6C8\xcf\xda=\x19/^7\x7f\xa1\xdd=\x9d-\xe0\xb5h_\xe0=Vmaoq\x18\xe2=\xc8\x0b\x9e\x91m\xff\xe3=\xc5\x88{\xd8\x0c\x1a\xe6=\x8ag\xa9H\xe9l\xe8=\xdfcQ*\xbb\xfe\xea=\x1a\x17riY\xd5\xed=\x1a\xc9b[a|\xf0=[N\xe3\xee&8\xf2=Io&\xab\xc5"\xf4=~2\xe8\xe2\xd1@\xf6=\xe1H=\xa6\n\x98\xf8=\x98cQ[\x1f.\xfb=t\x91~\xed\xfd\t\xfe=\xfbp\xfe\x15W\x99\x00>|\xea\x03\x9cHX\x02>\x15,\xb4#)F\x04>\xdcw\x8f\x8d\x0ch\x06>\xf6\xed\xea\xfcG\xc3\x08>\xd2\xf5\x11\x8a\x05^\x0b>\xe2 b\xe4\xd1>\x0e>\xe0\x89\\\xc0\x95\xb6\x10>\xc6\x03\x8c\x86\x8dx\x12>\xa4\xd8\x00\x9d\xdfi\x14>\x02J\xfe*x\x8f\x16>\xce\t\x8b\xf8\xe4\xee\x18>u`\xdc\x13-\x8e\x1b>\xd5\xe6\x89D\x15t\x1e>x\xc0\xc0\xf4\xfe\xd3 >u\xbb\x1f\xee\x13\x99">`\xefy\x85\xcc\x8d$>\xd1z\x8c]1\xb7&>\x80\xce\x96\xc6\xc6\x1a)>\x88+e\x1b\xb1\xbe+>y\xaf\xca\xe7\xae\xa9.>F\x99]\x93\x9f\xf10>wB\xc7\r\xd0\xb92>\xe4X\xd2\x1a\xfc\xb14>5\xdb\xaf\'-\xdf6>\xa2\xf4\x16\x11\xf9F9>\x8eK_e\x87\xef;>?x\xbc\xf3\xa9\xdf>>\x04{\xe7\xddr\x0fA>\x13#\x05>\xc7\xdaB>\x97\xf2D\xfdi\xd6D>b\xae\x08\xb0p\x07G>H.\t\xd7wsI>\xb8\x90\x95\xef\xb4 L>[*\x97\xc7\x02\x16O>2\x80\xcdC{-Q>\x8a\xe9\x05\xe0\xf7\xfbR>\x92\xa9M\x92\x18\xfbT>\x05\xf7\x9f\x8b\xfa/W>\x8d\x85/zE\xa0Y>d\xfa9\x868R\\>]!\x82\xc8\xbbL_>R\x8d\xfcH\xb8Ka>\xc8n/,c\x1dc>\x00S\xa4~\x07 e>\x8bL\x80\xfd\xcbXg>d\xe6\xe0\xc3a\xcdi>\xadD\xac|\x13\x84l>\xfd\x8eR\xe9\xd4\x83o>\xf64\xb0\xa2*jq>T\xad\xbc3\t?s>\xbf\xfa\x19\x877Eu>\xcbc\x8a2\xe5\x81w>-\xe1\\\x8d\xcd\xfay>\x81w6 F\xb6|>\xc1\xf8\x8d\x1dO\xbb\x7f>\t\xd8\xb4\x8a\xd2\x88\x81>c\x0b\x1b\x81\xea`\x83>\x96}E\xfc\xa8j\x85>\x1d\xf2\x1c\xcaF\xab\x87>\xff\xdf~B\x89(\x8a>\xd1\x13Y*\xd1\xe8\x8c>\x14p\xd4\xf1*\xf3\x8f>~\xe3\x02n\xb0\xa7\x91>\x91\xbb\\n\x07\x83\x93>\xff\xa8-_\\\x90\x95>\xc5\x19/6\xf1\xd4\x97>\xdd"\x08}\x95V\x9a>\xe9\xd1\x00*\xb5\x1b\x9d>y\x91)\x8f\xb4\x15\xa0>1\xfc\xa4\xa5\xc4\xc6\xa1>\xaf\xc4Fj`\xa5\xa3>j\x1b<\x1eR\xb6\xa5>\xbd\xf5o\xfc\xe4\xfe\xa7>\xf1Dd\xc5\xf2\x84\xaa>\xa9\xf4\xf0\xc0\xf2N\xad>\xbca\x91%\x052\xb0>7\x81\xad\x93\x0f\xe6\xb1>>\xcc2\xdc\xf5\xc7\xb3>tu\x8c\xb0\x8a\xdc\xb5>-\x02\xc2\x9b")\xb8>\xd9\xd7i\xac\xa1\xb3\xba>Q\x8a\xc0\x8a\x8a\x82\xbd>p\xd0G\x94\x87N\xc0>\r\xaej\x97\x91\x05\xc2>\x95\x02\x81/\xc8\xea\xc3>\r\xd8\xca\x8a\x06\x03\xc6>\xe3\xf0\x03\x97\xaaS\xc8>\xe1\x06\xd8\xc0\xa2\xe2\xca>\x04\xbb\x01\'}\xb6\xcd>oI\x952<k\xd0>\xa11,\x12K%\xd2>Yw\xe3\xce\xd7\r\xd4>t_\xac#\xc6)\xd6>fS\x96p}~\xd8>\x19\xf4\x7f\x93\xf6\x11\xdb>\x97\xce\xf54\xcb\xea\xdd>\x95\x03\xceX#\x88\xe0>\xdc$+e<E\xe2>\x16>\x14&%1\xe4>\xda\xd1\xd5\xf1\xc9P\xe6>\xef\xc9\xcd\xab\x9b\xa9\xe8>B\xda\x0f\xb5\x9dA\xeb>\xc3\xb1\x9bTu\x1f\xee>\x95\x8e\x12_=\xa5\xf0>\xaa\xdf\xc1\xf1ee\xf2>\xacHG\xa0\xb0T\xf4>Ll\x8dk\x12x\xf6>\x17\xd0\xca\xca\x05\xd5\xf8>\x8b\xad\xda\xb4\x98q\xfb>\xf4\xf8d#|T\xfe>\xde\x02\xe3\x9b\x8a\xc2\x00?\xe2\xc5\xb8\x16\xc8\x85\x02?\xe9\xdeE\xa5zx\x04?\x83\xb6\x17\x02\xa0\x9f\x06?\xf3\xbc\xecH\xbc\x00\t?"\xe6\xa8\x18\xe8\xa1\x0b?\xd3\xd9\xd41\xe0\x89\x0e?|\x11\xca\\\x0b\xe0\x10?Iy\xb1&c\xa6\x12?\t\x910\x8c\x83\x9c\x14?P\xc9#\x10s\xc7\x16?A\xbd\xcc\x82\xbf,\x19?\x0e\x97\x94<\x8c\xd2\x1b?\xb1#\xd6\xd7\xa1\xbf\x1e?2-\x07\xc9\xbf\xfd ?d6k@7\xc7"?\xafU\xfee\xcb\xc0$?L\xb1p\x91\x8b\xef&?\xed\x07\xb4T\x0fY)?\xa0o=\xcf\x84\x03,?\x7fv\xf5\x82\xc0\xf5.?3!\x80i\xa7\x1b1?p\x18\xc7\xacC\xe82?\xab\xfd\xbe"Q\xe54?D\r\xa1\xfb\xe7\x177?\xbfE\r\x8c\xa9\x859?\x8b\xc2\xec\xb7\xce4<?7=,\xe07,??a\xa4\xb9>\xbf9A?\x9b\xe6*I\x84\tC?\x119\xb6\x14\x0f\nE?\xdfk\xb1\x88\x80@G?\x87(p\x8c\x83\xb2I?E\xb0\xf3\x81[fL?v\xb1eG\xf4bO?`\xbb\x94\xef\xf9WQ?~\xb5\xb8\xfa\xe6*S?"B\xd6\xb1\xec.U?\x0c\xe4\xe9\xfd3iW? #J[p\xdfY?\x11\xfe%V\xee\x97\\?Y$\xe6p\xa3\x99_?\xff\xa6\x90\xe0\x1fva?\xc6\x9e\xc3\x98 Lc?&\xb7\x12p\x84Se?h\xd8\x92+y\x91g?\xab\xfc\xf7\xb1\xb6\x0bj?p\xa3t\xf3\x8c\xc8l?\x17&Ov\xf3\xceo?b\xd1p\xe8L\x93q?\xc4\x91\xcc\x1e\xfdks?\xaeA\x99e6vu?J\x9cx\xa8\x1e\xb7w?\x95\xb3Y\x92`4z?\xc4A\xe7M8\xf4|?&\x1d\xa20\x7f\xfd\x7f? w@\x12\xdd\xab\x81?\xfa\xbe\xca|\x92\x85\x83?\x14\xe6\x86\xf9`\x90\x85?.\x8d9\x191\xd1\x87?Q\xecT\x8dZM\x8a?\x9b\x12\x85Q\xa4\n\x8d?.\xf0\xc1u\xa5\x07\x90?\xe7\xc4_\xba\xfb\xb0\x91?\xaa\r\xf6\xe5\xe0\x84\x93?\x18f\xbah\n\x87\x95?\x163\x8b\xe8S\xbb\x97?\xdc4-\xea\x9e%\x9a?:x\xa6\x12\xc7\xc9\x9c?&\x89"\xaa^\xab\x9f?\xdc&\xda\xec\xc9f\xa1?\x94\x1e0\xdfU\x19\xa3?\x08\xc0\xe5\x80\xe7\xed\xa4?\xbe7\x92\xcc\x06\xe4\xa6?\xe3\xcf\x0c\x9f\x03\xfa\xa8?\x7fw\x91E\r,\xab?\xe2B~\xe8\xf1s\xad?|&\xd9R~\xc7\xaf?3\x08\xf8^\x1b\x0c\xb1?\xd6\x05AoC(\xb2?6\x82m|\xde)\xb3?T\x80o\x81\xb3\xfc\xb3?\x87\xe7:\x07B\x87\xb4?\xb4\xef_\x805\xa7\xb4?\xad$\xe3\xd8\xf23\xb4?\xa3m\x80j\xcb\xf9\xb2?\x9aGc\xde\xe5\xc1\xb0?\x92E\xca\xb03\x9a\xaa?1\x10U\x11s\xd1\xa0?\xe05)\x1aA\xb5~?\xcd\xf4\xf9\xc8\\p\x98\xbf`90\x0f@\xcf\xae\xbfw\xc2\x83AB"\xb9\xbf\xddP\xad\x1f\x13\x00\xc1\xbf\x9e\xe2:\xf74\xe6\xc3\xbf\xf3\x11\x01S\xdb\x04\xc4\xbf\xd7hg\x9cs\xd2\xbf\xbf\xf1\ni\xf0\xad\x17\xac\xbf\xbbn\x8d\x8c^\xfe\xa7?tV\xe1\xc9\xf5W\xc3?\xbe\x89\x82\xb9\x92 \xcb?\xc5n\xcc\x93\x9d\xb2\xc5?\xfb\xcd\xe3\xae\xaac\x8c?\xaa7\xc5\xd0|\xed\xc7\xbf\x8en7\x85uo\xcf\xbf\xf9\xae\xef0\xf7.\xab\xbf\xfd\xb0\x8b\xf1\xc3 \xd0?\xeb\'\xb1\xb1z1\xc9?\xc9\xd5\xd5\x82\x91\xc8\xc9\xbfjQ\x18\x07\xdaw\xcf\xbfm%\x12(\x8b\xf9\xd5?P\xf8A\xb98l\xa8\xbfjbGp;\xd6\xca\xbf\xfcI\xbd\x93\xe2\x0e\xd0?\x9ar\xc0\xddDu\xc5\xbf\xcd\xf8\x9d\xdb\r0\xb3?\xc5\x0b%\xe9\xb1[\x91\xbf\xeb\x1b\xbcu\xb0\x14\x82\xbf\xea\x99\xc6\xa0O\x8e\x90?\x11\xafI\x7f\x14\xe0\x8f\xbf\x00E\xcb\\y\xa0\x89?\xabA\xe3\xf6\x84\x0b\x83\xbf\xec\x91\x84\xfa\x94={?3A\xae*r\x1es\xbf|\xe6T%h\x9dj?6:4\xf8/zb\xbf\x98Hxr\xf3\xabY?\xb6,\r\x96\x8a\xe0Q\xbf~\xeen\x8a\xa2\xfcH?\xf6=,V\t\x8aA\xbf\xd1\x0b\x19\x0f\xee\xc08?\xee\xc1\n\x18\x89\x941\xbf?\x99\xa7OW+)?\x1c\xee\x19\x82\x122"\xbf\xfbr\x93\xd9@\xa2\x1a?"\n\xb7\xe3\x88\xca\x13\xbf\xa8g\x7f\xddn\xf5\r?\x08\xaf\x84%L+\x07\xbf\xef\xc8\xf1#\x01\\\x02?\xfbN\xa43`\xde\xfd\xbe<\t\x84\x93\x0b\xf5\xf8>\xecQPr\x81g\xf5\xbe,\xaa\x93\x01\x06\xce\xf2>F#"\x1e\x1d\xe0\xf0\xbe\xdc,\x9d\x13\x1f\xd6\xee>~[\x17\x8d\xab\x96\xec\xbe~\x13~*\x1d\xd0\xea>\x1a4\x15\x16\xa8_\xe9\xbe*\x06,\xcb\xf1,\xe8>\xcf\xb2o\xe9\xdc&\xe7\xbe\xberRiZA\xe6>P\xc3/2\xf2s\xe5\xbe"x1\x13\xb7\xb8\xe4> 4\xf1>|\x0b\xe4\xbe\x92\xe5O\x81Ei\xe3>d\'\xe3\xfe\xed\xcf\xe2\xbe\x1c\xccSb\xf0=\xe2>\xdc\x08\x05]9\xb2\xe1\xbe\x11W+\x95\xff+\xe1>\x12\x07\x0fK\xa9\xaa\xe0\xbeK\xa0\xd1]\xc1-\xe0>\x19\x83A\xea\xe2i\xdf\xbeT~\xf64\xf1\x7f\xde>\x7f\xef\x8f\xa1A\x9d\xdd\xbe\x7fd\xfa\xf4t\xc1\xdc>RpX\xd7:\xec\xdb\xbe\xaa\x97\x0c\xa4R\x1d\xdb>\xe2)\x9a\xa4\x84T\xda\xbe/\x85E\xb0\x9a\x91\xd9>F\x06\xbd\xdb_\xd4\xd8\xbe\xb1\x8c\xc8\x80\xa4\x1c\xd8>\x95D\x8a\xec>j\xd7\xbe\x1fV\x85m\x07\xbd\xd6>\xc2\x90\xa8b\xd5\x14\xd6\xbed\x15\xc0\xb3\x80q\xd5>P\xc9x\x83\xe4\xd2\xd4\xbe\xf6\x8d\x9a\xe4\xde8\xd4>$\xc8kSN\xa3\xd3\xbe\xb0\xf8\xe8\xb4\x10\x12\xd3> O\xaf\xdb\x04\x85\xd2\xbe\xb0\xf4\xdc\xeb\x0b\xfc\xd1>\x01\xb8.\xa4\x08w\xd1\xbe\x89\xd5j\xdb\xdd\xf5\xd0>\'\xa3\xb4`nx\xd0\xbe\xae\xc7\x8c<<\xfd\xcf>\x1a\xacdM\xa5\x10\xcf\xbe\x83Tv\xf4\xe4*\xce>\xd5z\xedq\xc8K\xcd\xbeD\x03D\xb3\x1ds\xcc>\x80!\x87\xc3\xb4\xa0\xcb\xbe\xb5\xc7\xb8\x01`\xd4\xca>\x04i\xe6\xfb\xf2\r\xca\xbe\xc1=\x1c\xb5AM\xc9>S\x08\x926!\x92\xc8\xbe\x8a\xe3\x8dYh\xdc\xc7>\xba\xa6#\x9b\xef+\xc7\xbe\xf9\x98\x1fW\x90\x80\xc6>\xf2\xf4\x87\x8a$\xda\xc5\xbe\xc4\xdasN\x878\xc5>\xec>74\x95\x9b\xc4\xbe\x14\x87\xab\xfd+\x03\xc4>\xc3\xd1\xc9\'*o\xc3\xbe\xb1\xb6\xf1\xe7n\xdf\xc2>$\xca\xa7\x80\xdaS\xc2\xbeO\x99\xb1^N\xcc\xc1>U\xf7\xb9\xd6\xacH\xc1\xbe%\x0e\\\xe7\xd8\xc8\xc0>\r\x11\x86K\xb6L\xc0\xbeu?\xc3XS\xa8\xbf>\x17f\xc7>1\xbe\xbe\xbe)\xdd\x9a\xe8\xd2\xda\xbd>\xd99\x042\x06\xfe\xbc\xbe=\x1f\xd6\\\x9a\'\xbc>+g\xfdA`W\xbb\xbe\x98\xca\xd45*\x8d\xba>\xdf7\xa5\xc5\xcb\xc8\xb9\xbe!\xff\x88\xa3\x19\n\xb9>\xf1{\xa0\xc6\xe9P\xb8\xbe\x94Vd|\x13\x9d\xb7>F\xab\rIo\xee\xb6\xbe\nNR\xbf\xd6D\xb6>\x99\x81\xc5|$\xa0\xb5\xbe\xd4\x94\x91=4\x00\xb5>#Z\xa9\xdc\xe2d\xb4\xbeC2\xb68\x0e\xce\xb3>\xcd\x9c\x80\x1d\x95;\xb3\xbe\xd2\x9b\xebEW\xad\xb2>\x02\xfc;e5#\xb2\xbe\xee4\xb6\x1f\x11\x9d\xb1>[qP\xf6\xcc\x1a\xb1\xbe\xf6\xb2\xb3:L\x9c\xb0>S}\xb0\x11s!\xb0\xbeKC\xdb\xeaLT\xaf>`Z\xc8W\x98l\xae\xbe\x9e\xf2~q\x95\x8b\xad>\xb9\xdf\x1b\xae\x12\xb1\xac\xbe$\xe2\xad\xf4\xdf\xdc\xab>\xef\xe0r\x99\xce\x0e\xab\xbe\xa0o\xd5K\xb1F\xaa>}\xba\x82\x03\\\x84\xa9\xbe\xc0K/\xf9\xa3\xc7\xa8>\xe7\x1b\x91\xa5_\x10\xa8\xbe\xbaz\xdd\xb9f^\xa7>\xecd\xc1\x10\x92\xb1\xa6\xbe\xb4\xbe\xc2\xa1\xbb\t\xa6>\xb5W0|\xbef\xa5\xbe\x95c\xb8\xc3v\xc8\xa4>\xdc\x9a\xdb\xa7\xc1.\xa4\xbed\xa4\x1eX}\x99\xa3>\x05+W\xfb\x88\x08\xa3\xbef\x07K\xab\xc4{\xa2>\x0f\xe6\xefo\x11\xf3\xa1\xbeV\xa9A7Qn\xa1>\xb5\xae3\xccf\xed\xa0\xbet0O\xd05p\xa0>\xab*\xf4nE\xed\x9f\xbe\rM|\x85%\x01\x9f>\xdf\x8a9\xf2\xd7\x1b\x9e\xbe\xd1\x052A*=\x9d>=\xb0\\r\xebd\x9c\xbe\xb5\xedU\xf1\xeb\x92\x9b>\xc8^$\x8b\xfd\xc6\x9a\xbe\xeb\xe1\x1fb\xf3\x00\x9a> \x0f\n\xe3\xa1@\x99\xbe\xe67\x9a\xbc\xde\x85\x98>E`\x84\xd7\x80\xd0\x97\xbe\x99\xad\x15M` \x97>,\xde-]Vu\x96\xbeV&we=\xcf\x95>\x90D\x07\xda\xf0-\x95\xbe\xea\xae\xef=M\x91\x94>\xab3\xf3\x1a0\xf9\x93\xbe3\xae<\xf9we\x93>\xf8\xd7\x18X\x04\xd6\x92\xbe@\x0fm\xa7\xb5J\x92>,$\xf7@m\xc3\x91\xbe\xe7\x94#a\r@\x91>\xd6\xe0) y\xc0\x90\xbe\x0b\x8b\xe2k\x94D\x90>\xb6O\xee\x03\x88\x98\x8f\xbeY\xc4\xc4\xd3\xda\xae\x8e>\x95\xf7\xa0\xdd\xed\xcb\x8d\xbe\xc5Y\xad3\x8f\xef\x8c>D\xf1JY\x8e\x19\x8c\xbe\xc1\xf3\xc58\xbcI\x8b>X\xdc\xd3\x18\xeb\x7f\x8a\xbe\xbcM%\x92\xee\xbb\x89>o\xed\x96\x85\x9b\xfd\x88\xbe\xa9\xb8\xfd\x12\xc8D\x88>Ac\x18\x90K\x91\x87\xbeEXr\x7f\xfe\xe2\x86>\xfe7\x80\x87\xba9\x86\xbe\x9ba<jZ\x95\x85>\xca\xad$\xfd\xb9\xf5\x84\xbeQ\xa2O!\xb6Z\x84>\xa2\xe7\x8f\xbb,\xc4\x83\xbe\xd8\xf0\xdb\xac\xfc1\x83>\x1fq\x16\xcb\x05\xa4\x82\xbe\x0f\x97\x15\xda(\x1a\x82>\x12\xa8\xc0\x84G\x94\x81\xbe\xe2)LVD\x12\x81>\x10$\xb7\xb3\x02\x94\x80\xbe\xd8\xbc\x8f\xd5f\x19\x80>\x7fT\xc7\x83\xabD\x7f\xbe\xce\xf6\x92\x8cj]~>\xf7V\x1e\xe4\xd7|}\xbe\xeeDB!\xc2\xa2|>D\x03LH\xf9\xce{\xbe\xf9\x92x\xc0N\x01{>\xd7\xe5\xa5I\x959z\xbef\xccO\xf2\xa0wy>\x7fG\xea\rG\xbbx\xbe$\x01\x8c+^\x04x>\xc6\xc9\xd1\x0c\xbeRw\xbe\x1d\x0c\xf9\x9c?\xa6v>\xca\x7f@\xe8\xbc\xfeu\xbep\xba\x94\x13\x11\\u>\xa2\xf0{T\x18\xbet\xbe\xc3A4\xe9\xaf$t>\x1a\xfe\x06\x11\xb6\x8fs\xbeP\xeb\xd9\x04\n\xffr>P \xfe\xef\x8brr\xbe\x9e\xa82\xe9\x1c\xeaq>\xc6\xd0\xd4\xeb\x9eeq\xbed\\A\xd1\xf4\xe4p>\xa6\x00kJ\x02hp\xbe\x0f\xb8F\xb3W\xddo>zf\x1f\x99\xad\xf1n\xbe\n\xd6\x8dl\xd2\x0cn>\x02\x9f6\xd3\x93.m\xbe\x93 #\xe7\xc0Vl>\xb6o\x03,*\x85k\xbeU\xc7\xbb\x84\xa1\xb9j>\xdd\xd0;)\xfa\xf3i\xbe\xcb\xcd\xa2\x9c\x084i>\x06:\xb0\xa3\xa2yh\xbe0@{;\x9f\xc4g>|\xf9k\x90\xd6\x14g\xbe\xea\x18v\xf5!jf>\x1b8\x96\xdb[\xc4e\xbe\xa4\xf1\x8f\xc9_#e>Wj\xe8S\n\x87d\xbe\xe7`\x1a\x159\xefc>\xa8\xa4\x03\xa6\xca[c\xbe\xab\xe9\x8b\x96\x9e\xccb>1\xc3\x82f\x95Ab\xbe\t\x9b\xb1~\x90\xbaa>\xfe\xeb\x1f*r7a\xbem{\x89\x8f\x1d\xb8`>2\xd3\x05\xabv<`\xbe\x9a\xc8\xbd\x8f\xc4\x88_>\xe71)\xf5\x8b\x9f^\xbe\xfdk\x186\x10\xbd]>^\x1f\xd6}\x1f\xe1\\\xbe\x9a\x077h\x89\x0b\\>U\xe5\xf4\xf6\x1e<[\xbe^IW\x87\xb2rZ>6\x88(\xc8\x17\xafY\xbe\x05\x89\xf5\xaf#\xf1X>\x8a5\x96s\xac8X\xbe\x84\xad\xfb|\x89\x85W>\xc1\xf2Ab\x93\xd7V\xbeb\x9c\x03\xdd\xa3.V>u\x1b\xee\xc1\x95\x8aU\xbe\xfaz\x94\xf8D\xebT>\xeaV~s\x8ePT\xbe\xc3Gq(P\xbaS>"q\xf3\x08i(S\xbe\xcc\xb9\x05\xfb\xb8\x9aR>\xaa\xd7\x13\xd2 \x11R\xbe\xc9c\x18H\x82\x8bQ>\x83\x89\xf3\xf6\xbf\tQ\xbe\xb6\x16\xf3Q\xbd\x8bP>\x9e\x88\x8a\x9f^\x11P\xbe\xe5\x0bs\xe6\x115O>\xde\xa6>ODNN\xbeZ\x1ft\xb1!nM>\x0b&\xa1\xbcx\x94L\xbe\xa0d\x0b\x8d\x19\xc1K>\xdc(\'\xa1\xd5\xf3J\xbe|\xd5[\xcf\x7f,J>\xef\x02\x14<\xecjI\xbe~?\x17P\xf0\xaeH>\x839+\xafb\xf8G\xbe\n!\xfa.\x1bGG>\xeeB<\xce\xf2\x9aF\xbe\xd7\t#\xac\xc3\xf3E>\xc0\x8b\x03\x00iQE\xbe6\xbb>\x11\xbf\xb3D>Fce/\xa3\x1aD\xbe\xf6;\x96\xaa\xf3\x85C>C{\x14\xcc\x8f\xf5B\xbe\xe4A\x15\xcfWiB>\xfe?\xc2\xd9,\xe1A\xbep\x01p\xf6\xf0\\A>\x18l\x06\r\x87\xdc@\xbe.\x06\x9a\xdc\xd2_@>\xfd1i\xeaq\xcd?\xbe\xc2\x91\x97c=\xe2>>\x10\x9a\xc8d\xd4\xfd=\xbe\x9a\x07\xc1\xac\x04 =>\xa5M\xf2m\x9dH<\xbe\x9c\xc7\xbdCow;>2M\x07(L\xac:\xbe\xb6\xdf\x14i\x07\xe79>\x1c?\xb9\x9fu\'9\xbeS?\xc7\xa5lm8>\x83\xbd\xcb\x8c\xc3\xb87\xbe`&\x0c\x95R\t7>Y\x95\xc7$\xf3^6\xbe`\xa5\xb8\xbf\x7f\xb95>g\x14\xd6\xfe\xd3\x185\xbe\xd1dP\x88\xcc|4>\xf6\xb7\xca\x07G\xe53\xbe\x92.\xcd&"R3>Q(o\x85=\xc32\xbe\x01\xc47\xb3y82>\x94\x0c3(\xb8\xb11\xbe9M:>\xdb.1>G\x14n*\xc6\xaf0\xbe\x90v\xe0\xf6\\40>\x19Z\xdc\xf8\x08y/\xbe\xcca\x8a\xb9D\x90.>\xd1\x0b/\xf99\xae-\xbe\xbb\xdb\xf1\xfb\xb6\xd2,>i\x8f\xccu\x8b\xfd+\xbe\x9b\xca\xea\x7f\x88.+>\x16XX\x8e\x80e*\xbe0\xbc\xfbeG\xa2)>\xb5\xe5\xda\x12\xb2\xe4(\xbe\xf8\xd8\xa7\xde\x96,(>-?\x93G\xcdy\'\xbe\xf8\xd4b\xf7-\xcc&>\xf1\xc2\xc9\xba\x92#&\xbe\x8f\xf9\x00y\xd6\x7f%>\\\xb6\x9d+\xd5\xe0$\xbe/f\xa4\xd6kF$>\xc1%\xd6\x80x\xb0#\xbe\x0807,\xda\x1e#>H\x95\xcc\xcep\x91"\xbe\xba\xa1\x8fK\x1d\x08">If\x95k\xc1\x82!\xbe\x10\xe2h\xd7?\x01!>|V\x96\x10|\x83 \xbe\x81ZfkZ\t >\xd6\x96\x8e\x11\x80%\x1f\xbe\xaf\x88\xc7\xa0%?\x1e>\xb4\x9e\xc9\xd5r_\x1d\xbev\x1a\xbdx6\x86\x1c>g3\xcc\xbd@\xb3\x1b\xbe\xe8\xf5\x9e:c\xe6\x1a>{\xe8$\xdcp\x1f\x1a\xbeG8\xaa\xdc=^\x19>\x8f>6\xba\x9f\xa2\x18\xbeG@1-m\xec\x17>\x18YO\x1f~;\x17\xbe\xf9\x91\xbe\xa2\xab\x8f\x16>\xff2\x96\xe9\xcf\xe8\x15\xbe\xf7m\x85=\xc6F\x15>\x05\x8d\xbf\xf7j\xa9\x14\xbe\x80\xde#y\x9b\x10\x14>\xe5\xa3\x9f"6|\x13\xbepW\xc8M\x1a\xec\x12>"\xa7\xacE(`\x12\xbe\xf8\x90\xda?A\xd8\x11>\x1c\x17\x99UGT\x11\xbe\x8d\x0eT}\x1d\xd4\x10>\xdb\x958\x84\xa7W\x10\xbe\xe0\x97\x01\x10\x94\xbd\x0f>\x10\xd3\xda\xe1\xd4\xd2\x0e\xbe\xcf\xd3\xd7\xd7\xdd\xee\r>\x97\xf2\xcf\xc9|\x11\r\xbe5\xd2\x8d\x02\x81:\x0c>\x02\xe6\x175\xbbi\x0b\xbeB:Hr\xfd\x9e\n>\x824\xb1\x1e\x1b\xda\t\xbe\xc3\x12\xcd\xe8\xe8\x1a\t>\xb2\x00v\xbf<a\x08\xbe\xf9\xa9\xa4\xc8\xed\xac\x07>c@sX\xd4\xfd\x06\xbe\x89\xfbb\xe8\xc9S\x06>|&\xe2\x0e\xa9\xae\x05\xbe\xe6\xdd\x10wM\x0e\x05>\x14\xaf\xc2\xd8\x93r\x04\xbe\x8eU\xbb\xf0Y\xdb\x03>\x10\xe2$y~H\x03\xbeR\xa2="\xe1\xb9\x02>C-<\x8bb/\x02\xbe=\x03h;\xe4\xa8\x01>a=e\x9bH&\x01\xbe}\xd2\xb1\xeer\xa7\x00>\xc1\x02SMG,\x00\xbeL\x0cc;Ui\xff=lGF\x1d\x05\x81\xfe\xbd\xa6\xc3@#k\x9f\xfd=\xc0\x12J\xaaU\xc4\xfc\xbd3~t~\x94\xef\xfb=\x15\xffQ\xd0\xf8 \xfb\xbd\xc3\xa5\xa7*UX\xfa=_-mh}\x95\xf9\xbd\xa8\x87\x16\xabF\xd8\xf8=!>%Q\x87 \xf8\xbdY\x95\xff\xec\x16n\xf7=8n\x0b<\xce\xc0\xf6\xbd\x92\xf0\n\x1e\x87\x18\xf6=-\x18\xb9\x8c\x1cu\xf5\xbd\x03L\xa4\x93j\xd6\xf4=\xb24EHN<\xf4\xbd\xb7\x14P\xc2\xa5\xa6\xf3=\x8d\xf1>\x14P\x15\xf3\xbd\xb3\xe9\x12D-\x88\xf2=U\x1fKD\x1e\xff\xf1\xbd\x82\xab\x0f\xed\x04z\xf1=\xec\x18\x8f\xf5\xc3\xf8\xf0\xbd\xa8\xf0\x8c\xed>{\xf0=\xe4\xed\x1f7Z\x01\xf0\xbdf\xf0<\x01\xf6\x15\xef=o\x1cp}\x0e0\xee\xbd\x85\xa8tM\xcbP\xed=S\x08\x01R\xfbw\xec\xbd\xd8\t\x18\xd7n\xa5\xeb=p\xf3\x89\x89\xf7\xd8\xea\xbd\xabA\xc3lh\x12\xea=\x82\xc6\xe6\xd0\x95Q\xe9\xbd\xc4\xfc0IU\x96\xe8=\x1dr\xa2\xa2}\xe0\xe7\xbd\t:\xef\xda\xe6/\xe7=\x19k\xb1\x17j\x84\xe6\xbd\xba\xb6\xdc\x9d\xe1\xdd\xe5=\x1b:q\xc9(<\xe5\xbdW\xb4k\x05\x1c\x9f\xe4=B\\\xf1\xc3\x98\x06\xe4\xbdS\x9c\xb5v}r\xe3=\xf3\x08\x98\x87\xa9\xe2\xe2\xbd&\xf1xQ\xfdV\xe2=\x8d\xf5B\x19Z\xcf\xe1\xbd\xfc\x1d(\x07\xa2K\xe1=i\xf0\x10 \xb8\xcb\xe0\xbd\x96\x17<?\x80O\xe0=\x99d\x1a \xbe\xad\xdf\xbd\x9d\xdc\x12\x10t\xc3\xde=\xcb8\x01\xc2\xee\xdf\xdd\xbd\x01\xe9\xc2&\xfc\x02\xdd=M\x95o\xa1k,\xdc\xbd\t\xfd\xa6\xfc\r\\\xdb=^\xf0-`\xb5\x91\xda\xbd\r\x1c\xd8F5\xcd\xd9=\xe1n\xbctb\x0e\xd9\xbd/\xf2\xb1\xed\x12U\xd8=\xe0\xfe\x12\xec\x1d\xa1\xd7\xbdH\xca\xc4\xd7[\xf2\xd6=\x87Y\x81=\xa6H\xd6\xbd\x89\x03b\xc6\xd7\xa3\xd5=\x94\xd0\xa8/\xcc\x03\xd5\xbd\xb3M\xc7B`h\xd4=\x1a\xfd\xa1\xcdq\xd1\xd3\xbd\xd6\xcf\x10\x9b\xdf>\xd3=\x0f\xf2\x9fk\x89\xb0\xd2\xbdU\xc8\x9a\xeeO&\xd2=\xb75z\xbb\x14\xa0\xd1\xbd\xe7\x8d\xf2K\xba\x1d\xd1=_\x7f/\xf7#\x9f\xd0\xbd\xe8m\x8a\xef5$\xd0=\x0c\xa7\x82\x8b\xaaY\xcf\xbd]\xa6k\xf1\xcfq\xce=\x04\xff\x13D\xaa\x90\xcd\xbd[\x18\x18\xcb\n\xb6\xcc=@\xa2"\xf7\xc7\xe1\xcb\xbd7z\xdcE\xc2\x13\xcb=\x0c\xdd\xd1\xab\xefK\xca\xbd\xeb\xfc\\$v\x8a\xc9=\x87#\xc4o\xe9\xcf\xc8\xbdr\xef\x9e\x85\xda\x1d\xc8=\x97\xf7\\\xc8$x\xc7\xbd@M\x8c\xeb\xf3\xe7\xc6=\xb2#^\\\xc9\x82\xc6\xbd\x06\x95Y\xbc\xcaz\xc6=\xe8\',\x0b\xa1D\xc7\xbd\xc50\'um\xef\xc9=\xdb\x03\xf7\x07\x88x\xd0\xbd\xcd\xc4\x10\x87J\x00\xd9=')
elif order == 1:
return N.fromstring('/Y\x98\x1f\xba$\xfe\xb9&\x1d\x87\x7f\xb0\x94O:{\xd7\x0e#^]>:\x9co\xdb\xc8\xaa\xd2P:\xee\x10\xb8\x074NP:QQ\x16B\x88\xcbU:ce\x85\xdc\xb8@Z:\xae\xcdG\x08\xa6\x89_:\x18\x0f\x8e\xd6\x0e\xcbc:\xeay,\x9f\xfatg:u\xf77D\xe4\x82m:\xb3d/Sj\x8bq:\x1fFR\x1cK\xeau:klMswUz:F\xdf\xca\xff\x1d;\x80:\x91F\x9c\x9bJ\xcb\x83:\xed%L}\xa4\x08\x88:\x0b\xb5\xdb\\\x0f\xb9\x8d:!M\n\x97\xa6\xd5\x91:\xbc \xbe\x7f\x11?\x96:\xb4(\xe5x\x03\x8f\x9a:\xcd\x9d\x81+0\x99\xa0:s?t\t\x99\xd4\xa3:\x89s\x9b\xb9\xec\xb5\xa8:_\xbc\xd8W\x0c\xac\xad:\xd8\x85\xb0OJ^\xb2:\xd7\x056Zx6\xb6:\x03\xdbP\xa4\x10P\xbb:\xff\xde\xb9g&\x9d\xc0:\xbc\xf8b\xa7\xfcT\xc4:\xc9\xbb\xd8\xf8u\xd1\xc8:\x13g)\xe5\xf1N\xce:\xa37\xa2h\xcb\x84\xd2:\x19\xf4\xd91\x01\x9b\xd6:\x1a\xeb\xd5\r\x04\xa0\xdb:NI\xea\xcc\x19\xdd\xe0:&\xe5\xc9\x08u\x9a\xe4:G~\x90\xd5\x06)\xe9:\x19\x90(a\xf6\xbb\xee:RQJ\xf0\xae\xc4\xf2:r\x80\x89\x8e\xa3\xec\xf6:\xd7kO}\xd8\xff\xfb:\x94B\xdc\xf2x\x19\x01;RN\x16X\x93\xe2\x04;\xec\xffDOs\x82\t;\xa1e\x93l\x1c(\x0f;\xc2I\xf5=+\x07\x13;+\x9a\xd40t=\x17;ev2J\xf3b\x1c;:\xa3\x9a\xb0\xc4U!;\x966\x80\x95\x7f,%;\x07)\x94\xf7e\xdc);\x12h\x82\xe4c\x96/;\x81\x91\xb2\x01DJ3;\xe1T\xb1~\xb4\x8f7;)L\xc2\xaa\x0f\xc7<;\x0f\xdf#R\x1b\x93A;}\xc8\xc0f2wE;\xfc&\xcd\x97\xdd7J;\xeb\x14g\xd0\xf0\x02P;\xdb\xea\xdauu\x8eS;\xbe\xb4t\x96\xe7\xe2W;\x1b\x06\xc8\xb0\xc1,];\xf0\x80\x9b\xd7.\xd1a;#\x10k\xfb\t\xc3e;\xde2\xc7\xab{\x94j;\x03\xb3#\x18\x82;p;\x1d\xb4`\xf6\x8b\xd3s;>\xbe\xc8^J7x;\x8b\xa5\xe6c\xd3\x93};\x8b\x9e\xb0\x91 \x10\x82;\xbey\xf3(\xeb\x0f\x86;\xd2f\xf0\x08c\xf2\x8a;M\xb4m7\xdat\x90;\xfbY9}\x97\x19\x94;\xdeD\x96c\xd6\x8c\x98;\xb0\xa6C\x18R\xfc\x9d;\x07\xef\x9d\x1d\xf0O\xa2;h\xd2\x15\xc1\xdc]\xa6;\x7f\xe7\x8f\xe8\x94Q\xab;\x00\xc3\xaf\xcb\xfd\xae\xb0;7\xd8/U\x99`\xb4;_2\xb5\x06\x92\xe3\xb8;\xa9\xfb\x1dM@f\xbe;XP\xef\x0f\xa2\x90\xc2;\xb0"{\x92\xe0\xac\xc6;\x80{\xedl\x18\xb2\xcb;\x1a9 \xf9\xed\xe9\xd0;\x12\xacv\xfa\x96\xa8\xd4;q\x96\x14\xf0~;\xd9;\xbd\x90\x8e\x1b\xa6\xd1\xde;\xe9\x91Y\xbb7\xd2\xe2;t\xebk\x8d\xfc\xfc\xe6;>C\xd3\xa6\xef\x13\xec;\xa1\x9dH$\xaf%\xf1;iG"\xff\x91\xf1\xf4;\'\x9c.\xa7\xa3\x94\xf9;XV\x90\xde\x85>\xff;TMg\x00\xb6\x14\x03<bM.l2N\x07<V\x14\x04\xec!w\x0c<\xa9I=\x8bBb\x11<s\x7f\xf1\xeb\x8f;\x15<t\xaf\xd6\xf1\x01\xef\x19<\x10\x0f5\xf2\xe7\xac\x1f<P\x8d- \x1eX#<\xcdlu\x82\x88\xa0\'<\x12N\xf7\xfb\xb0\xdb,<\xde&2\xfb\xac\x9f1<5\xb8\xf3\xf2\x91\x865<\x8b\x96\xdb\x1d\xa1J:<\xc0\x14B\xf8f\x0e@<h\x83U\xabu\x9cC<s\xe7\xa3\xdb\xff\xf3G<\x07-_U\xa5AM<\x0b0\xf6\x1b\xef\xddQ<\xfb=\xcb\x92\x9e\xd2U<\x90\x15\xdb\xf1\x81\xa7Z<\xd8`\xdb\xe5 G`<\x93\xd65\x0c\xbd\xe1c<\x7f\xb6\xef\x17\xa0Hh<\xbe1\xf1S\xff\xa8m<\x91:\xf4\xc7\x0e\x1dr<\xde\xcc\x9d\xda\xb5\x1fv<\x1fkOl\xad\x05{<p]\xf4\xa2\xa1\x80\x80<\xe2Lk-\xfb\'\x84<\xc5\xf8I\xc6h\x9e\x88<7\xdfE\x9d\xc9\x11\x8e<j*\xe9u\x0b]\x92<L\xa7\x0f\xfe\xdfm\x96<3\xde\xael"e\x9b<\xf3Bd\x82\xef\xba\xa0<\x93\xc4q\xf5.o\xa4<""!\xa9c\xf5\xa8<m\x05t$\x02|\xae<\xc5\xacu\xaf\xec\x9d\xb2<\xfe\xe4\x86"\x1b\xbd\xb6<.v\'\x9a\xec\xc5\xbb<\xb2\xc2g\xe0\x08\xf6\xc0<\xab\xba5ha\xb7\xc4<Y\x03%\xe6\x8dM\xc9<t\xda|\xdf\xb6\xe7\xce<c#q\x01\xb0\xdf\xd2<\xa8\x06\x9a\x19r\r\xd7<\xc7\xf6\xa2\xca\x07(\xdc<\x88$\xf4 \xf61\xe1<5\x8e7\x03\x8f\x00\xe5<r\xaf\xae\x83\xf4\xa6\xe9<\xc2\x91n\xee\xe1T\xef<\x8a\xa3\xe1\x89_"\xf3<dK\x01\x00\xe0^\xf7<\x10?\xe7\xb8\x83\x8b\xfc<\xcc\x0328\xb3n\x01=\xfbx\x0e\x03\xc4J\x05=\xc4\xff)\xd6\x90\x01\n=\x8e \xc4^\x96\xc3\x0f=\xe4/\x99\xce\xf5e\x13=bJ\x92\xads\xb1\x17=O\x80\xbamW\xf0\x1c=\'\xa7t\xb8K\xac!=\x1b\x9d\xa6\x16\xf9\x95%=\\_\x7f\xebt]*=Mt\x9a#\xe4\x190=Wp\x8d\xe7\x80\xaa3=\xc0\x83\xf1u#\x058=\x00?\x8e\xed\x98V==\xde\xbf\xc8\xca\xb7\xeaA=\xb54`s?\xe2E=\xc8\x07\xa4\x14\x94\xbaJ=\xd2q\x17I\xc9RP=r\xb9l\x96\xf6\xefS=L$\xd4h\x04ZX=O\xe5/\xb37\xbe]=n_v\xec\x07*b=\xf1\xcc\x89\xcb\x89/f=\xbb\x91\xf1&\x08\x19k=\'\xd7\xb9\xeco\x8cp=p\xbeO\x1ak6t=\x8a\xb96U\x05\xb0x=M~\xe9~S\'~=\xfdd\x90Q.j\x82=\x0f\xa1\xa4\x07\xf1}\x86=\x82\x19\xe5\x02\xbbx\x8b=\x89\x89\x04\x9b\xeb\xc6\x90=4\xack\xba\xcc}\x94=\xceN\xee\xedD\x07\x99=\x17\x86$\xf2\xcf\x91\x9e=\xa8D2\x17C\xab\xa2=\xceB\xf7v^\xcd\xa6=\xa9\x00F\x8e\xd2\xd9\xab=\x06\xfb@1*\x02\xb1=M\xefcA9\xc6\xb4=\x999+:\xa6_\xb9=[S\xec\xe7\xdb\xfd\xbe=\x0fl\x99\x1c/\xed\xc2=OS\x8f\xf5\xf6\x1d\xc7=\x80\x0eD\xe1)<\xcc=aE\xde\xb0H>\xd1=\xbe\xc3\nA\x93\x0f\xd5=\x956\x10\xe4V\xb9\xd9=\xe0\xe0\x96uHk\xdf=,N\xa1V\x160\xe3=\xc4;&"\x95o\xe7==\xf3\xdf\x9f\xf9\x9f\xec=\x95\x1c\xcdT){\xf1=\xc9\xe2\x11Y\x07Z\xf5=\x8a\x8c7\x85\'\x14\xfa=\xd1"\xdf\xef[\xda\xff=i1\\\x0c\xd3s\x03>\x12\xd5\xb2lp\xc2\x07>\x14,\x8a\xc4\x05\x05\r>&\x00>\xd2\xf7\xb8\x11>\xe07\xc4\xcce\xa5\x15>\t^\xfa\x0c]p\x1a>\xdf\xaf\x9b6e% >\xa6@(\x9d\x9b\xb8#>\xf5\xdev}L\x16(>QiT\x19\xa4k->\xdc\x9e\xb84\x84\xf71>r\xf80M\xf2\xf15>\x06}0G\xab\xcd:>H\x14|b\x7f^@>*\xcc8\x803\xfeC>\x9a\xb1\xb7\xa8}kH>\xff\xd1\x19vt\xd3M>C\xf5\x05\x0e\x117R>6ro~`?V>\xc6\xe3}P{,[>\r\xd1f\xda?\x98`>g\xf1\x90\xb3\xedDd>G\xb3\x14\xa9\xa3\xc1h>\xd8\x10\xe5\xea\xf9<n>\x8a\x80\xaa\xf0Qwr>hI\x00\xde\x17\x8ev>\xc3=\xed\xcfS\x8c{>\xe4|\x9dU\xf8\xd2\x80>I\tN\xe0i\x8c\x84>Ok\xe3\x86?\x19\x89>+\x86\xeby\x9b\xa7\x8e>k\xdc6\xb7\xac\xb8\x92>\xca\x9cy\xe9\x9e\xdd\x96>\xe0\xc4\xb0\x84\xd5\xed\x9b>\xdc>\x83HH\x0e\xa1>\xb7\xf1~\xce&\xd5\xa4>\xb6\xa6\xe7\xbd\xb7q\xa9>\xe5)1\xf8 \x14\xaf>\xab>\'7\xa7\xfa\xb2>\x97/\xe8\xef\x92.\xb7>K1\xc1\xbc=P\xbc>|\xeeqT\xabJ\xc1>T\xe65\x0e\x89\x1e\xc5>"\xacy*\xce\xcb\xc9>L\xb2o\x8b\x91\x81\xcf>v\xdc\x92\xe8\xd8=\xd3>NU\x89\xff+\x80\xd7>\x924\x8e\xfaw\xb4\xdc>\n\x11R\x01\x80\x87\xe1>g\x16\x1a_Fi\xe5>\x0f\xe2|1|&\xea>\xfc \x98\xad\x02\xf1\xef>\xcd\xa5\x12Dj\x81\xf3>\xcak\x1dn:\xd3\xf7>\xf0A\xac%\x1e\x19\xfd>\x05-\xde\xb7^\xc5\x01?VCv\xa10\xb4\x05?\xbaO\xfaf\x97\x82\n?\xbe\xf6?Z60\x10?y\xe7\x86\x9b\xe5\xc5\x13?L<\x15\xff\xf4%\x18?\xba\\\x81\xf0\xc6~\x1d?\x84\xe8\x0f\x95\xaa\x02"?\xbd\xb0~>s\xff%?R\x01\xe2\xe9 \xdd*?t\x8b?\xd5\xb5g0?\x8a p\x0en\x084?8\xa3\xc9\x08Qw8?\xf6\xcb\x1dX\xd2\xdf=?;\x12\x12\x04\xc0=B?\xdb!\x0c\\cEF?\xa9\xcc\xb5\xed\xb01K?F\xaa\xd8\xb5)\x99P?\xb2^\x11\xc2\x83CT?.\x93\xcbJ\x11\xbbX?\xa9=\xe0@\x13/^?U\x0e9B\x9aib?\xa1#{\x0f\x9dvf?\xb9\xf4s\x13Hdk?O\xb2\x19\xd6\xe3\xb2p?@\xd6\x94\x19\xcfXt?\xd1Z\n\x85\x0e\xc9x?\xe5\xa5\x16\xa8m*~?,\xc3\xa7V\x06Y\x82?\x93<\x10\xf7\xe6J\x86?\xa1\x06\x17\xfa\xe1\x0f\x8b?\x03\xc4\xb1<\xf1e\x90?mn:\xed7\xd8\x93?i\xcd\x85\xdd\x01\xf5\x97?\xf5~\xb6\x9c\x0b\xdb\x9c?\xbd.(k\xf5P\xa1?\xce\xb2\x83\xf6(\xb5\xa4?\x80\xdd87\xd7\xa1\xa8?\x0f\xa3\xa1\x18\xe9!\xad?U\xd9\xbel\xa3\x16\xb1?D\xd5@b\x03\xdd\xb3?;\x1f\x83\t\xd3\xcb\xb6?Ybi\xe4v\xc4\xb9?\xdeu\x8f\x8c\xc7\x84\xbc?sE\xb8\x12\xdd\xbc\xbe?\x063\xd4\xce\xdd\xe4\xbf?n\xdc\xf9Kuh\xbf?\xc7\xfa\xb7\x9b\xf1t\xbc?\xae\xca\x18\xbe\x99Z\xb6?\x9e\xf9\x98\x8eg\xd0\xa8?\r\xfb\xbd*\xe8Lt\xbf\nXpX\xdb\xc8\xb1\xbfT\x0b\x08\xaa\xf1\x16\xc1\xbf\x85=\x8c\xe4P\xfc\xc6\xbf\xb3\x93\x13\x99\xdcH\xc7\xbf\xb0\xa0[\x87\xdb\xf8\xbe\xbfC\x9c\x96h\xc0\xb8w?\xa7\xf7\x8b\\F\xa5\xc3?N\xf5i\x89\xb8\x1b\xce?\xb7\xdbS\xb0{d\xc3?=<\xc0\x1a\xc81\xb5\xbf\xc0\x08\xd6\x9b\x97Z\xd1\xbf\xa1\xb4\x82qV\n\xc1\xbf\xbf5X\xcd\xc6\xb2\xcc?2\x80rp\xb4~\xcd?\xd8\x1a\x94RLw\xd0\xbfp\x8c\x08\x95\x14\xe3\xc2\xbf\xb3t\x10\x90\xcb\x1d\xd7?\x1f\xd1\x88\xba9,\xcf\xbfi\x1a\xef\xfb\xbf\x83\xa3?\xc9\xf8}/8.\xb5??gt\x12\x0b\xf1\xbb\xbfJ\xe6\\\xc2\xdc\xf2\xb6?T\xcc\xd8f~8\xaf\xbf\xfb\x1b\xd1\xdc\xaeZ\xa3?UB\x13a&\xfa\x96\xbf,\x8b\x80\xc4\xad\xf1\x8a?\xa7\xf7O\xe0\x15\xe8\x7f\xbf\xf9\xc4\x0cx#gs?\xb4\xff\x9at-\x8ch\xbf\xde\x877@\xd5H`?\xa5\x12EYm\xb9V\xbf\x96{\xa0\x90R\xa4P?\x05T\xc9\xdf:pI\xbf\xbcf\xb6\x18\xac#D?\x16TK&\nd@\xbf\xdd\x95xed>;?\xbdA\xe4t\x87\xfe6\xbf\x8c\xc4\xfec\xab\xa03?t\x1d\x97\x8c\x16\xe40\xbf\xec\xa3g](>-?I&\xb8\x8b\xa4k)\xbf=J;\x94,*&?\x87\xa4\xda\xe56^#\xbfA\x0b\xfd\xa9\\\xf3 ?\xeb9\\s\x07\xb4\x1d\xbf.\xc6X9\xcb\x0b\x1a?|\xf0\xba\x0b:\xda\x16\xbf\xac,\xc9\xb9\x0c\x0f\x14?\xdb4\xcf:\xa8\x9c\x11\xbf0O;j\x10\xef\x0e?\x9a\xe7\xcc\xc9\xa8+\x0b\xbf\x1b\x8f\xf8>%\xde\x07?\x86\xd9b2\xd8\xf7\x04\xbf)\xce\x87\x84\xffk\x02?J\xdcl\xb9{/\x00\xbf^\x03\xde\xa1)q\xfc>\xc0\xf3\xf2\x07\x93\xfd\xf8\xbe\x1a\x83\xf5\xc6L\xf5\xf5>\x08\xa0F\x10FK\xf3\xbe\xed@\xf8W\x08\xf4\xf0>\xd3\x94\x07\xab\x07\xcb\xed\xbe\\m\xdf\x04\xc6-\xea>\x08\x00\xa1\xc3\xc7\x00\xe7\xbe\x81\xd3TDl6\xe4>\x0f\x9fU\xf4\xba\xc2\xe1\xbe5\xc1\x80\x0b_6\xdf>\xa8\x13iB\x19m\xdb\xbe\xadJ\xd0Eh\x19\xd8>!\xb8EL\x08-\xd5\xbe\xd9\xd1\x94\xa9p\x9b\xd2>\xa6q\xe9\xff\x9dY\xd0\xbe\x01\xad\xe8\x11\xc6\xbb\xcc>\xb9Y\xd1%~?\xc9\xbeH\xe4\xf6\xfbr/\xc6>\x04\xaa\xccW\x83~\xc3\xbeQ\xf8d\xb9%!\xc1>\x86\x0b/\xdem\x1a\xbe\xbe\x15\x80\xad9\x9ds\xba>@;\xb6\x072>\xb7\xbe\xed8\xd6\xe3jl\xb4>QP\t\x921\xf2\xb1\xbe\x1eQ\x9df\xce\x89\xaf>\x92\xa5\xeftm\xb6\xab\xbemx\xf4\xc9\xd9Y\xa8>\xcc\x07\xfd&\xaae\xa5\xbe\x90\xcc&\xd34\xcd\xa2>\xe7\xc0\xe5TY\x85\xa0\xbe>\xfc\x12v\xa1\x08\x9d>I3\n_\x07\x83\x99\xbe\xbd\xa1vH\xcbj\x96>0\xb3\xd5\xf1\xa8\xb2\x93\xbe\xd5kU\x17\xf8N\x91>\xef\xd4@\xea\xf4j\x8e\xbe\xeb\x05\x8e\xb8_\xba\x8a>"i\x05=_|\x87\xbeP\xc4\x96P\r\xa3\x84>%(Xk3"\x82\xbe\xae\xd7^\x8d,\xde\x7f>\xaf\x96\xf1\xb6\x8f\x00|\xbe\x83\xf1\xb6\xed\xfd\x9ax>\xe5\xd8\xa6k\xe7\x9eu\xbe\xe1\tX\x9c\x80\xffr>\xe8I\tA\x8b\xb1p\xbe\xa2%\x0e|LVm>\x05\xd9\xc1\x83F\xc7i\xbe\x9e>\xc2\x1d\xc3\xa6f>\xcd\xbf(\x8eZ\xe7c\xbe\x88\xa7\xf0_E}a>\tQ\xfb\xccS\xbc^\xbe\xd1a0\xbf\xdf\x01[>r#\xb9\xec2\xbbW\xbe\xfe\xd1\x92\x00B\xdaT>\x95\xa9\x1b\xc5\xb5RR\xbe\x00\xb6p=\xb6\x19P>\x02\xa3"SxKL\xbev\xd4\x95Z\xd0\xdcH>\xe7\xd6\xac\xd6\xbd\xd8E\xbe\xf6\xfc\xed\xf6R2C>Ah\xa2h3\xde@\xbe\x15\x08\xc2F\xc7\xa4=>\x8aW\xd0:<\x0c:\xbeL\x04\xbaa[\xe36>5\x97D"\x99\x1c4\xbe\x9c(\xd6\x84\x0e\xac1>8\x98\xe2Z\x8c\x0e/\xbe\r\xe2\x9a\x0b\x1fJ+>q\xff\xa0\xaf\xae\xfa\'\xbe\xb6\x02i_\n\x12%>\xce\x0eh\xe2\xb9\x83"\xbeMn?:\xc8D >\xf5\xbcqS)\x97\x1c\xbe\xa3\xec!\xddR\x1f\x19>~XO\xfa.\x13\x16\xbe\xf8,\xc8D\xade\x13>\x97\xa7#\x06S\x0b\x11\xbe\x1eL!\x03\x14\xf4\r>eq\xf8k\xeaQ\n\xbe\x0f?F\xbe\x95 \x07>U\x83\xfc$fR\x04\xbel{\xc1\xd1T\xdb\x01>\xf4\x81x\xdc\xa0a\xff\xbdl=\x19\x9d\x1f\x93\xfb=\xb3\xb5BE\xd4:\xf8\xbd{sN\xf7gJ\xf5=\x8c\x14A\x1fA\xb5\xf2\xbd\xa9e\xf0nMp\xf0=\x1e\x19=\xcf\xa4\xe3\xec\xbd\xf2\x98\xf3J\x87b\xe9=\xf9dJt<N\xe6\xbd\xeb\xc5s\xf2\x90\x99\xe3=C\x9b\x8bY\xeb8\xe1\xbd5\xe4\xed\xe14D\xde=\xf0\xf4\xca\x03S\x98\xda\xbd\x9d,:\xe5s^\xd7=\xe4T\x07\x14\xc3\x88\xd4\xbdn\xb5\xa2\x95\x19\x0b\xd2=\x11uL\x9d\x93\xb5\xcf\xbd\xccu-x\xe3\xdc\xcb=\xff\xb6Dt\xa5{\xc8\xbd\x8dd\xedW\\\x83\xc5=I\xff]\xdaL\xe7\xc2\xbd\x9fvd\x0fG\x9c\xc0=\xc1\x98\xfa\xe3\xec0\xbd\xbdh|_\x80o\xa6\xb9=\xad\x1d\x1e\xe7\xe7\x89\xb6\xbd6lIo\xff\xcd\xb3=\xee\xed\x84\xa5\xfdf\xb1\xbdU\xad\xa2\x1a,\x95\xae=Ma@\xf5w\xdf\xaa\xbd\xbb\t\xdf\x8c\xf7\x9c\xa7=\x90\xc8;p\xb1\xbf\xa4\xbd\x0b\xb5\xa0"^;\xa2=\x05\x1f\x01x3\x05\xa0\xbd>\xdd\x80\xa7l\'\x9c=\xcd\t\xb9\x07$\xbd\x98\xbdn\x9cz\x14\xe9\xbc\x95=\x90j\x19v\xde\x19\x93\xbd_\x8f\x1eS\xb6\xc8\x90=\xda\x94%\xb5\x03\x7f\x8d\xbd ]J^\r\xeb\x89=\xbe?B\xf92\xc6\x86\xbdq\xd1\x96.\xfa\x02\x84=\x12\x12k0\x8b\x95\x81\xbd\xee\x01\xc0\xea\xfb\xe6~=\xf5\xcf#8[\'{\xbd\xf1\x81\xdbo"\xdcw=g\xa7\xa3\xbe2\xf7t\xbd\x1b\xb8\xa1\xce#lr=h)\xb1\x96\x0e0p\xbd\x13j\xe2:\xbdrl=\xef@j\xcfQ\xffh\xbd\xeb\xd1\x8f\xc4\x0f\xf7e=+%\xa1X\xf7Lc\xbdQ+\xd0t\x9c\xf5`=\x01O\xb9k\xeb\xcd]\xbd$]\xa2\xcab0Z=\x9c\xcd\xbfU\x1f\x03W\xbd\x1bU\x98\xa7\x828T=\x0b\x8d\xedC\x95\xc4Q\xbdr\xf9\xa1\x95\xa69O=\x89\xa2\x92\xc9\xfeoK\xbda2\x93M\xf6\x1bH=\x83\xfaZ\x88H/E\xbdQ\xe4\x0b\xf3k\x9dB=A\xc85Z\\[@\xbd\x12\x84\xb7G\xd7\xbe<=9\x1d\x0e\xa00B9\xbd\x18\xf6\x03\x04\xd216=8\xbd\xd2\xeb\x98\x803\xbd\x19er\xb2\xfa"1=\xf1\xe6\x896\xa6\x1d.\xbd2gs\xb0qv*=x<\x0e\xac\xae@\'\xbdLhlU\x9an$=\x17R/-\x1d\xf4!\xbd\t\xb9\xc0d.\x8d\x1f={\xc0\xff\xabd\xb9\x1b\xbd\xfak\x0e\xeat\\\x18=J\xd1\x93Z\xf4g\x15\xbd\xc0\x99\xe4\xec7\xcf\x12=5T?\xf5\x1d\x87\x10\xbd\xa9\x11\xf8\xe8\xbc\x0b\r=\xa0W9S\xc2\x85\t\xbd\xe5D\xf9r1m\x06=itW\x9d\xc4\xb4\x03\xbd\xa8\x07TM\xd2P\x01=&\xec?J6n\xfe\xbc=\xe9\xe5\xff;\xbd\xfa<Z\xe7&\xb0\xe2~\xf7\xbc\xb2\xf4*\xb7B\xa5\xf4< \x02\xd0<$$\xf2\xbcbX\xaf\xa7\x95\xe1\xef<\xb2\xf4:\xe7\x8e\x03\xec\xbc\x04\x92\x0f\x0e\xa0\x9d\xe8<\xc8G\xa9\xc67\xa1\xe5\xbc4D\xd7\x1c\x89\x01\xe3<\xa1\xfd\xb0\x9dT\xb3\xe0\xbc\xad\xec;?pY\xdd<i\xd7t\xc7\x08\xca\xd9\xbc\xec\xd6\xec\xb5/\xa9\xd6<\x02n\xaa\xde{\xe9\xd3\xbc(\x19\x1e\x8a$\x7f\xd1<\xe4\xb7i\xe1\x9d\xbf\xce\xbcK\xf6R\xae\xc3\x04\xcb<\xfdh\x92\x1a\xbd\xbd\xc7\xbc\x85$\xecO}\xdc\xc4<+\xe0\xf2\xc6\xabT\xc2\xbcO\xcb\x17Zo\x1b\xc0<\x92\xe9\x83\x88\x7fN\xbc\xbc\xec{\x1f\x87y\xdf\xb8<E\xa8\'b\x14\xdb\xb5\xbc\xd4Z>\xe7`4\xb3<;R\xab\x8c\x01\xe0\xb0\xbc\xc8\x04\xcdp\xf3\xa7\xad<\xdf\x0bJ\xe0\x05\x0f\xaa\xbc\x00]\xc0u\xce\xe5\xa6<\x1b<#%\xc0\x1e\xa4\xbcz\xb0\xde\xb0\xf2\xad\xa1<\xc6\x0b\x8d<\xdf\x11\x9f\xbc\xf9\x1eQ\xb6\nM\x9b<\x19\xd0s\xa8?\xfd\x97\xbc\xae\xf2\xd3\xa6K\x14\x95<\x8f\xadI#\xb5\x85\x92\xbcY\x8d!\xf3\x85F\x90<\xfa\x91\x97\xa28\x9a\x8c\xbc\r\xb2\x99\'\x03"\x89<iq\xd8\xc6\x8b\x15\x86\xbc\xe2\x11.\xb4\xc0g\x83<\xac\xc7\x94\xfe%\r\x81\xbc\xefq\xb5\xa9H\xf7}<q\xfbO\x86\xbbTz\xbc4m\xc6_\x0f#w<\xc7|\x00\xea\x92Tt\xbc7\xa3\x11\r>\xddq<p(6\xa2\xfcdo\xbc\xe3\xb8\xc2\x17\x13\x96k<\xb3\t\x96\x1bl=h\xbcI\x19\x1eG\xafLe<\xc09\x1f\xadA\xb7b\xbc\xdc\xa6\x1f\xd0\x0fr`< \xa6\xc3M\xbc\xe6\\\xbcxZ\xbf\xc6>eY<\xa5j\xd4\x92\x9fPV\xbc\x9f\x00\x86\xef\xa9\x9bS<\x88\xae+3\xc3:Q\xbc\x8d\xa3\xe4\x1brGN<RpQ\xa7+\x9bJ\xbcs\x1d\xe9%\xf4`G<\x0f]\x8e\xaa\xf5\x8aD\xbc\xd3\x18\xc6\xed\x07\rB<V<>_\xf8\xb8?\xbc\xd2<\x14\xd8\xde\xdf;<pZ\x9f:D~8\xbcD\xb6D\xc0\xa9\x855<\xd5\xf5o\xc3R\xe92\xbc\x05\x9cp%\x0e\x9e0<\x16\r\xde\xa7\x0c4-\xbc\xd9\x81\x95@.\xa9)<\xf2\x06NhQ\x8c&\xbc2X\xad\x08\x1e\xd0#<\xba=9m\xdah!\xbc\xec\xea\x8a\xfeq\x98\x1e<\xebM\xa45X\xe2\x1a\xbc\xb5k\x03~~\x9f\x17<\xc8\x97\x89\xe7\xe9\xc1\x14\xbc\xf8\xa3\x14\xa5Q=\x12<\xa7M\xfab\xea\x06\x10\xbc2\xd9\xba\x01p*\x0c<\xb3\xa8\xfb\xd0\xc9\xbf\x08\xbc\x0e\x8bg\xa6<\xbf\x05<\x03\x90\xd8\xc9\xe9\x1b\x03\xbcf\xb8\x1f,\x82\xca\x00<\xdd\x01B\xd8+\x82\xfd\xbboH\xd3z\xd3\xed\xf9;znE\xf3\xa2\xc8\xf6\xbb<\xfc\xd2x\x1e\x05\xf4;\x89\xc1\x1a\xf9l\x97\xf1\xbb\x07\x1b4\x9bJ\xea\xee;\x93\xcb\xcb4C*\xeb\xbbe6\x9c-\xb0\xde\xe7;\xf1\x98\x98/q\xf9\xe4\xbb7\xe5\r\x91\x1cn\xe2;\x9f\x988\x1e\xca1\xe0\xbb\x86\x01\x9d\xae\xc8u\xdc;4\xa8\x14\xb5\xfe\x01\xd9\xbb\x84\r,\x94i\xf9\xd5;\x04\x14\x1c&\x08O\xd3\xbb\x8cj<\x1bm\xf7\xd0;q>\xe0\xfa\x1b\xd1\xcd\xbb\xf4\x0e\x84I03\xca;u\xe1U\xc9\x95\x05\xc7\xbb\x00\x1a\xc6\x9f\xac:\xc4;\xf0[\x98\x08|\xc6\xc1\xbb}7\x14\x07\xfe<\xbf;\xde\xbf{w\xeer\xbb\xbbj&\x14\xcf\x8a\x1e\xb8;3[\x86\xed\x8c1\xb5\xbb\xe4Mz\xf4i\x9f\xb2;\xb5\xfb\xc2\x82\x1c]\xb0\xbb\xd5\xb0}\xea\xea\xc1\xac;\xc1b\xc7\xc5\xe4D\xa9\xbb\x9b\xe2\xffC24\xa6;7\xad\xbft\xaf\x82\xa3\xbb\xafb\xf2u\xd0$\xa1;}\xa95\xe9\xdf \x9e\xbb\x13U\x04]Gy\x9a;\x8c7Vt,C\x97\xbb\xe5\x19\x99\xe2\xcap\x94;%C\\\xdc\t\xf6\x91\xbb\x03\x8a\xf6v\x90\x90\x8f;\xcc\xb7f\xdd]\xbc\x8b\xbb<\x13\xaa\xe1\x11_\x88;0~\xbf5@j\x85\xbb\x87\xa7\xc7r<\xd1\x82;[!\xca\xc1\xe3\x88\x80\xbb\x0e"\xb97\xda\x0e};viz\xad~\x88y\xbb"\x17M\x93\x98ov;\x8fH\x96\xd5\xe0\xb6s\xbb>z\xc3\xb3\xacRq;r\x1erxwqn\xbb\xca\x04p\xb2\x17\xc0j;`3\xa6ce\x81g\xbbz\x80\x9drw\xa7d;\xaf\xd6g\xb9\x14&b\xbb\xee\xf2Z@\xff\xe4_;\x93D\xe3+\x90\x06\\\xbb\x7fw\xed=F\xa0X;\x98\xd3A\x91\x8e\xa3U\xbbT\xf8f\xd4\x9a\x03S;\x9b\xd4A\\*\xb5P\xbbq$\x06\xc2\xb3\\M;wn\xdd4\xf2\xccI\xbb\xc4\xc1\xce\x0c\xcb\xabF;sjel\xd3\xebC\xbb\xaf\xed\x0f!A\x81A;\xb9R\xbb+p\xc3>\xbb\x1c\x03M\xc6;\x08;;\x94\xff\n\x8d\xe5\xc07\xbbi\xa3f\xbb^\xdf4;CI\x93\x13MW2\xbbQ\x03\xa9\xe4\xd5\x1d0;\xa4JH\xe4\xdeR,\xbb\x8d\xba\xfb\x15p\xe3(;*\xe5\x9ee\xa4\xde%\xbb\x0b.\x88\x81\x8a7#;\xb72\xbe\xb1\xc3\xe2 \xbb9M\xaa\xbd\xa6\xac\x1d;\x86\xed\xd1v\xe8\x12\x1a\xbb\xc0\xd2\x0b\xce\xe4\xe8\x16;\n{E8\x14!\x14\xbb\xd1p\xe5\xe7\x94\xaf\x11;y(\x88h\xee\x13\x0f\xbb\xc7n\x19!\x1fN\x0b;\xb4\n\'\xfd\x9a\xfd\x07\xbb]\x95\x07\x94/\x14\x05;\x9bX\x93\xa1\\\x85\x02\xbb\x99\xc5\xb0o!F\x00;\x82\xf4\x1d\xcf\xa2\x99\xfc\xbaL5"\xc1\xda!\xf9:\xb55\x81\xe1\x00\x16\xf6\xba8\x16B\x9a\xffh\xf3:\xc6]6\x11[\x0f\xf1\xba\x90Y\xa7R\xf8\xfd\xed:jYxq\x02^\xea\xbaI\xdbPo*/\xe7:\'\xed~\x1e\x9cc\xe4\xba\xdcV\xed\xc0"\xef\xe1:U\xbdpq\xf6\x8d\xdf\xba\x93\xd9v\xadU\xc3\xdb:\x8e\xa0\x0c\xd7\xb3m\xd8\xba^:\xc3\xf5f~\xd5:\xc2\x18w`\x96\xe8\xd2\xba\xdf\xe3\'\xd3\x11\xa1\xd0:\xf65S\xa2\\<\xcd\xba\xe7\xfb\x02\xebA\xaf\xc9:ox\rq\xa4\x8c\xc6\xba\x91;\x93\xdeV\xc8\xc3:\x8e\x1c\xf3\xd9\xcaW\xc1\xba\xfet\xfa\xb1vc\xbe:UDC$\xce\x9b\xba\xba\x02}\xaf\x02\xbbI\xb7:[|\x88\x9c\xc5_\xb4\xba\x1b\x16a\xaf\xcf\xd1\xb1:\x93\\\xb9\xa8!*\xaf\xba\xd3\x07=E\x00@\xab:\x97\xf0u2H\xd4\xa7\xba\xd0\x18Z\xf7\xbe\xd7\xa4:6x\xf8\xf8\xa9<\xa2\xbau\xc1\x9f-\x90\xed\x9f:\xaa~\xd0\x97\xa7\xf6\x9b\xba\x8fj\xbe\xbd\xd0\x81\x98:\xe0\xb8J\xe6\xa5~\x95\xba\x1ft\xb7C\xe1\xde\x92:[\xa1d\xd2>\x96\x90\xba\x8d&A\xdd\xa14\x8d:\x94l\xc99P\xc4\x89\xba\x97M*\xb8\xc0\xcb\x86:PW+WU<\x84\xbarN\\\xc6\xd7\x07\x82:\x9e\x89"\x00+ \x80\xba>c\x80\xaf\xeb\xee|:u\xcb\xb3v\xee\x00z\xba\xf2\xec`\x8b\xc7]w:\x9bl\xff~$\xf0t\xbaO\x15\n\x16\x1f\xa8r:f\x86/\xae*}p\xba\xf23\x9a\x1f\xa1\xdcl:@\xaf\xa9\xbd\x07\x00i\xba\xccN=W$pe:\xda\xc6\xc3:\x0e3b\xba\xb5\x9b\x96\x1df\x8c^:\x17\xa3^\xa5\x8dEY\xbai\xd2\xec\xce\x0e\x8bT:\x1f\x03\x0b\xb4\xd4cP\xbaE{a\x17\x99\xb6I:}\x80\x88\x80f\xe6C\xbaqo\x06\xc0\x03w>:\x01\x9a\xde\x1c|\x0c7\xbak8\xc4\x9a\xd2,1:8\xado~~\')\xba\xa1\xdaO\x84\x1fH":\xf9+\xb3\xf31\x8a\x1b\xbaU*(\xf6s\x90\x17:\x8d\\\x8b\xcd[\xde\x18\xba\x80]\x83\x06\xc4[\x1f:\xa7\x88~u\xb8F%\xba\xda\x91\xe2DY\xcc,:\x11S\xa9\xac\xd5\xd32\xba$H\xe1q\xbc\x977:\x0bIm;\xf8j<\xba\x93#\xa4@\x90\x93@:\x9e\x85\xb4ob\xe1B\xba ^-\xb8\x05\x1cE:\x8d\xc2\xad\xed\x8d5G\xba\xca\xaf\x1d\xbf\xc8\x12I:\xd8\xb1n\xcf\x01\x94J\xba\xe6c\xea\x92\xe9\xa1K:\xb4\x13M)\x827L\xba2\x10\xb8\xd0\x08eL:P\xc1\x12\x8d\x0fKL\xba\t\xac\xbd\x89\xd3\x10L:R\xd9\xea\xde\xc9\xdbK\xba;x\x13:\xbe\xccK:\xee\x9f\x05Ko\x01L\xbaO\xd5+t\xcc\x94L:')
else:
raise NotImplementedError("%d-order Hankel transform "
"not implemented" % order)
def hankel_points():
"""~30x faster than hankel_points_ascii"""
return N.fromstring('`\rC\x94r\x199=\xb5\x8dn\xc17\xbd;=1h34\x0f\xa8>=\x02\x02X7\xb9\xf0@=\x9cb\xeb\x18\xd2\xb8B=\x92-\xdb\xd3\xe2\xb0D=\xa1H\xcd\xe3\xf6\xddF=\xba\x02\xfa\x97\xa1EI=\xc9\\!\\\x0c\xeeK=\x04^\x1b\x82\x06\xdeN=\x82=;Z\x8b\x0eQ=\x8b\x11l\x1f\xc7\xd9R=\\\x8e\xc3.O\xd5T=[\xc2\\\xe57\x06W=u)\xffb\x1erY=dy9\xec6\x1f\\=\x89\x83\xbc\xcf\\\x14_=\x054\xd8\xfb\x91,a=\x96o\x03*\xf6\xfab=\x12\x9d\xc4\xa7\xfb\xf9d=O\x06N\xc3\xbf.g=\xd6M=~\xe9\x9ei=\xe5\x02\x08\t\xb8Pl=\xee\xfcQ\xc4\x12Ko=\xfa\xb5\x97x\xcdJq=qO\xd2\x9e_\x1cs=7\xd9\xbc\xaf\xe8\x1eu=dp^\xfa\x8eWw=\xb1A\x90s\x03\xccy=ow\xe8J\x90\x82|=\xcfP=\x08)\x82\x7f=\xfd?\x85->i\x81=\xc0K\xad\xe4\x03>\x83=\xa2rQ\xb8\x16D\x85=G\xf2&\x08\xa6\x80\x87=\xb3\x84\xc6\xcdl\xf9\x89=\xd0\x88BK\xc0\xb4\x8c=xn\x08E\xa0\xb9\x8f=<\x19Px\xe4\x87\x91=\x96\x03\x1ec\xe3_\x93=@\xa7\xef3\x86i\x95=\xf7\x95\x1dk\x05\xaa\x97=\x8c\xef\xa2\x18&\'\x9a=\xa1\xf4\x8b\xa4H\xe7\x9c=\xa4\xb7g%y\xf1\x9f=\xc4sL\xb7\xc0\xa6\xa1=\x1aYd\x82\xfe\x81\xa3=A#\xce\x957\x8f\xa5=\xfa\x02\x97\xa2\xad\xd3\xa7=\x17b\xde\xe0/U\xaa=\x9f_J\xf2)\x1a\xad=\xed\x06\x9e*\xda\x14\xb0=\xd1\x8etI\xd3\xc5\xb1=^\xb2w\xabU\xa4\xb3=\xadc\xeeQ+\xb5\xb5=A\x06\xc8.\x9f\xfd\xb7=yt)\xb4\x8a\x83\xba=b4\x15\xd1dM\xbd=\xbcq\xca@)1\xc0=&\xdbi\x8e\x1c\xe5\xc1=s<\x08H\xe9\xc6\xc3=n\x1b\x1e\xdda\xdb\xc5=\xb7\x1c\xc7\x90\xda\'\xc8=(+.!7\xb2\xca=9\x85\x97\xde\xf9\x80\xcd= (Y,\xaaM\xd0=P!v\xe6\x9c\x04\xd2=\xa00\x80\xc2\xb9\xe9\xd3=\xc2\x9a\xf8\xac\xdb\x01\xd6=\x8b\x00\x8eJ`R\xd8=\x02\xae\x91\xb75\xe1\xda=r\xf1\x91\xb9\xe9\xb4\xdd=\xd5\x94\x03E]j\xe0=\x0c\xaa\x8c\xb2T$\xe2=\xf6\x1b\x05\x86\xc7\x0c\xe4=<9\xe87\x99(\xe6=;9\xfb\xde0}\xe8=h\x02\xf6\x07\x87\x10\xeb=\xf3\x8d\xdc\x015\xe9\xed=n\x8f\x1d\xe3B\x87\xf0=\x9chKTDD\xf2=\x03)y\xfe\x120\xf4=)\xc2\'\xf5\x9aO\xf6=O\xae\xd3\xd1L\xa8\xf8=V\xc8\xfb\xa3+@\xfb="\xd1hX\xdc\x1d\xfe=)l\x96_[\xa4\x00>>\'\xfc-ld\x02>\xe3k|\x98\x9cS\x04>\x8a\xe3\xc3\\\xe1v\x06>\xec<\xc4\xa7\xb4\xd3\x08>\xa0\xfaC\x1e$p\x0b>F\x82C_\xe0R\x0e>\xaa\r\xfa\x13\xa7\xc1\x10>\xa9\xb5\x95\xa2\xcc\x84\x12>\x900n\xc1dw\x14>\x8d\x9f\x9c\xe7l\x9e\x16>(Pc\xe6h\xff\x18>0\xb2q\nq\xa0\x1b>9\xac\x96\xb9A\x88\x1e>\x91\xf8qZ&\xdf >\x9e\x19\xbd\x15f\xa5">wKn\xe7k\x9b$>\x8c\xc0f\x0f>\xc6&>(|2\x14j+)>i\xec+\xfd\x12\xd1+>\x98\x93\xab\x0b\x01\xbe.>\xf6h\xc6\x8d\xd9\xfc0>\x99\xc1\xc6\xeb8\xc62>kl^y\xb2\xbf4>\xa0O\xadNU\xee6>\x17\x1c\xa0\xb8\xb8W9>\xa2T\x1f\x8c\n\x02<>X\xb0\xec\xfa\x1e\xf4>>\xcdi_\t\xc1\x1aA>\x94\xb9\xb7\x89E\xe7B>\xe3s\xe3\xe68\xe4D>\xc6\r\xd3 \xb3\x16G>\xfa\xf2\x08\\U\x84I>\xd3\x10\x00NX3L>\xe7\xaa\xe7-\x9c*O>;\xeeE)\xdd8Q>\xf1\xe1FU\x8c\x08S>\x96\xcaf\xa0\xff\x08U>\xa0\xef\x13\x02X?W>Z\xcf\xb9\x87@\xb1Y>c\x91\x8b\xda\xfcd\\>\xc2\\OLya_>\xd5\xec$J.Wa>\x85(\xde\xb4\r*c>s\xbb\x17\x17\x07.e>\xcb\x9b\x86oDhg>\xd71\xf1\xc5z\xdei>*d\x8a\xca\xf8\x96l>\x93\xd4\xfd\xfe\xb6\x98o>\xd3|J\xc9\xb4uq>\xc8\xc3\x9b\x0f\xcaKs>\xf6\xcf\xec\xbcOSu>\xd9\xeb\x1d\xe7x\x91w>\x99\xf6\xe0\xa1\x04\x0cz>\xa0\n\xd2\xb7L\xc9|>\xd7]\xf6\xefU\xd0\x7f>7\xf5\xa8\x04q\x94\x81>3pS\xcd\xc1m\x83>\xe5.\xa5\x04\xdax\x85>\xf3o\xaa\xe7\xf5\xba\x87>\xbd\x01\xb0\xa7\xde9\x8a>]\xd3F=\xf9\xfb\x8c>\x13\xc63e+\x04\x90>\xf7\r\xd8Zc\xb3\x91>\xcf\xaf\x8fV\xf5\x8f\x93>\x7f\xfd\xc9a\xa6\x9e\x95>(\xf5\xdb\xf0\xbb\xe4\x97>\xa8\xee{d\th\x9a>\xc2\xb6\xdd\xf6\xfe.\x9d>\xff\xa4V\x1d] \xa0>\x11\x03\x16+\x8c\xd2\xa1>\xe8\x0b\x93\x14e\xb2\xa3>\x01\xc3\xafH\xb5\xc4\xa5>]\x0eC\x83\xcb\x0e\xa8>U\xc2Zf\x85\x96\xaa>\xfc6\x9e\x81^b\xad>\xa2u)w\xc0<\xb0>\xb6\xb9H\xd5\xeb\xf1\xb1>\x0cYYq\x11\xd5\xb3>\xb9\xcew.\x07\xeb\xb5>\x01\xa0R %9\xb8>\x9c\xa0\\<S\xc5\xba>CC\xa4{\x18\x96\xbd>\xab\xa1\n\xcaUY\xc0>g\xe7\xfe\xb9\x82\x11\xc2>4\xfd\x98\xd7\xfa\xf7\xc3>\x7f\xa0\x11\x89\x9c\x11\xc6>vnaJ\xc9c\xc8>\x8a\x84\x8dvs\xf4\xca>\x81\x1e"\x84-\xca\xcd>o_\xf2m\x1dv\xd0>(;q:Q1\xd2>68\xc4\xb2!\x1b\xd4>\xadS<\xcfu8\xd6>/\xaf\xab\x84\xb8\x8e\xd8>\xaa\xfb\xf6\xa5\xe6#\xdb>?Ib;\x9e\xfe\xdd>\xa3\xc0s\xbb\x17\x93\xe0>\xae\x88\x83\xb8WQ\xe2>ln\no\x86>\xe4>\x90\x0c\x88x\x93_\xe6>\x98\x9cTS\xf3\xb9\xe8>i\xe4\xa1\\\xadS\xeb>\xf6n\xc9Bk3\xee>\xf6\xc2\xbd\x0bE\xb0\xf0>\xaa\xf5\xc5\x96\x96q\xf2>\xaduYy)b\xf4>ehW\xfd\xf5\x86\xf6>\xbe\x0ch;z\xe5\xf8>\x84/\x98-\xc8\x83\xfb>\xc6V\xd8<\x95h\xfe>\x8cb\x9c\xb8\xa5\xcd\x00?")v8\x0e\x92\x02?\x8f\xe4^?\x0b\x86\x04?\xde\xef\xe0\xd6\x9d\xae\x06?\xd2\n\xdc\xc2M\x11\t?\x9b\xa4\xe6\xac7\xb4\x0b?\x9e\xd7-\xcd\x1c\x9e\x0e?]\xaey\x1c:\xeb\x10?\xda|\x80\x01\xbf\xb2\x12?\xeec\x89/,\xaa\x14?\'\x8c0\x7f\x8b\xd6\x16?gs\x92pn=\x19?\xc9\xa9\x9eo\xfc\xe4\x1b?\xc0\xcf\x88\x98\x02\xd4\x1e?s\xde^\x92\x02\t!?\xdf0\x81V\xa9\xd3"?\xd1\x02\n\xb9\x8c\xce$?\x8b\xfe(q\xbf\xfe&?\x99\x93Z\xcc\xdci)?w\x0e\xd8\x0b\x17\x16,?\xd5\x1f\xcaDG\n/?\x1el\xf5u\xff&1?,\xa1\xc5\x9c\xcd\xf42?\x9b\x8c\xd5K-\xf34?\xa2Z\x85(:\'7?\x00\xcb\xf2^\x99\x969?C\xd9\xb2\x18\x88G<?k\xa9\xf6x\xeb@??\n,\x88#1EA?n}M:,\x16C?\x9f\xe1\xa5X\x0e\x18E?%\x83\xda!\xfcOG?\x910\n\xb2\xa4\xc3I?$\x19Y.PyL?\xffP9\xdd\xefwO?Mj\x04\xf8\x97cQ?\xf1\x02\xcc\x95\xc57S?\x0bR\xfbP0=U?Q\xa9\x98\xda\x05yW?X:BP\xff\xf0Y?\xb5\xb9\x00\xe6o\xab\\?\x8b\x03\xe5\x1aU\xaf_?e\x08\xfbP4\x82a?\xb18\xa9\x16\x9aYc?>\xfb\x1d\xa7\x93be?\xfa\xce\x0c\xd1W\xa2g?\x1dh0\xc5\xa9\x1ej?\xb8Z\xed\xd9\xe7\xddl?\xa3\xbfv\xdc\x1b\xe7o?.\x9d\xa1\x8c\x06\xa1q?\x9c-\x03%\xaa{s?z\'\x1f\xce8\x88u?AKb\x84\xf2\xcbw?\x06\xf1_\x9d\xa4Lz?\xe8*r\xa5\xb8\x10}?\x18\xd1\xcbf\xa2\x0f\x80?\xd7\x96\xd3\t\x0f\xc0\x81?\x029\xaf)\xf6\x9d\x83?\x10\xb0\xda9 \xae\x85?\xf7Q\xa4t\xd6\xf5\x87?\x1atSf\xf0z\x8a?\xf8\xc5\xf3\xe4\xe2C\x8d?]{\x8fM\xe8+\x90?\xcd^\x13(N\xdf\x91?6=;\x8e~\xc0\x93?\xe8a\xf8^J\xd4\x95?\xaa}\xbf"\x04 \x98?\xc4\xab\x86\xae\x8d\xa9\x9a?\xe6\x15\xea5gw\x9d?\xac%\x8a\xf9_H\xa0?\xb2\x7f\x8bG\xc4\xfe\xa1?p\xec\xee\xbcC\xe3\xa3?\x94d\xed\xb2\xb7\xfa\xa5?z\\\x83\x10|J\xa8?e$p\x05}\xd8\xaa?\xaa7\xe26F\xab\xad?-\xc4X\xc2\te\xb0?T\xcd\x0f\xc9q\x1e\xb2?\xe0\x0f\xcd F\x06\xb4?\xc4\xa3\xfd\xabh!\xb6?\x8e\xff\xa3\xc0>u\xb8?\xca\xf5\x82\xfb\xbe\x07\xbb?\x1bc\x80\x87\x80\xdf\xbd?\xbd\x852\x00\xe6\x81\xc0?\xa6\x8e\x1e\x0eW>\xc2?\x05\xd1\x94%\x86)\xc4?C;=\xc1]H\xc6?^\x8d\xbb\xb6L\xa0\xc8?\xc4\x7f0"T7\xcb?I\xd6\x81\xc8\x16\x14\xce?t\xe3\xe9\x0b\xf5\x9e\xd0?\xd6\xa9\xe1xt^\xd2?L\x05\xc37\x04M\xd4?x\xe5\x91j\x97o\xd6?\xbb\xd6Kw\xa6\xcb\xd8?\xcd)\xea\x0b=g\xdb?8\xc4\xbe\x9b\tI\xde?\x06\xb2\xed>7\xbc\xe0?g\xd2/l\xca~\xe2?\xf2{\x93\xc4\xc0p\xe4?bl\xb4 \x16\x97\xe6?\x9c\xee\xbf\x87L\xf7\xe8?\xb4%#Lz\x97\xeb?\xf0F,\xa4Y~\xee?\xf94J\xf3\xac\xd9\xf0?b\xb9\x8dKY\x9f\xf2?5N\x02:\xbc\x94\xf4?$\x1d2]\xda\xbe\xf6?\xbf\xc4mn?#\xf9?q5Rw\x0c\xc8\xfb?\tU\xde\x85\x07\xb4\xfe?\xcf3\xaa\x83V\xf7\x00@\x9d?/{!\xc0\x02@\xcd1\xcd\x06\xf7\xb8\x04@\x1c>n\x9a\xe4\xe6\x06@\x11\xc3\x97\xb2\x7fO\t@\x07t\xf3"\xf4\xf8\x0b@\xa0\xba\t\xe6\x13\xea\x0e@\x0c\x11XK4\x15\x11@!\xaa\xf8_#\xe1\x12@\xc5\xcdt\x9aq\xdd\x14@\x8f\x87\xa3S5\x0f\x17@\x01nn\xdc\r|\x19@\x9d!\x8a\xe51*\x1c@\xd0\x15\x06k\x7f \x1f@.\xe3>\xa6F3!@\xab\xd8\x7f__\x02#@\xa1\x11>e,\x02%@\xeb\x9e\xe5\x04\xcd7\'@\x9d\x07\x12u\xea\xa8)@\xb2r\xa2V\xc6[,@\x9e\xd6O\xbcJW/@\x93\x8f\xeb\xf0\x8dQ1@S~\r\xe0\xd5#3@\xe9\x8e3\xd8\'\'5@\xa6\x94"+\xac`7@\xa05\x94\x06\x16\xd69@\x90b\xd3\x0e\xb2\x8d<@xB\x8a\x82v\x8e?@N\xe7\x8d\x88\npA@U\\\x9eH\x87EC@\r\xd5&edLE@\xb8d$D\xd3\x89G@V\xaa\xf9\x1b\x91\x03J@\xdb\x88\xc0\xa7\xf5\xbfL@+{\x81g\x03\xc6O@\xf1\xc5\xf9\xca\xbc\x8eQ@\t\x7f\xe4\x00tgS@\xb1\xcf\xb1~\xe2qU@\xc2y\x92\xceB\xb3W@\x81\xd0;A\\1Z@x\xf2\x1b\xbc\x91\xf2\\@\x84\x89,\x16\xf2\xfd_@X2\xa8\x16\xa5\xada@\x05}Hq\x9c\x89c@a\'8\x98\xa2\x97e@\xd52\xf3I\xfb\xdcg@\x19zJ\x03x_j@\x9e\xfd\xa7\xe7\x86%m@\xb8\xb5W\x9d!\x1bp@a\x81\xb8\xca\xc3\xccq@r\xb8\xea\x02\x01\xacs@\xb1\xa4\xe8%\xa5\xbdu@\xf2k\xad6\xfd\x06x@\x16\x92\r\xf0\xe4\x8dz@:99\xc7\xd5X}@\xe8\x92.\xc1{7\x80@\xb8z\xf1F\x19\xec\x81@\x9b\xa2\xa4\x1f\xa2\xce\x83@\xd5\x95\xbe\x9c\xea\xe3\x85@5\t\n\x16I1\x88@+\xd1f\x96\xa3\xbc\x8a@\x9cG\xb8\xf8~\x8c\x8d@\xf2\xec\xdc\xcd\x07T\x90@\x91\x7f\xc2\xeb\xa5\x0b\x92@\xaa\x01\n2\x80\xf1\x93@\x9c6\x83rs\n\x96@\xb6\x845j\xdf[\x98@~u3\x86\xb4\xeb\x9a@m\xc4#\x1b\x83\xc0\x9d@2o>\x1b\xc6p\xa0@|\xb3D\x1aj+\xa2@\xb68j\xa5\x9b\x14\xa4@\x03\x1b\xcf\x1d@1\xa6@5\x7fA\xb6\xc0\x86\xa8@v\xfdMP\x18\x1b\xab@\x0e.\x92\xce\xe2\xf4\xad@\'n\xc9\x01\xb7\x8d\xb0@5\'<4fK\xb2@\xf9\x91\xd1\xe5\xf47\xb4@#\x9c\x0b\x16QX\xb6@nS&~\xed\xb1\xb8@\x7f\xe5\x8f\x86\xcfJ\xbb@?\xd23\xb4\x9e)\xbe@\xb1\xf7\x8f\xda\xda\xaa\xc0@\x89\x05\x19\x9c\x9ak\xc2@a\x8b\n`\x8c[\xc4@\xbcGt\xd3\xa6\x7f\xc6@L\xac\xc4Ff\xdd\xc8@\xf1h\xd3\xbb\xdaz\xcb@:\xbeTn\xb7^\xce@6\xe5@\xff1\xc8\xd0@L\xc2\xf8\xb4\x07\x8c\xd2@a%\x9f\x81b\x7f\xd4@=R\x18\xcfA\xa7\xd6@\xd9\x1d\xe7\x95+\t\xd9@\x04F\xf5\x83:\xab\xdb@4\xb2^\xa0-\x94\xde@\xa5\xef(\xca\xbc\xe5\xe0@fK\xa7\xe2\xad\xac\xe2@\x124\xda\xb8w\xa3\xe4@Z\x0b\xdc\x82"\xcf\xe6@\x04\xc1C\xf2=5\xe9@\xe3\x84\xd6s\xef\xdb\xeb@F\x18\xdb\xee\x01\xca\xee@]\xc53\x96{\x03\xf1@\xf2;\xa0\x89\x8d\xcd\xf2@\x9f\xb2\xc8t\xcc\xc7\xf4@,UziI\xf7\xf6@8\xd2}\xe3\x9da\xf9@\xe0A^!\xfa\x0c\xfc@\xd7\xfet\xff4\x00\xff@\x03"\xed\xben!\x01A\x84\x11\x10\x0f\xa7\xee\x02A\x12\x19;%a\xec\x04A\xeb\x1d\x86\xfe\xb6\x1f\x07A\xcaR\'\xf2K\x8e\tA\xc7z{#[>\x0cAn\x16\xfbx\xc76\x0fA:\xe8\x81\xa0\x96?\x11A\x82c\xd5\xd8\xfa\x0f\x13Al\xb4\xc6:6\x11\x15A>\xdck\xbekH\x17AO\xad\xc2\xa7H\xbb\x19Ah\xdf&\x12\x13p\x1cA\x1f\xb3a\x03\xbam\x1fA\\=\xc1\x97\xf3]!A\xb3\x1c\x82M\x891#A.\x01\xc7&L6%A0\x0es&hq\'A\xd3\\\xc4\x8e\x94\xe8)AT\xa5d\x86"\xa2,Ap\xd1\xc4G\r\xa5/A\x17\xa7\x1d\x02\x86|1A\xe4\xb6\\\xd4RS3A2\x08_[\xa3[5A\xbc\xba\xbf\xb4\xac\x9a7A\xf1\x96\x9420\x16:A\xc0^F\x1a\x8a\xd4<A\xca\x1ej\xf0\xc1\xdc?A\x04+\xae=N\x9bAA\xc2xa\xd5WuCA\xef\xbdzK<\x81EA\x03\xf6S\xe89\xc4GA\xe3\xf8\x90\x1f\x1cDJA\xba\xd4\xechJ\x07MA\xc5\x82aTl\nPABp/\xa9L\xbaQA\xe8\xb5C\xb9\x98\x97SA2d\xd0j\x17\xa7UA4h\x11A\x10\xeeWA}7\x0e\xe3XrZA\x90\xe4\x89\x0ed:]AM^\xb7\x0e\xa9&`A\xfe\xe2\x04\xa4\x81\xd9aA\x10\x11o\xe9\x15\xbacA4\xee\xe1-5\xcdeA\x1d\xd7\xba?0\x18hA.\xd2Y\x0b\xe7\xa0jA\x8f`b\xa8\xd7mmAd-\x1e~\x17CpA\x0e\xda9\x8e\xed\xf8qA\x8f\xc0\x08\xd0\xcf\xdcsA2g\xfe\t\x96\xf3uAr\xb2\xf5e\x9aBxA\xe8\xc8\xbb\'\xc7\xcfzA\xff\xf3\xcf\xd4\xa5\xa1}A\xd1v\x16\xfa\xb7_\x80A\x83\xbe\x82\xc8\x90\x18\x82A\xff\xd4\xf0\xd7\xc6\xff\x83Av[Cu:\x1a\x86A\xd3\xa2K6Om\x88A(Ux\xc8\xf9\xfe\x8aA\x87\nC3\xcf\xd5\x8dA\r\xca\xba\xda\x8a|\x90AM5>\xb4k8\x92A+\x82\xc3l\xfb"\x94A\xd7C\x9e\xe6"A\x96A\x86\x1b,4O\x98\x98A\xe9\xa5\xd1~\x7f.\x9bA\xd3\xbaDdT\n\x9eAi\xce\xc0x\x90\x99\xa0A\xe2Jv\xb3~X\xa2AAj\xda\xfamF\xa4A\xc3\xf3\xcd\xd5Oh\xa6A\xfe\xee\xed\xe3\x9a\xc3\xa8A\xba\x9e\t\xddX^\xabA\xb3\xb4x\t6?\xaeA\x12Tz-\xc9\xb6\xb0A\xfd\xa0\xe1(\xcax\xb2AI\xebM\xef\x1ej\xb4A\xc7\td\xbb\xc1\x8f\xb6A\'\xe6\xd0\xca2\xef\xb8A\xdc\x99cv\x86\x8e\xbbA\x882\x9f\xc5tt\xbeA\xf5f\xd6R5\xd4\xc0Ah\x9e\xe4wN\x99\xc2A\xe2n\xf6\xb7\x0e\x8e\xc4A\x9cb\xc6\x10y\xb7\xc6A{Z\xffn\x17\x1b\xc9A}-&\xdf\x08\xbf\xcbA0\xee\x96<\x11\xaa\xceA\x8acbC\xd5\xf1\xd0A\xe7\xa0\x92\x04\x0c\xba\xd2AZ\xbcm\xc3=\xb2\xd4A\xcd\x8e0Pv\xdf\xd6A\xf0\xd2\x8fWIG\xd9A\x11\xf4\x9c\xac\xe0\xef\xdbA]\x19_\x13\x0c\xe0\xdeA\x86\rKZ\xa9\x0f\xe1A41\xaf3\x03\xdb\xe2A\x0fM\x10\x81\xac\xd6\xe4A\xe3J\xb5\xf4\xb9\x07\xe7A\xb7\xa3\x86\x0c\xc9s\xe9A\xcaW\x1au\x0e!\xecA]Y\x19\xf0e\x16\xefAq\xa8]\xf3\xb1-\xf1A\x1c9\xafj4\xfc\xf2A*\xa3\xfe`[\xfb\xf4A/\xfa?zD0\xf7A\xdb\x90\xd7\x16\x97\xa0\xf9A>a\xf9\xcf\x92R\xfcAi\xc6\x0bz\x1fM\xffA2\x12\tk\xefK\x01B\xc1;\xba\x0f\xa0\x1d\x03B\xb5\xa2\x1e\xd4J \x05B)$\x96]\x16Y\x07B\xbasg\x00\xb4\xcd\tB6\x89\x9fUn\x84\x0cBr\xee\xa2Y9\x84\x0fB\x8a\xdf^\x1ebj\x11B\x00\x90\xab\x89F?\x13B\x14\xed\x1cL{E\x15Br\xf4X\x1c0\x82\x17Bq\xe3\rT \xfb\x19B\xb9\x8d~\x9f\xa1\xb6\x1cB\x82\xdbs8\xb4\xbb\x1fB\x80z\x14k\n\x89!B\xfc\x9c\x13@(a#B\xdb>n;\xedj%B{\xbd\x065\x92\xab\'B$\xe0\x96\x9d\xdc(*BGJ\x16H-\xe9,B\x9d\x1d>\xc1\x90\xf3/B\xcaB\x84\xaf\xe8\xa71B\xdc\x189\x9bE\x833B\x11\xd0P\x15\xa1\x905B\xcc}\xfc&=\xd57B=\x81\xc4i\xe9V:BX\x93\xf6\xea\x11\x1c=B#\xec\xf6\xcf\xe7\x15@B0\xb0\xaeJ\xfd\xc6AB\xbcI\x1a\x04\x9f\xa5CB\xe1\xb6\xcdM\x97\xb6EB\x0chwr1\xffGB\xaa\xa6PFG\x85JB\'\x15\xc1$POMB\xd2\xe9\xce\xc082PB\xeev;\x9cH\xe6QB\xc7Hn\xe44\xc8SB\xb2L\xbaY\xd0\xdcUB\x9em\x96\x98o)XB\xfe\xac\xee\xc1\xf6\xb3ZB\xb75+\x93\xe8\x82]B\x9b\xc8L\x8a\xbbN`B\x17\xaez\x04\xcb\x05bB\x9aG\xa6\xa6\x07\xebcB\xbe\x95\xb9\xaeL\x03fB\x10\xcc[\x1b\xf8ShB\xaa$Ml\xf8\xe2jB8\xfa\xff\xd4\xdb\xb6mB%\xb2/\x84pkpB\x03\xf8e\xe4\x84%rB\xd8\xd7\xee\xb5\x17\x0etB\x1e\xab=\xc3\x0c*vB9\x9d\xae}\xcb~xB1\x8c\x17\xd6L\x12{B\xc0\xef!\x8a*\xeb}B\x0bG\xd1\x06X\x88\x80B\xc2\xac\xa1\x9dvE\x82B\x0151~e1\x84BP\'\x89\x0e\x11Q\x86B\x15j\\C\xea\xa9\x88Bc\r\xf8\x90\xf4A\x8bBW\x17\x8dS\xd5\x1f\x8eB\xc5\xae&kr\xa5\x90B\x9e\x06~\x92\xa0e\x92B\x91\x90\x14l\xf1T\x94BC\x95\xb0\x08Zx\x96Bh\xc0\x1a\xf1T\xd5\x98B\xa8=\x99/\xf0q\x9bBj\xd5X\xd3\xdcT\x9eBm\xa9\xc1\n\xc0\xc2\xa0B\xaeP\xf8%\x03\x86\xa2Bg`\xff\xec\xbbx\xa4B\xea\xe1\x9b*\xe8\x9f\xa6B7\xcb\x88\x0c\x0c\x01\xa9Bm\xe1\xa7E@\xa2\xabB\xb2\xe4\xb9\xacA\x8a\xaeBo\xa3\xd1?A\xe0\xb0B\x7f\x17\xbc\xbb\x9e\xa6\xb2Br\xaf\x18o\xc5\x9c\xb4BS\xd0\x07\xee\xbb\xc7\xb6B\xf9\xed0\x1c\x10-\xb9B\x99\xb2\xd4g\xe5\xd2\xbbBsL\x04\x84\x04\xc0\xbeB\x12\xcb$e\xf6\xfd\xc0B\xd4[$\xb8s\xc7\xc2B\xbcpIa\x0e\xc1\xc4BWp\x87\xcd\xd5\xef\xc6B\xb5b\x8a\xa7aY\xc9B2*\xd6+\xe0\x03\xccBBZ\xad\xfe%\xf6\xceB\xf4\')\xd6\xdf\x1b\xd1B\x7f\xc7<\x80\x82\xe8\xd2B\xb8\xd4=3\x97\xe5\xd4B\xd2\x97\x85D6\x18\xd7B\xe2\xda\xfa6\x01\x86\xd9B\x1dMj(15\xdcB>\x9fM\xc3\xa6,\xdfBn\xb4\xed\xee\xfd9\xe1Be\xe4\xc2y\xcb\t\xe3B\xfe\xa0fU`\n\xe5B\x81^F\xcf\xdd@\xe7B;#\xd8S\xef\xb2\xe9B\x0f|X\xf5\xd8f\xecB\xc7\xf0\xa2y\x87c\xefB\xe2x#\x0cQX\xf1B\x91U\'\x0bO+\xf3BM\x8a\xfa8j/\xf5Bj\x9c\xe8\xea\xcci\xf7B^\xcai\x88,\xe0\xf9B\xa8Fs+\xd8\x98\xfcB\xbel\x92\xca\xc8\x9a\xffB\x06\xa9\x1e\x8b\xd9v\x01C\x85\x12\x8f\x9b\rM\x03C\x03\x91\xf7O\xb5T\x05C\xf8jg\x15\x04\x93\x07Ch\xca\xea_\xb9\r\nC\xcdA\x9ad/\xcb\x0cCR\x81*`k\xd2\x0fC\x1e\xc3\xd7\xc9\x97\x95\x11C\xa6\xa4\xd4\x92\x07o\x13C\xea_$\rBz\x15C\xb3\xa8\x9b\xcd\x83\xbc\x17Cu5\x8bf\x96;\x1aC:\xe1\xbb;\xdf\xfd\x1cC2|\xd2\xf27\x05 C1\xb1\xec&\x8c\xb4!C\xddf\x89Y=\x91#C|\xad\x11\xe4\x10\xa0%C\xa3\x7f=\x93L\xe6\'C\x11\xe5q)\xc4i*CST\xd7L\xe80-C>\x83\xb4\x83k!0C>\xec\xa1\x01\xb7\xd31Cm\xc7\xf6X\xaf\xb33C\x8d\x9f\x1bI"\xc65Ch\xee\xe5\xe6^\x108C\xa7,\xbe6C\x98:CCf\xfe4Kd=C\xb4\xae\x86\xb9\xd0=@Co\xa1\xe3\xb9\x18\xf3AC\xf9\x8b\x1f\xfb]\xd6CCd1k\xb1v\xecEC\xf8S\x10J\xbb:HC\xdf\x8e\x89\x1d\x14\xc7JC\\aW\x92\x08\x98MC8!\xad\xebgZPCL\xd9F\xb0\xb1\x12RC\xc8\x17\xc1\xaaI\xf9SCV\x9c\xf7\x92\x0e\x13VC*\xfe\x1b?beXC\x13v\xe9m7\xf6ZC\xdb\xf5\x1e\x04!\xcc]C\'\xd4%r1w`C\x00\xa1\nF\x822bCI\xb4T\xd3r\x1cdC\xd0\xc2\x87d\xea9fC\xee\xbaMIT\x90hC\xb8\xef\xf0\xb8\xad%kC\xf5#\xaa*\x95\x00nCa\xa6\x89\xa5-\x94pC\xa15\x19\xdd\x8aRrC\xd5\xdb\x10\xe1\xd9?tC\xe6\x9d\xb3\x9d\navCLl\xd1\xec\x91\xbbxC\xddj\xb2\x90wU{CN)h\xa7e5~C\xf8l\r\xdf\\\xb1\x80C\x861\t\xd8\xcbr\x82C\xbb\x86\xea@\x7fc\x84Ce\xad\xe5\xb6o\x88\x86C/\x9f\xbb\xae\x1b\xe7\x88C\xbbyA\x88\x95\x85\x8bC\xcbq\xe4\x1c\x93j\x8eC\xbc\x05\x83x\xbf\xce\x90C\xbc\xbb\x1e\x9aE\x93\x92C\x99z\x96`c\x87\x94Coj\\)\x1a\xb0\x96C\xf7$\x0b\x15\xf2\x12\x99C\\\x96\xb43\x08\xb6\x9bC\xdb\x8b\xc8.\x1e\xa0\x9eC\xa9kZ\xccU\xec\xa0C|\xb9L\x87\xf8\xb3\xa2C\xf7\x9b\x8a\xae\x86\xab\xa4C\x9b\xbc+o\n\xd8\xa6C\xdd\xaf\xaa\xa6\x15?\xa9C_\xea&(\xd0\xe6\xabC$ \xde\x81\x07\xd6\xaeC?\xcd\xa25 \n\xb1C\xd3\x016\x04\xe5\xd4\xb2CEB\xff\x99\xe9\xcf\xb4C\xb1q>\x03A\x00\xb7C,rr\xeb\x86k\xb9C\xda\x19\xba\xfb\xed\x17\xbcC\xaa\xec\x10\xbcO\x0c\xbfC\xbc\xa4\x0b\x10\x1f(\xc1CN\x93.v\x0b\xf6\xc2C\x1e\x8e\xf0\x92\x8c\xf4\xc4C\xf2\xb7Wa\xbe(\xc7CW\xc0)lF\x98\xc9Ci\x11\x98EbI\xccCz\xc3p\x84\xf7B\xcfCQ\xd2\xe5\xb7RF\xd1C\xdf\xcb<Cl\x17\xd3C\xf8\xc1\x1f\np\x19\xd5C\xff\x9a\x14\x06\x83Q\xd7C\xef\xb5\x88\xb2T\xc5\xd9Cl\xd7\xf4\x9d-{\xdcC\xd0\x8c3\x83\xffy\xdfC:\xb8$\x8a\xbbd\xe1C\xd9\xa2\x1a\xd2\x079\xe3C&\x9d\x14q\x94>\xe5Cc\x83\xedn\x8fz\xe7C\x7f\xdd9I\xb2\xf2\xe9Cu`\x10\x9eP\xad\xecC\xcbL\xb7ah\xb1\xefC\xd3X_\xe4Y\x83\xf1C\x15\xe56\x8a\xdeZ\xf3C;\xb9\x1e:\xfac\xf5C\xb0\xb87\x1a\xe4\xa3\xf7CJ\xdb\xdb\xbb_ \xfaC\xe8f8\xe0\xcb\xdf\xfcC\xa9,\x84\xca2\xe9\xffC\xa2v\xd1$.\xa2\x01DMs\xb6\xd3\xf0|\x03D\xe2\xe9V\xd8\xa1\x89\x05DY\xe6&\x87\x81\xcd\x07D\x07\x1b\x03\x97]N\nD\xe8E\xca\xff\x9f\x12\rD\xd3C\xa7\xb4\xaf\x10\x10DX\xb6\\\xaa8\xc1\x11D\x9a\x82u\x17?\x9f\x13D\x13\x9f\xa0\xbf\x8b\xaf\x15D%\xa3\xce5h\xf7\x17D\x81\x80;h\xac|\x1aDy\xd74\x99\xcdE\x1dD\xb2}|u\xf7, D\xd9\xc2\x89\xd4y\xe0!D3\xdf\x08\xbf\xc9\xc1#D\xbeI\xabd\xb8\xd5%Dc\xfb#\xa7\x98!(D?\x1b\n\xbeL\xab*D\xf8U\xfaIUy-D\x05>\xcb\xfepI0D>s\x89\x03\xf2\xff1D\\1\xbf4\x91\xe43D\xeb\xc2\xf3<(\xfc5D\xc9\xfd\xfe\\\x13L8D \xdd\xee\'?\xda:D\xd7@\xb2\xb07\xad=D\xfd56\xa8\x1cf@D\xdf\xf25\x98\xa1\x1fBD\x91D\xa2\xe3\x95\x07DDM\xb5\xc5\xbe\xdb"FD\x10K\x1c\xda\xd8vHD\x01Tf6\x84\tKD\xbaD\x0bmu\xe1MD\xa1[\xfa\xc9\xfa\x82PDj\xeb\x13\xf4\x88?RD\xf7Px7\xd8*TDW\t=a\xd3IVDU\xa8\x1e\xa2\xe9\xa1XDmf\xebz\x1c9[D\xe6&\xcd\x1f\x0f\x16^D]\xf9\xef\xbc\x0b\xa0`D\x03\xb1Sy\xa8_bD\x0eG\xc5\x9cXNdD\xd3SG\x9c\x0fqfD<\x94\x909F\xcdhDZ\x13\xf9\x87\x08ikD\x18\xb4\xdaj\x05KnDv\xbf\x8b\xdaO\xbdpD')
def hankel_weights_ascii(order=0):
if order == 0:
return N.array([+0.21035620538389819885E-28,
-0.12644693616088940552E-13,
+0.46157312567885668321E-13,
-0.27987033742576678494E-13,
+0.54657649654108409156E-13,
-0.26529331099287291499E-13,
+0.56749134340673213135E-13,
-0.21572768289772080733E-13,
+0.58318460867739760925E-13,
-0.15465892848687829700E-13,
+0.60573024556529743179E-13,
-0.85025312590830646706E-14,
+0.63880180611476449908E-13,
-0.56596576350102877128E-15,
+0.68485006047914070374E-13,
+0.85728977321682762439E-14,
+0.74650681546818133979E-13,
+0.19208372932613381433E-13,
+0.82693454289757706437E-13,
+0.31701165629228998860E-13,
+0.93000040396952081623E-13,
+0.46490696394179916916E-13,
+0.10604419444905640479E-12,
+0.64112165895974571186E-13,
+0.12240608340017008854E-12,
+0.85217767515070225126E-13,
+0.14279579404871719178E-12,
+0.11060266069684630524E-12,
+0.16808202030984049793E-12,
+0.14123670281595459178E-12,
+0.19932710117763080694E-12,
+0.17830320429641190908E-12,
+0.23782981967994220694E-12,
+0.22324626027650970672E-12,
+0.28517768171070337866E-12,
+0.27782855757859949941E-12,
+0.34331077352335570356E-12,
+0.34420197641399489491E-12,
+0.41459976123278392377E-12,
+0.42499381982249688902E-12,
+0.50194116319499513568E-12,
+0.52341213107734220974E-12,
+0.60887371932475596308E-12,
+0.64337432538102752823E-12,
+0.73972052807969328662E-12,
+0.78966429788659195358E-12,
+0.89976265596232089469E-12,
+0.96812431295714248033E-12,
+0.10954511874715580138E-11,
+0.11858893754914550946E-11,
+0.13346662261643230004E-11,
+0.14516734901185850330E-11,
+0.16270332417806469835E-11,
+0.17761192965262209981E-11,
+0.19843094598657728049E-11,
+0.21722251127126358340E-11,
+0.24208558013562638359E-11,
+0.26558665246211218806E-11,
+0.29542133130007581834E-11,
+0.32464334551104291636E-11,
+0.36058072230543221354E-11,
+0.39676082798212998573E-11,
+0.44018068787207206107E-11,
+0.48483162182209038194E-11,
+0.53741760778847699533E-11,
+0.59238861421284167256E-11,
+0.65619559488550109069E-11,
+0.72374683888302430790E-11,
+0.80128318647926483616E-11,
+0.88417664804021047188E-11,
+0.97850472788000974558E-11,
+0.10801152249024990298E-10,
+0.11949741288775620211E-10,
+0.13194249255521529763E-10,
+0.14593803746893311587E-10,
+0.16117088182600741411E-10,
+0.17823362499440759998E-10,
+0.19686960839662181492E-10,
+0.21768042712348459703E-10,
+0.24047127453754399616E-10,
+0.26586169224245549843E-10,
+0.29372566166660639848E-10,
+0.32471120715874496926E-10,
+0.35876995485484108464E-10,
+0.39659090711123993131E-10,
+0.43821451522206353096E-10,
+0.48438566886024388833E-10,
+0.53524764256840081139E-10,
+0.59161909123775483693E-10,
+0.65376353273289546079E-10,
+0.72259490983916676274E-10,
+0.79851856505621554776E-10,
+0.88256972132554113981E-10,
+0.97532219231111761839E-10,
+0.10779639493701439540E-09,
+0.11912700941828918848E-09,
+0.13166195190543400137E-09,
+0.14550289515667290553E-09,
+0.16081145810919829686E-09,
+0.17771842706736448843E-09,
+0.19641479168712890847E-09,
+0.21706652163468219836E-09,
+0.23990084518390418007E-09,
+0.26512635046403231588E-09,
+0.29301487204485379059E-09,
+0.32382671796405940321E-09,
+0.35788852978338560143E-09,
+0.39552347102192978760E-09,
+0.43712543089936042400E-09,
+0.48309404739375797825E-09,
+0.53390563500721587301E-09,
+0.59005295736900699180E-09,
+0.65211327580989620296E-09,
+0.72069283339348376395E-09,
+0.79649244503723412979E-09,
+0.88025670846750671949E-09,
+0.97283758951862838429E-09,
+0.10751484374562240226E-08,
+0.11882260626931209546E-08,
+0.13131897062580609792E-08,
+0.14513021636655630472E-08,
+0.16039339435115999074E-08,
+0.17726240632935599375E-08,
+0.19590497332198700268E-08,
+0.21650875406672578739E-08,
+0.23927891159868709863E-08,
+0.26444435360147638239E-08,
+0.29225595734392348364E-08,
+0.32299302912485969586E-08,
+0.35696226515762041770E-08,
+0.39450454481729238111E-08,
+0.43599472612559631445E-08,
+0.48184890913636877388E-08,
+0.53252519017629532640E-08,
+0.58853155833436851597E-08,
+0.65042776355473761329E-08,
+0.71883404192425699700E-08,
+0.79443429030829021263E-08,
+0.87798585629591097164E-08,
+0.97032425780220928695E-08,
+0.10723743227689399320E-07,
+0.11851567478400949647E-07,
+0.13098009332253010086E-07,
+0.14475537424021579590E-07,
+0.15997944513720238914E-07,
+0.17680461540553181382E-07,
+0.19539933354871179973E-07,
+0.21594964684505000780E-07,
+0.23866128306162058448E-07,
+0.26376149610345229076E-07,
+0.29150154762698309478E-07,
+0.32215902055657983021E-07,
+0.35604079260985092872E-07,
+0.39348591789544360374E-07,
+0.43486920453657868292E-07,
+0.48060478694380069026E-07,
+0.53115044437493142888E-07,
+0.58701201380017479006E-07,
+0.64874861635712681668E-07,
+0.71697809408859342572E-07,
+0.79238334805050121668E-07,
+0.87571902294266750180E-07,
+0.96781920558355529704E-07,
+0.10696056312048640378E-06,
+0.11820970459254829996E-06,
+0.13064192692376749733E-06,
+0.14438165911984879199E-06,
+0.15956640998357920017E-06,
+0.17634815657222329376E-06,
+0.19489485336503760544E-06,
+0.21539212473518470874E-06,
+0.23804511154682969141E-06,
+0.26308053514448537707E-06,
+0.29074895589985508713E-06,
+0.32132729115584617374E-06,
+0.35512157675298091583E-06,
+0.39247003960676882480E-06,
+0.43374647340783931675E-06,
+0.47936398879211592319E-06,
+0.52977913903701991577E-06,
+0.58549649799821895163E-06,
+0.64707370170465826468E-06,
+0.71512703747583724585E-06,
+0.79033760405820345763E-06,
+0.87345813593705873095E-06,
+0.96532052953043588492E-06,
+0.10668441762993300587E-05,
+0.11790451573234470162E-05,
+0.13030464193827640161E-05,
+0.14400890071820729325E-05,
+0.15915444905568059534E-05,
+0.17589286853766969218E-05,
+0.19439168303884759854E-05,
+0.21483603476946079820E-05,
+0.23743053781113989137E-05,
+0.26240132540945578888E-05,
+0.28999831372928098690E-05,
+0.32049770257732388059E-05,
+0.35420474020978068237E-05,
+0.39145677786671023699E-05,
+0.43262664657480666650E-05,
+0.47812638810077579977E-05,
+0.52841137925459449193E-05,
+0.58398488901504216978E-05,
+0.64540311583956847791E-05,
+0.71328075387126483640E-05,
+0.78829714540444842174E-05,
+0.87120307957926337232E-05,
+0.96282830690788715692E-05,
+0.10640898433258409191E-04,
+0.11760011483484689510E-04,
+0.12996822677619209683E-04,
+0.14363710437469910021E-04,
+0.15874355032820411062E-04,
+0.17543875501207770228E-04,
+0.19388980961051210830E-04,
+0.21428137844875080257E-04,
+0.23681754714302638776E-04,
+0.26172386518181301401E-04,
+0.28924960326686671307E-04,
+0.31967024811679323171E-04,
+0.35329025959273332330E-04,
+0.39044611784553647914E-04,
+0.43150969087563300697E-04,
+0.47689195631023510063E-04,
+0.52704711454198507913E-04,
+0.58247713449355698436E-04,
+0.64373677739542765810E-04,
+0.71143914895687183756E-04,
+0.78626183537770216584E-04,
+0.86895368472094227166E-04,
+0.96034230136811580777E-04,
+0.10613423286950590218E-03,
+0.11729646026571620215E-03,
+0.12963262680752149015E-03,
+0.14326619585462989793E-03,
+0.15833361521503999387E-03,
+0.17498568260644121238E-03,
+0.19338905472215898854E-03,
+0.21372791490647819607E-03,
+0.23620581621746139576E-03,
+0.26104771814107751186E-03,
+0.28850223750643329973E-03,
+0.31884413578705622606E-03,
+0.35237706800135917308E-03,
+0.38943662007281590462E-03,
+0.43039366566958368833E-03,
+0.47565807487700027594E-03,
+0.52568281303167982161E-03,
+0.58096846836193664822E-03,
+0.64206825611437718954E-03,
+0.70959354469423893946E-03,
+0.78421996374912559657E-03,
+0.86669414659246905939E-03,
+0.95784118347590099622E-03,
+0.10585728435434579864E-02,
+0.11698966653840010659E-02,
+0.12929259749833240008E-02,
+0.14288909657393959393E-02,
+0.15791508896276298946E-02,
+0.17452075486231769744E-02,
+0.19287201026563420645E-02,
+0.21315214730933669356E-02,
+0.23556362776736309780E-02,
+0.26033007312297349808E-02,
+0.28769842725422829777E-02,
+0.31794136300501061286E-02,
+0.35135987233342810820E-02,
+0.38828616256736492134E-02,
+0.42908672540316900729E-02,
+0.47416579734868603835E-02,
+0.52396893384671194144E-02,
+0.57898709851889693795E-02,
+0.63976070720003401851E-02,
+0.70688437831027441105E-02,
+0.78101127966257229834E-02,
+0.86285849757206656285E-02,
+0.95321125348557418644E-02,
+0.10529286971052299882E-01,
+0.11629470426845669312E-01,
+0.12842853010275019979E-01,
+0.14180454004084899408E-01,
+0.15654168426849128515E-01,
+0.17276700258609969246E-01,
+0.19061578784670331344E-01,
+0.21022951738450229575E-01,
+0.23175536220878610594E-01,
+0.25534136813168170632E-01,
+0.28113470567056909888E-01,
+0.30927161344728969217E-01,
+0.33987341082207328524E-01,
+0.37302669043183162012E-01,
+0.40877565846017260842E-01,
+0.44708454582277110112E-01,
+0.48782456555642082774E-01,
+0.53070463888373879680E-01,
+0.57525214796560822372E-01,
+0.62068889249144526543E-01,
+0.66590986905823254527E-01,
+0.70926870977039285782E-01,
+0.74857621553299974471E-01,
+0.78074664211727651253E-01,
+0.80188872113380424422E-01,
+0.80676406709186576638E-01,
+0.78917673064227769619E-01,
+0.74124063016304961304E-01,
+0.65458647531413310938E-01,
+0.51957717257333460581E-01,
+0.32847972741848592559E-01,
+0.74970763258312700383E-02,
-0.23866128698945488634E-01,
-0.60174943784761181220E-01,
-0.98178997988506697125E-01,
-0.13281477972726110637E+00,
-0.15546285697725620301E+00,
-0.15639821579874499391E+00,
-0.12430498665290500016E+00,
-0.54868159863436967438E-01,
+0.46862558991703072431E-01,
+0.15112182958062059246E+00,
+0.21193155344105990556E+00,
+0.16951341358877961008E+00,
+0.13861974203314799889E-01,
-0.18693504518381348634E+00,
-0.24558896069253360883E+00,
-0.53092694018998139172E-01,
+0.25199984157985949595E+00,
+0.19682248760574280744E+00,
-0.20143336189691599114E+00,
-0.24584508272586030886E+00,
+0.34335593140766357267E+00,
-0.47700665106262918336E-01,
-0.20966284735074519618E+00,
+0.25090851237942479734E+00,
-0.16764126613351920669E+00,
+0.74951997868967626393E-01,
-0.16951351027511458308E-01,
-0.88285242013749955919E-02,
+0.16167873561835501006E-01,
-0.15564117559925290737E-01,
+0.12513111252163700016E-01,
-0.92993152469780984010E-02,
+0.66505259967794931597E-02,
-0.46677074086718837662E-02,
+0.32488855455568548675E-02,
-0.22555291085446750252E-02,
+0.15668752111009150857E-02,
-0.10911324863680910667E-02,
+0.76253830490409491537E-03,
-0.53525405778204085232E-03,
+0.37771045672146697511E-03,
-0.26825282115352968703E-03,
+0.19202652749967551236E-03,
-0.13882137232089440237E-03,
+0.10159989178100049974E-03,
-0.75497250626312589804E-04,
+0.57141729200529359656E-04,
-0.44191609676806338589E-04,
+0.35017761995785832974E-04,
-0.28484969541399899885E-04,
+0.23801048173241150913E-04,
-0.20412749240321660898E-04,
+0.17933634897918600856E-04,
-0.16093677807779768610E-04,
+0.14703946920177649808E-04,
-0.13632085400878389976E-04,
+0.12785408514801159958E-04,
-0.12099103232765920005E-04,
+0.11527807463720849231E-04,
-0.11039642499677090445E-04,
+0.10612147244787119201E-04,
-0.10229546722558040478E-04,
+0.98808019172690629615E-05,
-0.95581362683731644660E-05,
+0.92559894628748428139E-05,
-0.89703680398349605195E-05,
+0.86984392262176360162E-05,
-0.84381998993781744882E-05,
+0.81881850397080960968E-05,
-0.79472759767526677708E-05,
+0.77146204892770847038E-05,
-0.74895903346701209313E-05,
+0.72717128455631313132E-05,
-0.70605952027200397989E-05,
+0.68558909586342899260E-05,
-0.66573078263653524112E-05,
+0.64646106359474119065E-05,
-0.62775967052488337714E-05,
+0.60960690045641779074E-05,
-0.59198350149128057049E-05,
+0.57487213891732378171E-05,
-0.55825764283683409239E-05,
+0.54212557290731716876E-05,
-0.52646114832336199488E-05,
+0.51124978277574427215E-05,
-0.49647806501954759280E-05,
+0.48213365261592663842E-05,
-0.46820435304229967753E-05,
+0.45467775878200409083E-05,
-0.44154180000760036035E-05,
+0.42878525031129105819E-05,
-0.41639746681098469138E-05,
+0.40436784078298272207E-05,
-0.39268575265170754164E-05,
+0.38134098513603608910E-05,
-0.37032392398348510301E-05,
+0.35962529271829669603E-05,
-0.34923586009061261710E-05,
+0.33914651799141980567E-05,
-0.32934854312419398030E-05,
+0.31983363564463991755E-05,
-0.31059371103484061739E-05,
+0.30162076790696608685E-05,
-0.29290699115622908088E-05,
+0.28444489540948809787E-05,
-0.27622729358204111026E-05,
+0.26824715684158770123E-05,
-0.26049757091405561401E-05,
+0.25297182336640620443E-05,
-0.24566346909850541750E-05,
+0.23856627938558707926E-05,
-0.23167415846242317899E-05,
+0.22498114158806991699E-05,
-0.21848145526023768863E-05,
+0.21216953789870668849E-05,
-0.20603999269499001719E-05,
+0.20008754358939798722E-05,
-0.19430704833474811314E-05,
+0.18869353395796189952E-05,
-0.18324219538318030139E-05,
+0.17794835990689859392E-05,
-0.17280746718615620423E-05,
+0.16781508408187099176E-05,
-0.16296692208678659180E-05,
+0.15825882749397249515E-05,
-0.15368675777174579453E-05,
+0.14924677441823879966E-05,
-0.14493505440316709914E-05,
+0.14074789632159439540E-05,
-0.13668170916979060623E-05,
+0.13273299804037580486E-05,
-0.12889836283545319635E-05,
+0.12517450527435769451E-05,
-0.12155822896230419416E-05,
+0.11804642977313919266E-05,
-0.11463608782321180614E-05,
+0.11132426817551759487E-05,
-0.10810812413606430626E-05,
+0.10498489463079790445E-05,
-0.10195189699197359345E-05,
+0.99006522696480728454E-06,
-0.96146238238294861780E-06,
+0.93368585903962674737E-06,
-0.90671180391877650539E-06,
+0.88051703794158972103E-06,
-0.85507903355065637431E-06,
+0.83037591856657379114E-06,
-0.80638646950736030707E-06,
+0.78309007959684342440E-06,
-0.76046672516600126341E-06,
+0.73849695280747625374E-06,
-0.71716187755802708277E-06,
+0.69644316956135183135E-06,
-0.67632302736954520768E-06,
+0.65678415552512063648E-06,
-0.63780975556830963862E-06,
+0.61938351997573715339E-06,
-0.60148961697207375561E-06,
+0.58411266955661727328E-06,
-0.56723774005096348097E-06,
+0.55085032232163946943E-06,
-0.53493633333997110944E-06,
+0.51948209868244907623E-06,
-0.50447433644131324069E-06,
+0.48990014588904722006E-06,
-0.47574699997612418437E-06,
+0.46200273605516768571E-06,
-0.44865554313913170035E-06,
+0.43569394953682061395E-06,
-0.42310681390672771474E-06,
+0.41088331789010578938E-06,
-0.39901295702377770089E-06,
+0.38748552999527151342E-06,
-0.37629112895780040410E-06,
+0.36542013202237861199E-06,
-0.35486319617658597678E-06,
+0.34461124894551899091E-06,
-0.33465547948734137742E-06,
+0.32498733079349469753E-06,
-0.31559849314212400870E-06,
+0.30648089749286697872E-06,
-0.29762670812339488137E-06,
+0.28902831526969758359E-06,
-0.28067832866533619338E-06,
+0.27256957173628210936E-06,
-0.26469507560502209121E-06,
+0.25704807272840818962E-06,
-0.24962199077868072385E-06,
+0.24241044716871418470E-06,
-0.23540724388966429376E-06,
+0.22860636218196940360E-06,
-0.22200195709699679458E-06,
+0.21558835236008589946E-06,
-0.20936003566018609291E-06,
+0.20331165407816460064E-06,
-0.19743800942055008854E-06,
+0.19173405358761880565E-06,
-0.18619488421725469657E-06,
+0.18081574059851621267E-06,
-0.17559199964945570756E-06,
+0.17051917187001359107E-06,
-0.16559289739464161294E-06,
+0.16080894226704971095E-06,
-0.15616319488355259655E-06,
+0.15165166247713490835E-06,
-0.14727046762624959541E-06,
+0.14301584488191908927E-06,
-0.13888413756276189610E-06,
+0.13487179465891340034E-06,
-0.13097536777476139733E-06,
+0.12719150812468619494E-06,
-0.12351696364172060964E-06,
+0.11994857620999400758E-06,
-0.11648327897320799497E-06,
+0.11311809368621049480E-06,
-0.10985012813125349456E-06,
+0.10667657363213940060E-06,
-0.10359470265995370341E-06,
+0.10060186649751670646E-06,
-0.97695492950586510549E-07,
+0.94873084124749734212E-07,
-0.92132214283314405060E-07,
+0.89470527774724840543E-07,
-0.86885737009431156146E-07,
+0.84375620484431720137E-07,
-0.81938020868743667602E-07,
+0.79570843154679285033E-07,
-0.77272052863928245642E-07,
+0.75039674297478696595E-07,
-0.72871788831488877790E-07,
+0.70766533266929795021E-07,
-0.68722098232649864085E-07,
+0.66736726633350816695E-07,
-0.64808712137167796518E-07,
+0.62936397705674278282E-07,
-0.61118174170089166613E-07,
+0.59352478851276259248E-07,
-0.57637794217708362227E-07,
+0.55972646579199561646E-07,
-0.54355604818630417116E-07,
+0.52785279162883091201E-07,
-0.51260319990189909104E-07,
+0.49779416670227040800E-07,
-0.48341296436233499673E-07,
+0.46944723290471018939E-07,
-0.45588496942848318593E-07,
+0.44271451780258727462E-07,
-0.42992455864451837250E-07,
+0.41750409958276353087E-07,
-0.40544246580819631899E-07,
+0.39372929090650920317E-07,
-0.38235450795273419860E-07,
+0.37130834085523768675E-07,
-0.36058129594866006882E-07,
+0.35016415383563508384E-07,
-0.34004796146768310693E-07,
+0.33022402445156628786E-07,
-0.32068389957362020693E-07,
+0.31141938754091167181E-07,
-0.30242252593599009938E-07,
+0.29368558237615870861E-07,
-0.28520104786762129308E-07,
+0.27696163034962460481E-07,
-0.26896024842649531045E-07,
+0.26119002528299780677E-07,
-0.25364428277531399452E-07,
+0.24631653569082881086E-07,
-0.23920048617305701087E-07,
+0.23229001830889051246E-07,
-0.22557919287333441164E-07,
+0.21906224222551861542E-07,
-0.21273356535101449785E-07,
+0.20658772304732728872E-07,
-0.20061943324939738367E-07,
+0.19482356649058811450E-07,
-0.18919514149424371449E-07,
+0.18372932089200169455E-07,
-0.17842140706600119178E-07,
+0.17326683811178871537E-07,
-0.16826118391794460252E-07,
+0.16340014235853439520E-07,
-0.15867953559529469194E-07,
+0.15409530648689289756E-07,
-0.14964351510224189348E-07,
+0.14532033533448680711E-07,
-0.14112205161252269515E-07,
+0.13704505570744190592E-07,
-0.13308584363144380637E-07,
+0.12924101262648650824E-07,
-0.12550725823983400048E-07,
+0.12188137148392460070E-07,
-0.11836023607829919776E-07,
+0.11494082577135149689E-07,
-0.11162020173950579471E-07,
+0.10839551006143939185E-07,
-0.10526397926519000691E-07,
+0.10222291794616780561E-07,
-0.99269712454067339727E-08,
+0.96401824646609211080E-08,
-0.93616789708108062008E-08,
+0.90912214031028235422E-08,
-0.88285773158782117222E-08,
+0.85735209788006156203E-08,
-0.83258331828536520172E-08,
+0.80853010519388850005E-08,
-0.78517178599159764754E-08,
+0.76248828529317467947E-08,
-0.74046010768841071059E-08,
+0.71906832098687622728E-08,
-0.69829453994641022983E-08,
+0.67812091047173317459E-08,
-0.65853009426977313290E-08,
+0.63950525394835678792E-08,
-0.62103003854524726628E-08,
+0.60308856947513333758E-08,
-0.58566542688268000505E-08,
+0.56874563638996400563E-08,
-0.55231465622676621705E-08,
+0.53635836473256503502E-08,
-0.52086304821955339059E-08,
+0.50581538918636123925E-08,
-0.49120245487234261852E-08,
+0.47701168614250102390E-08,
-0.46323088669346301918E-08,
+0.44984821257128528939E-08,
-0.43685216199214189850E-08,
+0.42423156545711511770E-08,
-0.41197557615253826557E-08,
+0.40007366062763786183E-08,
-0.38851558974150727748E-08,
+0.37729142987165276171E-08,
-0.36639153437652961865E-08,
+0.35580653530469988486E-08,
-0.34552733534349709264E-08,
+0.33554510000030559535E-08,
-0.32585125000973940249E-08,
+0.31643745396017359674E-08,
-0.30729562113327868796E-08,
+0.29841789455041530200E-08,
-0.28979664421992758989E-08,
+0.28142446057953132032E-08,
-0.27329414812814390995E-08,
+0.26539871924168161407E-08,
-0.25773138816751668664E-08,
+0.25028556519244291169E-08,
-0.24305485097912959499E-08,
+0.23603303106619080563E-08,
-0.22921407052714058628E-08,
+0.22259210878365399183E-08,
-0.21616145456867578372E-08,
+0.20991658103504500059E-08,
-0.20385212100542671023E-08,
+0.19796286235947108123E-08,
-0.19224374355423869606E-08,
+0.18668984927404269626E-08,
-0.18129640620596530537E-08,
+0.17605877893741759270E-08,
-0.17097246597221680675E-08,
+0.16603309586176070024E-08,
-0.16123642344797300183E-08,
+0.15657832621478869464E-08,
-0.15205480074504270167E-08,
+0.14766195927971890460E-08,
-0.14339602637660350412E-08,
+0.13925333566546899287E-08,
-0.13523032669700050132E-08,
+0.13132354188275479691E-08,
-0.12752962352352419048E-08,
+0.12384531092355140920E-08,
-0.12026743758811379070E-08,
+0.11679292850206920657E-08,
-0.11341879748702300079E-08,
+0.11014214463484779337E-08,
-0.10696015381534739059E-08,
+0.10387009025592480307E-08,
-0.10086929819117270958E-08,
+0.97955198580366660312E-09,
-0.95125286890900208679E-09,
+0.92377130945756002788E-09,
-0.89708368833163302057E-09,
+0.87116706876644941479E-09,
-0.84599917663709281674E-09,
+0.82155838131493233922E-09,
-0.79782367707710818756E-09,
+0.77477466505309300292E-09,
-0.75239153569281363935E-09,
+0.73065505174126690031E-09,
-0.70954653170499806391E-09,
+0.68904783379622916597E-09,
-0.66914134034083904798E-09,
+0.64980994263679380996E-09,
-0.63103702625001653087E-09,
+0.61280645673505631634E-09,
-0.59510256576828648337E-09,
+0.57791013768171107199E-09,
-0.56121439638580773724E-09,
+0.54500099267016873900E-09,
-0.52925599187102496775E-09,
+0.51396586189505248004E-09,
-0.49911746158916965897E-09,
+0.48469802944632955612E-09,
-0.47069517263760014005E-09,
+0.45709685636110621144E-09,
-0.44389139349867930081E-09,
+0.43106743457132480471E-09,
-0.41861395798487421376E-09,
+0.40652026055743952578E-09,
-0.39477594832052842209E-09,
+0.38337092758591272230E-09,
-0.37229539627057491552E-09,
+0.36153983547227521766E-09,
-0.35109500128849910154E-09,
+0.34095191687175519511E-09,
-0.33110186471439289704E-09,
+0.32153637915631239045E-09,
-0.31224723910912398970E-09,
+0.30322646099050710905E-09,
-0.29446629186269331473E-09,
+0.28595920276917881651E-09,
-0.27769788226393698380E-09,
+0.26967523012757238777E-09,
-0.26188435126501301881E-09,
+0.25431854977949852574E-09,
-0.24697132321776888896E-09,
+0.23983635698150977934E-09,
-0.23290751890024982077E-09,
+0.22617885396104611209E-09,
-0.21964457919042880688E-09,
+0.21329907868420528750E-09,
-0.20713689878085250208E-09,
+0.20115274337434959303E-09,
-0.19534146936242159446E-09,
+0.18969808222628370222E-09,
-0.18421773173808480806E-09,
+0.17889570779236339873E-09,
-0.17372743635793169822E-09,
+0.16870847554670939670E-09,
-0.16383451179612808855E-09,
+0.15910135616182540748E-09,
-0.15450494071744330869E-09,
+0.15004131505843449035E-09,
-0.14570664290687508993E-09,
+0.14149719881436189859E-09,
-0.13740936496016368823E-09,
+0.13343962804187350973E-09,
-0.12958457625588848896E-09,
+0.12584089636512460714E-09,
-0.12220537085144369393E-09,
+0.11867487515034671199E-09,
-0.11524637496555659739E-09,
+0.11191692366118209830E-09,
-0.10868365972922199935E-09,
+0.10554380433023220449E-09,
-0.10249465890504320142E-09,
+0.99533602855475026004E-10,
-0.96658091292055187607E-10,
+0.93865652846806834872E-10,
-0.91153887549225778384E-10,
+0.88520464763624569567E-10,
-0.85963121186075071965E-10,
+0.83479658899239781350E-10,
-0.81067943483446593655E-10,
+0.78725902182445575131E-10,
-0.76451522122414838220E-10,
+0.74242848583018786633E-10,
-0.72097983319807716229E-10,
+0.70015082938317186447E-10,
-0.67992357322650702613E-10,
+0.66028068126905105916E-10,
-0.64120527350693063962E-10,
+0.62268096049913068230E-10,
-0.60469183303296924744E-10,
+0.58722245716347976830E-10,
-0.57025788118346391824E-10,
+0.55378366976800887211E-10,
-0.53778600071222512844E-10,
+0.52225190653632309517E-10,
-0.50716985205207501023E-10,
+0.49253109171572777739E-10,
-0.47833283755322262690E-10,
+0.46458563164427748566E-10,
-0.45133048314954522821E-10,
+0.43867868281155817508E-10,
-0.42690428488605550129E-10,
+0.41665890740660430845E-10,
-0.40947061319725302450E-10,
+0.40890256062850869212E-10,
-0.42324395200868817252E-10,
+0.47175970286618397865E-10,
-0.59920514722972034865E-10,
+0.90953607290146280299E-10], dtype='d')
elif order == 1:
return N.array([-0.23779001100582381051E-28,
+0.79721192934236443185E-27,
+0.38325661863384939290E-27,
+0.84934033213920264104E-27,
+0.82321643716951481883E-27,
+0.11003687170198490196E-26,
+0.13254287328216880532E-26,
+0.15922464286287840307E-26,
+0.19986019650982509534E-26,
+0.23685465814544270716E-26,
+0.29798793392175001283E-26,
+0.35431019643707156492E-26,
+0.44257411307894436460E-26,
+0.53180794470588352748E-26,
+0.65556190066651513897E-26,
+0.79947762199059232857E-26,
+0.97071583223006191650E-26,
+0.12004979935771289997E-25,
+0.14406653509631588960E-25,
+0.17970467112699249374E-25,
+0.21453903977135419404E-25,
+0.26816147371136119450E-25,
+0.32037836290813990881E-25,
+0.39922197526685471353E-25,
+0.47937803770632117330E-25,
+0.59351247450921383090E-25,
+0.71773343544187673606E-25,
+0.88252267695870270015E-25,
+0.10736460080008319237E-24,
+0.13139234241813519897E-24,
+0.16038389953077929496E-24,
+0.19586330559120450202E-24,
+0.23934895950562681781E-24,
+0.29216907136422889152E-24,
+0.35704555610974980825E-24,
+0.43591578004654766279E-24,
+0.53258407091337795497E-24,
+0.65037749121846816863E-24,
+0.79446117848346841533E-24,
+0.97029807615169898533E-24,
+0.11851621862641970763E-23,
+0.14475349036735769831E-23,
+0.17680470446219830604E-23,
+0.21594646724325061636E-23,
+0.26376279226241200337E-23,
+0.32215255903424431280E-23,
+0.39348989123644471831E-23,
+0.48059305631057603546E-23,
+0.58701957447819091530E-23,
+0.71696014006070338140E-23,
+0.87572874338578454769E-23,
+0.10695830329268070127E-22,
+0.13064267975684400067E-22,
+0.15956396898683340405E-22,
+0.19489490174852410262E-22,
+0.23804258576458750974E-22,
+0.29074795736995329016E-22,
+0.35511877512642321550E-22,
+0.43374414815306912102E-22,
+0.52977566601218580972E-22,
+0.64706963771419739714E-22,
+0.79033290084770208947E-22,
+0.96531416601155305002E-22,
+0.11790381653809730581E-21,
+0.14400798270141680420E-21,
+0.17589176532470089827E-21,
+0.21483473765595870697E-21,
+0.26239961572838840870E-21,
+0.32049580752851479664E-21,
+0.39145421602105668850E-21,
+0.47812354861088417904E-21,
+0.58398109523939098113E-21,
+0.71327648305877594511E-21,
+0.87119745891754148321E-21,
+0.10640834348623049967E-20,
+0.12996739243852600375E-20,
+0.15874259111262610786E-20,
+0.19388856933392509112E-20,
+0.23681611511416871136E-20,
+0.28924775863608318981E-20,
+0.35328812735771197862E-20,
+0.43150695199493149714E-20,
+0.52704395186827729765E-20,
+0.64373272953957132288E-20,
+0.78625718444181387840E-20,
+0.96033638142877597977E-20,
+0.11729578932087649353E-19,
+0.14326535217816349936E-19,
+0.17498475666460750925E-19,
+0.21372678938714691346E-19,
+0.26104658300704859397E-19,
+0.31884290164425472060E-19,
+0.38943574121348422642E-19,
+0.47565771349593827251E-19,
+0.58096985951299433442E-19,
+0.70959792070530976791E-19,
+0.86670519080596190619E-19,
+0.10585956951243269563E-18,
+0.12929722209660508847E-18,
+0.15792391867645680267E-18,
+0.19288879140366910337E-18,
+0.23559479941190520470E-18,
+0.28775626657086499509E-18,
+0.35146613570216158086E-18,
+0.42928191135495900673E-18,
+0.52432585404586203783E-18,
+0.64041336717328802188E-18,
+0.78220224663792857958E-18,
+0.95538449298914256672E-18,
+0.11669086110519650175E-17,
+0.14252662063096260770E-17,
+0.17408230557831051757E-17,
+0.21262473650918901610E-17,
+0.25970027813123101601E-17,
+0.31719883922980728330E-17,
+0.38742728138556379626E-17,
+0.47320507187765319669E-17,
+0.57797357502250896216E-17,
+0.70593902823169582028E-17,
+0.86223523498694457235E-17,
+0.10531373010190409793E-16,
+0.12863037889413019372E-16,
+0.15710962731510451527E-16,
+0.19189397138461720101E-16,
+0.23438002820075089885E-16,
+0.28627215837238828004E-16,
+0.34965392409988710645E-16,
+0.42706786428448497367E-16,
+0.52162237447471309093E-16,
+0.63711036879213345092E-16,
+0.77816916463307065235E-16,
+0.95045695365657204522E-16,
+0.11608920160259351019E-15,
+0.14179151105966549619E-15,
+0.17318474398326101217E-15,
+0.21152807068685210363E-15,
+0.25836128767539467929E-15,
+0.31556278833430849848E-15,
+0.38542976466718232176E-15,
+0.47076434267244616602E-15,
+0.57499366556778888035E-15,
+0.70229784368391582701E-15,
+0.85778978838088164829E-15,
+0.10477052216252109330E-14,
+0.12796720504321799823E-14,
+0.15629924515539289125E-14,
+0.19090464627227088193E-14,
+0.23317106244241540845E-14,
+0.28479628092949809297E-14,
+0.34785033119698000940E-14,
+0.42486614900323137393E-14,
+0.51893168582342936762E-14,
+0.63382585119205047931E-14,
+0.77415505884680514824E-14,
+0.94555711726406619067E-14,
+0.11549035630408280097E-13,
+0.14106055531142479946E-13,
+0.17229135422830471373E-13,
+0.21043763493017538471E-13,
+0.25702847898914450407E-13,
+0.31393608430354023054E-13,
+0.38344140375861572417E-13,
+0.46833764078042948155E-13,
+0.57202731000069601939E-13,
+0.69867771751590042453E-13,
+0.85336439559542886244E-13,
+0.10423047667756279584E-12,
+0.12730699655547051243E-12,
+0.15549361393599358810E-12,
+0.18991970329598081032E-12,
+0.23196923668250597755E-12,
+0.28332687489467591536E-12,
+0.34605747293074408206E-12,
+0.42267398347606569328E-12,
+0.51625714279965715259E-12,
+0.63055541477094275274E-12,
+0.77016524760249830236E-12,
+0.94067802567402927053E-12,
+0.11489516827349049439E-11,
+0.14033265286503660695E-11,
+0.17140347264354340417E-11,
+0.20935168852125301327E-11,
+0.25570397012560628610E-11,
+0.31231597365723921107E-11,
+0.38146555551079558782E-11,
+0.46592061049755500161E-11,
+0.56907982819762827155E-11,
+0.69507175913176593709E-11,
+0.84896748701239594140E-11,
+0.10369250352182410092E-10,
+0.12665108932133729727E-10,
+0.15469100894640800720E-10,
+0.18894125922585180356E-10,
+0.23077182209924898792E-10,
+0.28186729422033271362E-10,
+0.34427103160373659936E-10,
+0.42049668170180476841E-10,
+0.51359191342712271588E-10,
+0.62730747867977636297E-10,
+0.76618892012631225296E-10,
+0.93583301711963271940E-10,
+0.11430192677538819367E-09,
+0.13960991678261530046E-09,
+0.17051839200598010096E-09,
+0.20827357888452780935E-09,
+0.25438347678424908063E-09,
+0.31070775906120548243E-09,
+0.37949543960166480335E-09,
+0.46352165150554629058E-09,
+0.56614048928061041213E-09,
+0.69149327357632214648E-09,
+0.84458207882202713872E-09,
+0.10315871013042910049E-08,
+0.12599679520777700732E-08,
+0.15389476810193000824E-08,
+0.18796505921747109347E-08,
+0.22958410530823679168E-08,
+0.28041080392694730677E-08,
+0.34249937978079458891E-08,
+0.41832358233125644067E-08,
+0.51094925678131643906E-08,
+0.62406516508546298375E-08,
+0.76224707236306606749E-08,
+0.93099537030146089046E-08,
+0.11371395622837669325E-07,
+0.13888811603603460790E-07,
+0.16964137540446880094E-07,
+0.20719660567011048447E-07,
+0.25307532985450009557E-07,
+0.30910082760196839954E-07,
+0.37754423983369756739E-07,
+0.46112394911463966981E-07,
+0.56323015017988116740E-07,
+0.68791561040010018689E-07,
+0.84024115221375004322E-07,
+0.10262487036321569423E-06,
+0.12534932630323100331E-06,
+0.15309818493173440690E-06,
+0.18699933285775400780E-06,
+0.22839543319719978897E-06,
+0.27897038209650021238E-06,
+0.34072557173474452451E-06,
+0.41617511631609012044E-06,
+0.50830216571405257032E-06,
+0.62086055851273829343E-06,
+0.75829654716288451693E-06,
+0.92621529324795927674E-06,
+0.11312433484295780322E-05,
+0.13817506779893170808E-05,
+0.16876126549713120575E-05,
+0.20613285048301949073E-05,
+0.25176142217059249495E-05,
+0.30751364937151691114E-05,
+0.37558230263550338492E-05,
+0.45875527884742903516E-05,
+0.56029966733669012944E-05,
+0.68437947583602416914E-05,
+0.83586201447068474255E-05,
+0.10209670082926559548E-04,
+0.12469450254224749995E-04,
+0.15230868871022190138E-04,
+0.18601920832727638478E-04,
+0.22721395800711319485E-04,
+0.27750126132155010419E-04,
+0.33895447798826631189E-04,
+0.41396841136470921454E-04,
+0.50564046316342118052E-04,
+0.61753575721436104002E-04,
+0.75428141719150856360E-04,
+0.92118338007583430976E-04,
+0.11251534681498950364E-03,
+0.13740856459760000547E-03,
+0.16783029354650548710E-03,
+0.20495440270807768974E-03,
+0.25032223970649432505E-03,
+0.30567824291028637771E-03,
+0.37332275750272562662E-03,
+0.45584569317397240131E-03,
+0.55667758728412204596E-03,
+0.67965842762967730497E-03,
+0.82989825334180589590E-03,
+0.10130793883812590737E-02,
+0.12367998790718090669E-02,
+0.15094441288791659965E-02,
+0.18422782918639890679E-02,
+0.22476208557991408411E-02,
+0.27421062075955880862E-02,
+0.33437164053099180556E-02,
+0.40768527847886001578E-02,
+0.49675073471938113734E-02,
+0.60511176276551595712E-02,
+0.73646815739407444149E-02,
+0.89588637538056889453E-02,
+0.10885052122857430054E-01,
+0.13213887638701850638E-01,
+0.16013879136554731025E-01,
+0.19379495481742049084E-01,
+0.23395566125555520426E-01,
+0.28179341735834879251E-01,
+0.33820790606197338735E-01,
+0.40444641201110451134E-01,
+0.48109746447546619663E-01,
+0.56899341828119280595E-01,
+0.66751684235759015107E-01,
+0.77591144073115236868E-01,
+0.89047612974465659152E-01,
+0.10065405918556659393E+00,
+0.11140105420732690500E+00,
+0.12006932932879070541E+00,
+0.12458597468885210247E+00,
+0.12268765549548429905E+00,
+0.11115942050671910601E+00,
+0.87319954786645864742E-01,
+0.48465000302246638575E-01,
-0.49561566373757083917E-02,
-0.69471081820978636268E-01,
-0.13351269533458298699E+00,
-0.17957507285653320772E+00,
-0.18191106295048839470E+00,
-0.12098476462017759836E+00,
+0.57914272269164483384E-02,
+0.15348128813633118983E+00,
+0.23522097310698558692E+00,
+0.15150400266403860061E+00,
-0.82790857821451305232E-01,
-0.27115431040159521103E+00,
-0.13312798063762890100E+00,
+0.22420582796659790925E+00,
+0.23042922487820899358E+00,
-0.25728138031301517330E+00,
-0.14755494381924760816E+00,
+0.36119355267312441837E+00,
-0.24353715522887228739E+00,
+0.38114547256147109089E-01,
+0.82736503214593373756E-01,
-0.10914677811197480428E+00,
+0.89643285228612118454E-01,
-0.60977888159322063411E-01,
+0.37801231818370660542E-01,
-0.22438621211053739329E-01,
+0.13156278189915569798E-01,
-0.77896933116771488112E-02,
+0.47370324617059750630E-02,
-0.29965293695965681403E-02,
+0.19878544860469768082E-02,
-0.13869827135561199356E-02,
+0.10157400415733200925E-02,
-0.77631830897451124893E-03,
+0.61460402632747919080E-03,
-0.50020690522478944255E-03,
+0.41570616801530989705E-03,
-0.35086447759715891749E-03,
+0.29949364033671969747E-03,
-0.25773573414907620556E-03,
+0.22310488448276601017E-03,
-0.19394286742651010405E-03,
+0.16910356690987170454E-03,
-0.14776630535110279563E-03,
+0.12932306435161670878E-03,
-0.11330886340153000630E-03,
+0.99357870873694533213E-04,
-0.87175171695487733894E-04,
+0.76518203465147482511E-04,
-0.67184226920608184730E-04,
+0.59001625485470532949E-04,
-0.51823700437172301393E-04,
+0.45524131447897800190E-04,
-0.39993558219308811687E-04,
+0.35136924058234570150E-04,
-0.30871356264610351938E-04,
+0.27124444492712818783E-04,
-0.23832821622649580026E-04,
+0.20940974022723349952E-04,
-0.18400228343346008335E-04,
+0.16167881311147351016E-04,
-0.14206450345841819494E-04,
+0.12483025923096489624E-04,
-0.10968708114345040680E-04,
+0.96381137476371433619E-05,
-0.84689451209231461783E-05,
+0.74416131426310713740E-05,
-0.65389076895947963034E-05,
+0.57457083047103120349E-05,
-0.50487298647161201493E-05,
+0.44362992864155191501E-05,
-0.38981597741651851768E-05,
+0.34252990553006400639E-05,
-0.30097983612462208859E-05,
+0.26446996057275441348E-05,
-0.23238887351302340716E-05,
+0.20419933647589090787E-05,
-0.17942928642745300170E-05,
+0.15766392837610099303E-05,
-0.13853878318735780200E-05,
+0.12173358208997559817E-05,
-0.10696690610117151049E-05,
+0.93991475334313001620E-06,
-0.82590006822179900410E-06,
+0.72571573986650604055E-06,
-0.63768409395308406728E-06,
+0.56033096589579911757E-06,
-0.49236101932854606775E-06,
+0.43263604794155821972E-06,
-0.38015590945392312373E-06,
+0.33404177953802387996E-06,
-0.29352143989559692218E-06,
+0.25791634724263857612E-06,
-0.22663026755387299218E-06,
+0.19913929019334100136E-06,
-0.17498305605429440553E-06,
+0.15375705002049011184E-06,
-0.13510582667935480436E-06,
+0.11871705693399870160E-06,
-0.10431629758749350038E-06,
+0.91662396276475694184E-07,
-0.80543453607028647290E-07,
+0.70773274428481856046E-07,
-0.62188249446989189968E-07,
+0.54644615505335029221E-07,
-0.48016048443646231508E-07,
+0.42191547784261369808E-07,
-0.37073577780952398937E-07,
+0.32576433988135847120E-07,
-0.28624808133909398953E-07,
+0.25152527127147581427E-07,
-0.22101444936595110588E-07,
+0.19420468820503340806E-07,
-0.17064703711658711163E-07,
+0.14994700450203629605E-07,
-0.13175795208633650552E-07,
+0.11577529007302610104E-07,
-0.10173137628831489796E-07,
+0.89391034277419880612E-08,
-0.78547615254943383801E-08,
+0.69019537690386798258E-08,
-0.60647246504485460851E-08,
+0.53290541108617648523E-08,
-0.46826227654829832319E-08,
+0.41146056122897838021E-08,
-0.36154907601472161940E-08,
+0.31769201408808051073E-08,
-0.27915495445014601903E-08,
+0.24529256362912200658E-08,
-0.21553778928767579448E-08,
+0.18939236446342600392E-08,
-0.16641846353897590312E-08,
+0.14623137046133780063E-08,
-0.12849303645740829450E-08,
+0.11290641920775340868E-08,
-0.99210508606754888054E-09,
+0.87175955886335064848E-09,
-0.76601232990455893213E-09,
+0.67309257867770258852E-09,
-0.59144429108839117984E-09,
+0.51970020258742657674E-09,
-0.45665890207353687588E-09,
+0.40126471338250552359E-09,
-0.35259001730495680327E-09,
+0.30981971788986289322E-09,
-0.27223759293244408980E-09,
+0.23921430022514762304E-09,
-0.21019683877088560052E-09,
+0.18469928839465210504E-09,
-0.16229467261876449390E-09,
+0.14260780857078909327E-09,
-0.12530902424439949164E-09,
+0.11010863790384879428E-09,
-0.96752107149079824750E-10,
+0.85015766394465004630E-10,
-0.74703081400610626905E-10,
+0.65641358155343214620E-10,
-0.57678850985617859679E-10,
+0.50682221459754282741E-10,
-0.44534305525909120100E-10,
+0.39132151504364007283E-10,
-0.34385296082594761887E-10,
+0.30214249439239317785E-10,
-0.26549164124680559140E-10,
+0.23328665408564599349E-10,
-0.20498823510896081544E-10,
+0.18012250506600650469E-10,
-0.15827306778509629286E-10,
+0.13907403728951850551E-10,
-0.12220391074163700618E-10,
+0.10738018462452050425E-10,
-0.94354624003716234485E-11,
+0.82909105640953193728E-11,
-0.72851965346947523766E-11,
+0.64014788411436639934E-11,
-0.56249589367146987257E-11,
+0.49426333858928202302E-11,
-0.43430761116809759680E-11,
+0.38162470568545827330E-11,
-0.33533240552467311054E-11,
+0.29465550976975220819E-11,
-0.25891285186428910646E-11,
+0.22750589294212621855E-11,
-0.19990869881930792011E-11,
+0.17565913281172699705E-11,
-0.15435111689614020217E-11,
+0.13562783161689700960E-11,
-0.11917574086305238998E-11,
+0.10471934145827610682E-11,
-0.92016549643814607864E-12,
+0.80854647197038528016E-12,
-0.71046719298279401734E-12,
+0.62428524494839663246E-12,
-0.54855744348363701401E-12,
+0.48201566709453555482E-12,
-0.42354562149103289211E-12,
+0.37216817985480538490E-12,
-0.32702298658923321260E-12,
+0.28735404998800310208E-12,
-0.25249708256169828971E-12,
+0.22186837702370389530E-12,
-0.19495503165314128815E-12,
+0.17130636135177430412E-12,
-0.15052635056794931119E-12,
+0.13226702170589389284E-12,
-0.11622260796808300942E-12,
+0.10212443304988860003E-12,
-0.89736411943535084833E-13,
+0.78851097509314687508E-13,
-0.69286206610625636538E-13,
+0.60881567639821682927E-13,
-0.53496438318744010298E-13,
+0.47007148858659282416E-13,
-0.41305031012602458038E-13,
+0.36294598340360191951E-13,
-0.31891947213064369610E-13,
+0.28023351780988580919E-13,
-0.24624029376283279094E-13,
+0.21637055676372050574E-13,
-0.19012411461508211104E-13,
+0.16706145003659701281E-13,
-0.14679636060291389006E-13,
+0.12898949148078830678E-13,
-0.11334265266611379683E-13,
+0.99593825558268706535E-14,
-0.87512775252863140427E-14,
+0.76897195077421143642E-14,
-0.67569318807328292835E-14,
+0.59372943830891981248E-14,
-0.52170815413984568005E-14,
+0.45842328261723863703E-14,
-0.40281506888097158469E-14,
+0.35395230973258291850E-14,
-0.31101675990681859105E-14,
+0.27328942991223000800E-14,
-0.24013854598749791415E-14,
+0.21100897055373030150E-14,
-0.18541290599993040151E-14,
+0.16292172612908320081E-14,
-0.14315879847593459752E-14,
+0.12579317730060459754E-14,
-0.11053406164233719234E-14,
+0.97125925629132513426E-15,
-0.85344239496416429968E-15,
+0.74991709659831521783E-15,
-0.65894974879250159170E-15,
+0.57901703188703568188E-15,
-0.50878040978025863482E-15,
+0.44706371509062259811E-15,
-0.39283345331036878858E-15,
+0.34518149612852799007E-15,
-0.30330987410939582363E-15,
+0.26651741406787180955E-15,
-0.23418799737396022297E-15,
+0.20578024256254929268E-15,
-0.18081843947571900690E-15,
+0.15888458312267581200E-15,
-0.13961137385800899984E-15,
+0.12267606666074510376E-15,
-0.10779506651556279801E-15,
+0.94719179391603797610E-16,
-0.83229439292786975771E-16,
+0.73133441500293154255E-16,
-0.64262120604484965377E-16,
+0.56466919371882109638E-16,
-0.49617301037651720597E-16,
+0.43598563364994760812E-16,
-0.38309917866133909996E-16,
+0.33662802019951652661E-16,
-0.29579396223041629810E-16,
+0.25991320639354369445E-16,
-0.22838490126158601174E-16,
+0.20068108061152711033E-16,
-0.17633782221571330287E-16,
+0.15494747909989438574E-16,
-0.13615185317456429361E-16,
+0.11963619692670830272E-16,
-0.10512394272558709913E-16,
+0.92372071480646483496E-17,
-0.81167043096073984687E-17,
+0.71321220574247113037E-17,
-0.62669727886873747397E-17,
+0.55067688996430172615E-17,
-0.48387801793162163364E-17,
+0.42518206321314128635E-17,
-0.37360611596341719162E-17,
+0.32828649645187700314E-17,
-0.28846429206752079096E-17,
+0.25347264873153391346E-17,
-0.22272560390247178611E-17,
+0.19570827417369101585E-17,
-0.17196823314652230881E-17,
+0.15110793519499210062E-17,
-0.13277805825221979748E-17,
+0.11667165413822330724E-17,
-0.10251900847168659743E-17,
+0.90083124090830315999E-18,
-0.79155752349720990603E-18,
+0.69553905830937584557E-18,
-0.61116794077226843712E-18,
+0.53703131028706945667E-18,
-0.47188769076765341320E-18,
+0.41464620115119749872E-18,
-0.36434828774274431505E-18,
+0.32015167248500091253E-18,
-0.28131624835279290921E-18,
+0.24719168567911820595E-18,
-0.21720654187174320654E-18,
+0.19085869215550189721E-18,
-0.16770692109721899111E-18,
+0.14736353410746910352E-18,
-0.12948786519216900428E-18,
+0.11378057223455149305E-18,
-0.99978624276428549682E-19,
+0.87850896856935804010E-19,
-0.77194301650481244444E-19,
+0.67830385593241861930E-19,
-0.59602342548611573044E-19,
+0.52372387468676202365E-19,
-0.46019449077998791288E-19,
+0.40437142440414807125E-19,
-0.35531987457892000724E-19,
+0.31221843469976618630E-19,
-0.27434533741424270108E-19,
+0.24106636804928459342E-19,
-0.21182424419102399996E-19,
+0.18612928356413968765E-19,
-0.16355120393022199627E-19,
+0.14371191768318589670E-19,
-0.12627920047644379558E-19,
+0.11096112785317059883E-19,
-0.97501186719036165739E-20,
+0.85673979808058807363E-20,
-0.75281451224231245595E-20,
+0.66149569855872109159E-20,
-0.58125415113657893624E-20,
+0.51074616176521397340E-20,
-0.44879101854824920831E-20,
+0.39435123390814399527E-20,
-0.34651517093082292638E-20,
+0.30448177717368800233E-20,
-0.26754717030230440586E-20,
+0.23509285093699011334E-20,
-0.20657534540814548706E-20,
+0.18151710504142631532E-20,
-0.15949850948474660527E-20,
+0.14015083996708770500E-20,
-0.12315010469494319376E-20,
+0.10821161305372590522E-20,
-0.95085207960662486644E-21,
+0.83551076750596628203E-21,
-0.73416070535124345550E-21,
+0.64510470249568779156E-21,
-0.56685144894552668532E-21,
+0.49809054123125183129E-21,
-0.43767053435643358195E-21,
+0.38457965596782228367E-21,
-0.33792886257541818238E-21,
+0.29693695347390241880E-21,
-0.26091749061412948769E-21,
+0.22926730418560010001E-21,
-0.20145639198759520765E-21,
+0.17701904387406560389E-21,
-0.15554604225258168932E-21,
+0.13667780796729550641E-21,
-0.12009837779858251158E-21,
+0.10553011379060780116E-21,
-0.92729055585803990884E-22,
+0.81480836646395174933E-22,
-0.71597094891875700200E-22,
+0.62912317547278588468E-22,
-0.55281068025898321612E-22,
+0.48575549320856098216E-22,
-0.42683463880645999618E-22,
+0.37506134255287311446E-22,
-0.32956852260392350507E-22,
+0.28959427878761049247E-22,
-0.25446913153691919200E-22,
+0.22360480394754259887E-22,
-0.19648436888446069881E-22,
+0.17265359799157371192E-22,
-0.15171336029025659557E-22,
+0.13331293566397819119E-22,
-0.11714413365284629986E-22,
+0.10293612991331600087E-22,
-0.90450942661818855010E-23,
+0.79479472072663889120E-23,
-0.69838025973983943288E-23,
+0.61365260759698707238E-23,
-0.53919477932897098293E-23,
+0.47376234574340661915E-23,
-0.41626240529454467843E-23,
+0.36573513415638608941E-23,
-0.32133750545472298724E-23,
+0.28232876298439711191E-23,
-0.24805746766402519629E-23,
+0.21795021088492381699E-23,
-0.19150207966391389939E-23,
+0.16826867531148651179E-23,
-0.14785926095987099109E-23,
+0.12993065708576839773E-23,
-0.11418169017687040810E-23,
+0.10034812450227850599E-23,
-0.88198046609572075136E-24,
+0.77527684778131062791E-24,
-0.68157678580025223715E-24,
+0.59929859006652480651E-24,
-0.52704590637343920302E-24,
+0.46358624111797927966E-24,
-0.40783289235105509668E-24,
+0.35882870194420578191E-24,
-0.31573129057568951175E-24,
+0.27780031811537501369E-24,
-0.24438721059930989498E-24,
+0.21492709123302868776E-24,
-0.18893185489531158875E-24,
+0.16598283447655300523E-24,
-0.14572197983278360944E-24,
+0.12784189795680629463E-24,
-0.11207611655384429414E-24,
+0.98190635833986939235E-25,
-0.85977069575473510383E-25,
+0.75247618025397713641E-25,
-0.65832296928724367365E-25,
+0.57578153084183532562E-25,
-0.50349088175171190647E-25,
+0.44024756065989681357E-25,
-0.38498191971011007846E-25,
+0.33673291115583042791E-25,
-0.29463411791224339510E-25,
+0.25791217847239958719E-25,
-0.22588731181811621204E-25,
+0.19796670767579898895E-25,
-0.17363295672276158774E-25,
+0.15243569288426309447E-25,
-0.13398787953334260281E-25,
+0.11796045820480120133E-25,
-0.10407147490908270710E-25,
+0.92071944889040744035E-26,
-0.81731249295591442672E-26,
+0.72825159703487444195E-26,
-0.65131006447129183541E-26,
+0.58430301262485386924E-26,
-0.52513930081011199285E-26,
+0.47187919679302219783E-26,
-0.42284069142292412393E-26,
+0.37676954747502728537E-26,
-0.33299134001135826479E-26,
+0.29143004338630110718E-26,
-0.25243668234065648260E-26,
+0.21646903157623978348E-26,
-0.18376734028052161580E-26,
+0.15423017366879009263E-26,
-0.12758944190588119779E-26,
+0.10371662830395429178E-26,
-0.82748173500706471962E-27,
+0.64909427840638429032E-27,
-0.50234666376562531025E-27,
+0.38452110973130778698E-27,
-0.29091636205058451455E-27,
+0.21678009467166822096E-27,
-0.15874578619111640200E-27,
+0.11537394235020309101E-27,
-0.86900364189788941857E-28,
+0.74355723662636970071E-28,
-0.78471428315427385396E-28,
+0.98949852128730596091E-28,
-0.13427202805922251023E-27,
+0.18174242734021449278E-27,
-0.23763619609508699858E-27,
+0.29778198107110528091E-27,
-0.35868369680655068529E-27,
+0.41844766665021181973E-27,
-0.47660851066880372752E-27,
+0.53287774452581460041E-27,
-0.58588249858342115784E-27,
+0.63294098597067369917E-27,
-0.67092689718604759703E-27,
+0.69754161721794173542E-27,
-0.71229292612293631973E-27,
+0.71678213553979546309E-27,
-0.71422093211775989035E-27,
+0.70847857438160299782E-27,
-0.70324864718393631473E-27,
+0.70176504791510964044E-27,
-0.70696084721646144402E-27,
+0.72149205056137611593E-27], dtype='d')
else:
raise NotImplementedError("%d-order Hankel transform "
"not implemented" % order)
def hankel_points_ascii():
return N.array([8.9170998013274418e-14,
9.8549193740052245e-14,
1.0891370292130841e-13,
1.2036825704856076e-13,
1.3302749714952345e-13,
1.4701812115404443e-13,
1.6248015192957209e-13,
1.7956833867707590e-13,
1.9845370571306282e-13,
2.1932526413842005e-13,
2.4239190352504162e-13,
2.6788448255287407e-13,
2.9605813952117967e-13,
3.2719484585839035e-13,
3.6160622818693727e-13,
3.9963668718722961e-13,
4.4166684447542096e-13,
4.8811735199247527e-13,
5.3945310203017795e-13,
5.9618788002944785e-13,
6.5888950671771899e-13,
7.2818552104963217e-13,
8.0476946082781583e-13,
8.8940780386232124e-13,
9.8294763913816720e-13,
1.0863251447666186e-12,
1.2005749575703847e-12,
1.3268405280766938e-12,
1.4663855645544968e-12,
1.6206066806315702e-12,
1.7910473730731204e-12,
1.9794134696161976e-12,
2.1875902014670364e-12,
2.4176610713286156e-12,
2.6719287057960000e-12,
2.9529379008172425e-12,
3.2635010908665675e-12,
3.6067264967338821e-12,
3.9860492336431492e-12,
4.4052656910401313e-12,
4.8685715281339743e-12,
5.3806036654647833e-12,
5.9464866927629101e-12,
6.5718841575654077e-12,
7.2630552479033658e-12,
8.0269174363595134e-12,
8.8711157124588670e-12,
9.8040990962934688e-12,
1.0835205199155280e-11,
1.1974753677488471e-11,
1.3234149515479672e-11,
1.4625997169973058e-11,
1.6164226720110948e-11,
1.7864233284247930e-11,
1.9743031099469828e-11,
2.1819423805797136e-11,
2.4114192639334462e-11,
2.6650304417866294e-11,
2.9453141400488783e-11,
3.2550755321790057e-11,
3.5974148143038491e-11,
3.9757582330231206e-11,
4.3938923764369768e-11,
4.8560020715924429e-11,
5.3667122676390673e-11,
5.9311343238745088e-11,
6.5549171659463761e-11,
7.2443038221987792e-11,
8.0061939059983487e-11,
8.8482126693838504e-11,
9.7787873191515278e-11,
1.0807231359173195e-10,
1.1943837803073370e-10,
1.3199982190169224e-10,
1.4588236435691521e-10,
1.6122494654737812e-10,
1.7818112219246310e-10,
1.9692059439719362e-10,
2.1763091409794871e-10,
2.4051935713527238e-10,
2.6581499874015355e-10,
2.9377100619593265e-10,
3.2466717262156566e-10,
3.5881271723520049e-10,
3.9654938012404428e-10,
4.3825484249401899e-10,
4.8434650663021337e-10,
5.3528567339924565e-10,
5.9158215910338558e-10,
6.5379939789346253e-10,
7.2256008080722362e-10,
7.9855238787053352e-10,
8.8253687563437822e-10,
9.7535408908045947e-10,
1.0779329740778886e-09,
1.1913001745856734e-09,
1.3165903076505279e-09,
1.4550573190356333e-09,
1.6080870331313015e-09,
1.7772110227512649e-09,
1.9641219376281762e-09,
2.1706904450210516e-09,
2.3989839519819520e-09,
2.6512872966606394e-09,
2.9301256157327411e-09,
3.2382896168163261e-09,
3.5788635088117363e-09,
3.9552558697009004e-09,
4.3712337607414382e-09,
4.8309604284818817e-09,
5.3390369719324459e-09,
5.9005483919104070e-09,
6.5211144834374116e-09,
7.2069460805369272e-09,
7.9649072163486862e-09,
8.8025838206794284e-09,
9.7283596425381269e-09,
1.0751500157513941e-08,
1.1882245299770154e-08,
1.3131911946747030e-08,
1.4513007182274982e-08,
1.6039353471673310e-08,
1.7726227001629019e-08,
1.9590510569407677e-08,
2.1650862551562963e-08,
2.3927903643240499e-08,
2.6444423237025737e-08,
2.9225607506844726e-08,
3.2299291479658129e-08,
3.5696237617766722e-08,
3.9450443699873716e-08,
4.3599483082281089e-08,
4.8184880745668262e-08,
5.3252528891055793e-08,
5.8853146244378082e-08,
6.5042785666539686e-08,
7.1883395149287240e-08,
7.9443437811532343e-08,
8.7798577101256825e-08,
9.7032434060731539e-08,
1.0723742423401342e-07,
1.1851568259277232e-07,
1.3098008573741623e-07,
1.4475538160404734e-07,
1.5997943798373573e-07,
1.7680462234971138e-07,
1.9539932680224871e-07,
2.1594965339340473e-07,
2.3866127669890702e-07,
2.6376150227843728e-07,
2.9150154162607256e-07,
3.2215902637935327e-07,
3.5604078695002664e-07,
3.9348592338593700e-07,
4.3486919919827997e-07,
4.8060479212078480e-07,
5.3115043933968360e-07,
5.8701201868132178e-07,
6.4874861160747570e-07,
7.1697809869053571e-07,
7.9238334356995170e-07,
8.7571902728105488e-07,
9.6781920135651654e-07,
1.0696056352944216e-06,
1.1820970419372223e-06,
1.3064192730922673e-06,
1.4438165874351013e-06,
1.5956641034684996e-06,
1.7634815621706371e-06,
1.9489485370736003e-06,
2.1539212439998211e-06,
2.3804511186939235e-06,
2.6308053482811660e-06,
2.9074895620382204e-06,
3.2132729085731429e-06,
3.5512157703953872e-06,
3.9247003932525885e-06,
4.3374647367828189e-06,
4.7936398852710157e-06,
5.2977913929290109e-06,
5.8549649774966190e-06,
6.4707370194807025e-06,
7.1512703724455683e-06,
7.9033760429228480e-06,
8.7345813572541237e-06,
9.6532052976029776e-06,
1.0668441761124589e-05,
1.1790451575578641e-05,
1.3030464192308714e-05,
1.4400890074365673e-05,
1.5915444904593194e-05,
1.7589286856791647e-05,
1.9439168303816350e-05,
2.1483603480955747e-05,
2.3743053782621043e-05,
2.6240132546858776e-05,
2.8999831377238596e-05,
3.2049770267221755e-05,
3.5420474030339066e-05,
3.9145677802784465e-05,
4.3262664675996812e-05,
4.7812638838370288e-05,
5.2841137960621061e-05,
5.8398488952101537e-05,
6.4540311649424626e-05,
7.1328075478483034e-05,
7.8829714661124184e-05,
8.7120308123675967e-05,
9.6282830912076270e-05,
1.0640898463402168e-04,
1.1760011523947924e-04,
1.2996822732501724e-04,
1.4363710511345378e-04,
1.5874355132796403e-04,
1.7543875635971472e-04,
1.9388981143211579e-04,
2.1428138090594562e-04,
2.3681755046234149e-04,
2.6172386966089197e-04,
2.8924960931543914e-04,
3.1967025628016629e-04,
3.5329027061462893e-04,
3.9044613272236350e-04,
4.3150971095986065e-04,
4.7689198342006658e-04,
5.2704715113927156e-04,
5.8247718389374341e-04,
6.4373684408196633e-04,
7.1143923897318674e-04,
7.8626195689103691e-04,
8.6895384874522254e-04,
9.6034252278312515e-04,
1.0613426275713101e-03,
1.1729650061058051e-03,
1.2963268126685603e-03,
1.4326626936829910e-03,
1.5833371444703617e-03,
1.7498581655775839e-03,
1.9338923553535471e-03,
2.1372815898255564e-03,
2.3620614568136901e-03,
2.6104816287778878e-03,
2.8850283782960702e-03,
3.1884494615157647e-03,
3.5237816186211822e-03,
3.8943809665496639e-03,
4.3039565881380203e-03,
4.7566076538702283e-03,
5.2568644477534125e-03,
5.8097337079228714e-03,
6.4207487357601564e-03,
7.0960247750331065e-03,
7.8423202153108801e-03,
8.6671042321983371e-03,
9.5786315413559676e-03,
1.0586025014468731e-02,
1.1699366984012178e-02,
1.2929800150624660e-02,
1.4289639103000504e-02,
1.5792493566432742e-02,
1.7453404613518231e-02,
1.9288995200267688e-02,
2.1317636534236600e-02,
2.3559631939745231e-02,
2.6037420060372587e-02,
2.8775799432443259e-02,
3.1802176677114019e-02,
3.5146840795050052e-02,
3.8843266308924096e-02,
4.2928448287690518e-02,
4.7443272605669898e-02,
5.2432925142121424e-02,
5.7947344016710048e-02,
6.4041719386992838e-02,
7.0777045810065886e-02,
7.8220732696592687e-02,
8.6447278966843177e-02,
9.5539018660927705e-02,
1.0558694496554391e-01,
1.1669162090437306e-01,
1.2896418580662142e-01,
1.4252746762678220e-01,
1.5751721224808804e-01,
1.7408344207293611e-01,
1.9239195749751564e-01,
2.1262599629790035e-01,
2.3498806753529980e-01,
2.5970197833480957e-01,
2.8701507382234348e-01,
3.1720071263778915e-01,
3.5056100280015512e-01,
3.8742982530616715e-01,
4.2817617572350458e-01,
4.7320785722246539e-01,
5.2297556200716211e-01,
5.7797738199458315e-01,
6.3876379388591276e-01,
7.0594316852237804e-01,
7.8018785966510817e-01,
8.6224093313756223e-01,
9.5292360367804285e-01,
1.0531434539328173e+00,
1.1639035178482904e+00,
1.2863123193718711e+00,
1.4215949669322265e+00,
1.5711054147362089e+00,
1.7363400135976372e+00,
1.9189524869191834e+00,
2.1207704817120212e+00,
2.3438138603014083e+00,
2.5903149157877352e+00,
2.8627407135861755e+00,
3.1638177826465683e+00,
3.4965594034715681e+00,
3.8642957660407120e+00,
4.2707072994710522e+00,
4.7198615069887930e+00,
5.2162536748687147e+00,
5.7648518627701284e+00,
6.3711466257477705e+00,
7.0412059655722290e+00,
7.7817360613311877e+00,
8.6001483871237632e+00,
9.5046338885843706e+00,
1.0504244960619703e+01,
1.1608986046819572e+01,
1.2829913767290970e+01,
1.4179247577028352e+01,
1.5670492062326328e+01,
1.7318572099218340e+01,
1.9139982226652432e+01,
2.1152951729381048e+01,
2.3377627082769912e+01,
2.5836273585494951e+01,
2.8553498198135060e+01,
3.1556495817904278e+01,
3.4875321454323611e+01,
3.8543191029858157e+01,
4.2596813816033411e+01,
4.7076759832163077e+01,
5.2027865883738443e+01,
5.7499684304247886e+01,
6.3546978891585546e+01,
7.0230273002547406e+01,
7.7616455290928698e+01,
8.5779449151653139e+01,
9.4800952570955843e+01,
1.0477125578728921e+02,
1.1579014494637693e+02,
1.2796790079449971e+02,
1.4142640240527066e+02,
1.5630034698636896e+02,
1.7273859797446769e+02,
1.9090567491054267e+02,
2.1098340000673559e+02,
2.3317271788416559e+02,
2.5769570669423729e+02,
2.8479780075142304e+02,
3.1475024692237560e+02,
3.4785281935573863e+02,
3.8443681972258412e+02,
4.2486839299489054e+02,
4.6955219194748827e+02,
5.1893542705903837e+02,
5.7351234234481581e+02,
6.3382916191693528e+02,
7.0048955677885772e+02,
7.7416068656769369e+02,
8.5557987671209173e+02,
9.4556199783295187e+02,
1.0450076212424869e+03,
1.1549120321646080e+03,
1.2763751908839718e+03,
1.4106127415182191e+03,
1.5589681785928965e+03,
1.7229262931862318e+03,
1.9041280332173003e+03,
2.1043869266043412e+03,
2.3257072316617105e+03,
2.5703039963907459e+03,
2.8406252274246667e+03,
3.1393763905017645e+03,
3.4695474876758481e+03,
3.8344429822617740e+03,
4.2377148710149695e+03,
4.6833992345424385e+03,
5.1759566317540530e+03,
5.7203167426353639e+03,
6.3219277061418234e+03,
6.9868106470046323e+03,
7.7216199371708199e+03,
8.5337097949943000e+03,
9.4312078887249972e+03,
1.0423096680944496e+04,
1.1519303328070666e+04,
1.2730799034675721e+04,
1.4069708856989137e+04,
1.5549433054535755e+04,
1.7184781204437102e+04,
1.8992120420636886e+04,
2.0989539161478522e+04,
2.3197028265075980e+04,
2.5636681024340771e+04,
2.8332914304083228e+04,
3.1312712913202311e+04,
3.4605899677722984e+04,
3.8245433917662871e+04,
4.2267741314984989e+04,
4.6713078474065944e+04,
5.1625935823323234e+04,
5.7055482890376610e+04,
6.3056060407206925e+04,
6.9687724170466376e+04,
7.7016846100076829e+04,
8.5116778511712779e+04,
9.4068588251431182e+04,
1.0396186803991429e+05,
1.1489563314653141e+05,
1.2697931236743495e+05,
1.4033384322573253e+05,
1.5509288235486683e+05,
1.7140414317912661e+05,
1.8943087427924512e+05,
2.0935349323906592e+05,
2.3137139232536239e+05,
2.5570493407266162e+05,
2.8259765674555639e+05,
3.1231871175151330e+05,
3.4516555739862355e+05,
3.8146693595832947e+05,
4.2158616382857127e+05,
4.6592476772641251e+05,
5.1492650330238225e+05,
5.6908179639617680e+05,
6.2893265138330159e+05,
6.9507807573703467e+05,
7.6818007509655319e+05,
8.4897027884187771e+05,
9.3825726248661662e+05,
1.0369346401734781e+06,
1.1459900082649642e+06,
1.2665148295397097e+06,
1.3997153569188234e+06,
1.5469247060505589e+06,
1.7096161975797976e+06,
1.8894181026362628e+06,
2.0881299391192668e+06,
2.3077404818776865e+06,
2.5504476670371005e+06,
2.8186805896832864e+06,
3.1151238150622859e+06,
3.4427442466117009e+06,
3.8048208197275074e+06,
4.2049773184515880e+06,
4.6472186435204167e+06,
5.1359708947577253e+06,
5.6761256689692009e+06,
6.2730890166874416e+06,
6.9328355477427216e+06,
7.6619682271663100e+06,
8.4677844598838333e+06,
9.3583491255965196e+06,
1.0342575294807941e+07,
1.1430313433829404e+07,
1.2632449991557652e+07,
1.3961016354714479e+07,
1.5429309262008933e+07,
1.7052023882367507e+07,
1.8845400889123969e+07,
2.0827389002136763e+07,
2.3017824624610133e+07,
2.5438630372484632e+07,
2.8114034483345896e+07,
3.1070813300769802e+07,
3.4338559260968812e+07,
3.7949977063839935e+07,
4.1941210992593758e+07,
4.6352206657889292e+07,
5.1227110786931656e+07,
5.6614713058756173e+07,
6.2568934407734923e+07,
6.9149366682411388e+07,
7.6421869060750201e+07,
8.4459227190926239e+07,
9.3341881654555663e+07,
1.0315873304307374e+08,
1.1400803170473446e+08,
1.2599836106711893e+08,
1.3924972437657478e+08,
1.5389474573104006e+08,
1.7007999742659190e+08,
1.8796746690225038e+08,
2.0773617796471399e+08,
2.2958398251878911e+08,
2.5372954073575363e+08,
2.8041450947784531e+08,
3.0990596088136274e+08,
3.4249905530437142e+08,
3.7851999539077419e+08,
4.1832929081601185e+08,
4.6232536638906646e+08,
5.1094854962186480e+08,
5.6468547767501700e+08,
6.2407396778608418e+08,
6.8970839992525887e+08,
7.6224566554988432e+08,
8.4241174199494874e+08,
9.3100895829826319e+08,
1.0289240251791439e+09,
1.1371369095373254e+09,
1.2567306422910707e+09,
1.3889021577146211e+09,
1.5349742727587159e+09,
1.6964089262472496e+09,
1.8748218104523966e+09,
2.0719985414859231e+09,
2.2899125303454008e+09,
2.5307447334747562e+09,
2.7969054805094066e+09,
3.0910585976653914e+09,
3.4161480682074847e+09,
3.7754274968232164e+09,
4.1724926727921586e+09,
4.6113175578536234e+09,
5.0962940589514427e+09,
5.6322759839148350e+09,
6.2246276199985800e+09,
6.8792774214728651e+09,
7.6027773435862408e+09,
8.4023684167359400e+09,
9.2860532171338844e+09,
1.0262675959279177e+10,
1.1342011011829447e+10,
1.2534860722767656e+10,
1.3853163532931507e+10,
1.5310113459941998e+10,
1.6920292148366428e+10,
1.8699814807718300e+10,
2.0666491498890625e+10,
2.2840005383231522e+10,
2.5242109718238716e+10,
2.7896845571472111e+10,
3.0830782431638401e+10,
3.4073284124964363e+10,
3.7656802698239258e+10,
4.1617203209806610e+10,
4.5994122679122765e+10,
5.0831366787370079e+10,
5.6177348299437775e+10,
6.2085571595145073e+10,
6.8615168159057838e+10,
7.5831488388260895e+10,
8.3806755641097107e+10,
9.2620789072812759e+10,
1.0236180249249139e+11,
1.1312728723650484e+11,
1.2502498789457556e+11,
1.3817398065384482e+11,
1.5270586505337646e+11,
1.6876608107657605e+11,
1.8651536476342874e+11,
2.0613135691081287e+11,
2.2781038096130206e+11,
2.5176940787416525e+11,
2.7824822764365344e+11,
3.0751184919785828e+11,
3.3985315269713715e+11,
3.7559582077719836e+11,
4.1509757807371277e+11,
4.5875377145070300e+11,
5.0700132676483929e+11,
5.6032312176626892e+11,
6.1925281890144031e+11,
6.8438020638623755e+11,
7.5635710100467944e+11,
8.3590387171037695e+11,
9.2381664932114575e+11,
1.0209752944638193e+12,
1.1283522035151340e+12,
1.2470220406715007e+12,
1.3781724935494902e+12,
1.5231161599626948e+12,
1.6833036848418264e+12,
1.8603382787767620e+12,
2.0559917634869844e+12,
2.2722223048088804e+12,
2.5111940106775947e+12,
2.7752985902466255e+12,
3.0671792909169141e+12,
3.3897573528452603e+12,
3.7462612456976733e+12,
4.1402589802589175e+12,
4.5756938182836924e+12,
5.0569237379856543e+12,
5.5887650501481416e+12,
6.1765406013813154e+12,
6.8261330469601016e+12,
7.5440437264154141e+12,
8.3374577311253535e+12,
9.2143158151247129e+12,
1.0183393868840340e+13,
1.1254390751152201e+13,
1.2438025358832957e+13,
1.3746143904869607e+13,
1.5191838479344713e+13,
1.6789578079474348e+13,
1.8555353420195434e+13,
2.0506836974615496e+13,
2.2663559846063445e+13,
2.5047107241936324e+13,
2.7681334505709973e+13,
3.0592605869234598e+13,
3.3810058314828449e+13,
3.7365893187990141e+13,
4.1295698479287656e+13,
4.5638805000929469e+13,
5.0438680022752680e+13,
5.5743362307269414e+13,
6.1605942897748391e+13,
6.8085096471220516e+13,
7.5245668574367812e+13,
8.3159324619549984e+13,
9.1905267136338875e+13,
1.0157102845705528e+14,
1.1225334676977153e+14,
1.2405913430661245e+14,
1.3710654735730897e+14,
1.5152616881705944e+14,
1.6746231510403516e+14,
1.8507448052659994e+14,
2.0453893355595603e+14,
2.2605048098024984e+14,
2.4982441759638447e+14,
2.7609868095271022e+14,
3.0513623270798212e+14,
3.3722769044002506e+14,
3.7269423624413281e+14,
4.1189083123143062e+14,
4.5520976809898188e+14,
5.0308459732695450e+14,
5.5599446629754788e+14,
6.1446891476304075e+14,
6.7909317465761662e+14,
7.5051402729526438e+14,
8.2944627657455900e+14,
9.1667990297633300e+14,
1.0130879699538496e+15,
1.1196353618452902e+15,
1.2373884407605195e+15,
1.3675257190914975e+15,
1.5113496544604105e+15,
1.6702996851533248e+15,
1.8459666365023652e+15,
2.0401086424003345e+15,
2.2546687412956410e+15,
2.4917943227741685e+15,
2.7538586193560145e+15,
3.0434844586042220e+15,
3.3635705132645935e+15,
3.7173203121568085e+15,
4.1082743021675935e+15,
4.5403452822331500e+15,
5.0178575639460460e+15,
5.5455902507190850e+15,
6.1288250686585730e+15,
6.7733992278544400e+15,
7.4857638431407750e+15,
8.2730484990213790e+15,
9.1431326049478160e+15,
1.0104724255097566e+16,
1.1167447381907442e+16,
1.2341938075624136e+16,
1.3639951033870320e+16,
1.5074477206609342e+16,
1.6659873813938872e+16,
1.8412008037975264e+16,
2.0348415826945328e+16,
2.2488477400850208e+16,
2.4853611215221080e+16,
2.7467488324221096e+16,
3.0356269288511564e+16,
3.3548865998935916e+16,
3.7077231036440888e+16,
4.0976677464246272e+16,
4.5286232252850760e+16,
5.0049026875070080e+16,
5.5312728980313968e+16,
6.1130019468443072e+16,
6.7559119737921448e+16,
7.4664374385141264e+16,
8.2516895186770448e+16,
9.1195272810315088e+16,
1.0078636337593507e+17,
1.1138615774168800e+17,
1.2310074221230024e+17,
1.3604736028656150e+17,
1.5035558606966758e+17,
1.6616862109441658e+17,
1.8364472753028080e+17,
2.0295881212439261e+17,
2.2430417672705789e+17,
2.4789445292164490e+17,
2.7396574012127472e+17,
3.0277896853110349e+17,
3.3462251062551731e+17,
3.6981506727678112e+17,
4.0870885742048762e+17,
4.5169314318104928e+17,
4.9919812573787520e+17,
5.5169925092337018e+17,
6.0972196764462810e+17,
6.7384698675270400e+17,
7.4471609299199475e+17,
8.2303856819767232e+17,
9.0959829002668813e+17,
1.0052615772688342e+18,
1.1109858602563712e+18,
1.2278292631485970e+18,
1.3569611939940810e+18,
1.4996740485594657e+18,
1.6573961450606881e+18,
1.8317060192517601e+18,
2.0243482229411579e+18,
2.2372507840526853e+18,
2.4725445029769687e+18,
2.7325842783379528e+18,
3.0199726756098365e+18,
3.3375859744670935e+18,
3.6886029555582029e+18,
4.0765367148108068e+18,
4.5052698236765440e+18,
4.9790931872111176e+18,
5.5027489888943135e+18,
6.0814781519961702e+18,
6.7210727924986010e+18,
7.4279341885389363e+18,
8.2091368465530675e+18,
9.0724993053136814e+18,
1.0026662386494198e+19,
1.1081175674916358e+19,
1.2246593094004847e+19,
1.3534578533000223e+19,
1.4958022583082809e+19,
1.6531171550741899e+19,
1.8269770039599454e+19,
2.0191218527695090e+19,
2.2314747517318812e+19,
2.4661610000341512e+19,
2.7255294165301002e+19,
3.0121758475087553e+19,
3.3289691467965432e+19,
3.6790798882106413e+19,
4.0660120977274061e+19,
4.4936383229520880e+19,
4.9662383908768727e+19,
5.4885422418279211e+19,
6.0657772682979369e+19,
6.7037206324472250e+19,
7.4087570858843619e+19,
8.1879428704062800e+19,
9.0490763392378634e+19,
1.0000776005572131e+20,
1.1052566799547061e+20,
1.2214975396947848e+20,
1.3499635573716302e+20,
1.4919404640690720e+20,
1.6488492123894242e+20,
1.8222601978247286e+20,
2.0139089758026668e+20,
2.2257136317086207e+20,
2.4597939777289005e+20,
2.7184927686435983e+20,
3.0043991489038549e+20,
3.3203745656597683e+20,
3.6695814070852361e+20,
4.0555146526217175e+20,
4.4820368519071852e+20,
4.9534167824711496e+20,
5.4743721730949612e+20,
6.0501169204271369e+20,
6.6864132714134700e+20,
7.3896294938012195e+20,
8.1668036119031775e+20,
9.0257138455105503e+20,
9.9749564569309793e+20,
1.1024031785271021e+21,
1.2183439329023096e+21,
1.3464782828575407e+21,
1.4880886400345899e+21,
1.6445922884849697e+21,
1.8175555693250643e+21,
2.0087095572044880e+21,
2.2199673854830119e+21,
2.4534433935122555e+21,
2.7114742876545719e+21,
2.9966425278257163e+21,
3.3118021736216768e+21,
3.6601074487063940e+21,
4.0450443093423623e+21,
4.4704653330125727e+21,
4.9406282763108614e+21], dtype='d')
def hankel(f, k, order=0):
"""0th/1st-order Hankel-transform of f:
F_n(k) = int_0^oo r f(r) J_n(kr) dr, n=0,1
Note that Anderson's implementation includes the r factor in input
function, but this is *not* the case for this procedure.
"""
w = hankel_weights(order=order)
p = hankel_points()
# Anderson's implementation requires function g to include the r factor
def g(r): return r*f(r)
# N.dot(w, g(p/k[:,N.newaxis]).T) / k is only valid for 1D arrays
return N.dot(w, g(p/k[..., N.newaxis]).swapaxes(-1, -2)) / k
if __name__ == '__main__':
import matplotlib.pyplot as P
# Same test functions as in Borchers' MATLAB implementation, but does not
# include the extra r factor.
# Test functions (see http://en.wikipedia.org/wiki/Hankel_transform)
def f1(r): return N.exp(-r**2)
def f2(r): return r*N.exp(-r**2)
def f3(r): return N.exp(-r)/r
def f4(r): return N.exp(-2*r)
def f5(r): return N.exp(-2*r)/r
# Analytic transforms
def F1(k): return N.exp(-k**2/4)/2 # 0th-order
def F2(k): return k*N.exp(-k**2/4)/4 # 1st-order
def F3(k): return (N.sqrt(1+k**2)-1)/(k*N.sqrt(1+k**2)) # 1st-order
def F4(k): return k/N.sqrt((4+k**2)**3) # 1st-order
def F5(k): return 1/N.sqrt(4+k**2) # 0th-order
fs = [f1, f2, f3, f4, f5] # Test functions
Fs = [F1, F2, F3, F4, F5] # Analytic transforms
orders = [0, 1, 1, 1, 0] # Orders
k = N.concatenate(([0.0001, 0.001, 0.01, 0.02, 0.03, 0.04],
N.linspace(0.05, 5, 100))).astype('d')
fig = P.figure()
ax1 = fig.add_subplot(2, 1, 1,
title="0th/1st-order Hankel tranforms",
ylabel='Hankel transform')
ax2 = fig.add_subplot(2, 1, 2,
xlabel='k',
ylabel='Relative error', yscale='log')
for i, (f, F, order) in enumerate(zip(fs, Fs, orders)):
# if order!=0: continue
h = hankel(f, k, order=order) # Numeric
t = F(k) # Analytic
l, = ax1.plot(k, h, label='H%d(f%d)' % (order, i+1))
col = l.get_color()
ax1.plot(k, t, c=col, ls='--')
ax2.plot(k, N.abs(h-t)/N.abs(t), c=col, ls='-', label='_')
ax1.legend(loc='best', prop=dict(size='small'))
fig.tight_layout()
P.show()
# lbda: 7603A
# radius[spx] flux
0.418593273815 18.1837
0.5349266477 16.3112
0.919587991512 9.29802
0.971844008792 9.15756
1.22670232071 5.66755
1.27585746046 5.48179
1.28633172146 7.10789
1.40976163455 5.59343
1.52877680815 3.99235
1.62286001831 3.41529
1.72398957832 2.70682
1.82788979249 2.72601
1.87511701485 2.20257
1.89810827837 2.46238
2.17357618332 1.56991
2.19872163731 1.40708
2.22923260348 1.38511
2.24046150617 1.12481
2.29762145977 0.996929
2.29780795798 1.19263
2.3278810413 1.03583
2.43171208388 0.821884
2.4555725823 0.93069
2.50791364179 0.71838
2.57777134088 0.674734
2.58745711476 0.741269
2.84844288343 0.460966
2.86120351681 0.623048
2.8742215112 0.704532
2.9235907623 0.46231
3.05536249719 0.34627
3.06342499664 0.3748
3.11483177589 0.404891
3.15058219771 0.453676
3.16397626403 0.330685
3.17667387593 0.318302
3.1876411399 0.272309
3.18809584127 0.37018
3.21109696855 0.404542
3.26770385838 0.2804
3.28376732383 0.237104
3.39690804064 0.197484
3.40692260011 0.254243
3.47112194369 0.296218
3.57742101492 0.184147
3.57885785942 0.225812
3.63063936958 0.214682
3.661311191 0.168465
3.73780741908 0.169168
3.82630935387 0.162878
3.85446589165 0.252423
3.86224189251 0.136527
3.86257473124 0.272684
3.92129908485 0.171978
3.95412027557 0.128086
4.04398798761 0.129368
4.04780017091 0.185285
4.07092310874 0.185173
4.07840690215 0.112517
4.11294243377 0.111917
4.1525157644 0.101422
4.18252714849 0.162912
4.18385292786 0.104878
4.20152466164 0.178031
4.24539969208 0.0883317
4.24585344043 0.106553
4.35024279457 0.111205
4.36722000066 0.0891081
4.38913660053 0.092006
4.40482017513 0.131164
4.41619975722 0.109993
4.45148306955 0.115698
4.45571223124 0.0770115
4.4941655258 0.0776948
4.5049795378 0.0874144
4.62746520586 0.0598339
4.68466077254 0.0774905
4.76890209863 0.0870922
4.84519522369 0.0633349
4.85049781519 0.124598
4.85569951845 0.113245
4.8776410512 0.0595956
4.92003820434 0.0642767
4.92049891027 0.0606985
4.94604446013 0.0569694
4.96481049366 0.0716581
4.96951756618 0.0603814
4.97444042875 0.0567405
5.00671503634 0.095196
5.02181856802 0.0877579
5.0293142344 0.0584706
5.04764817346 0.0530278
5.10864052491 0.0463022
5.15342952743 0.0523819
5.17720483634 0.0427152
5.17910335895 0.0883288
5.19014788889 0.0477646
5.19562077363 0.0913007
5.26049131125 0.0565143
5.28127811199 0.0398706
5.29284407504 0.0404179
5.31012401111 0.0636266
5.31432998036 0.0629292
5.33384109296 0.0632562
5.36248020998 0.0714763
5.43141889242 0.034259
5.52359972433 0.0344777
5.57434660886 0.0406432
5.59029961952 0.0419796
5.62747672452 0.0338062
5.66641579305 0.0514407
5.69998204593 0.0343423
5.72363349568 0.0342854
5.73647291599 0.0393544
5.73742047701 0.0396858
5.76813791775 0.0476922
5.76917145059 0.0306585
5.8008678815 0.0340075
5.84501281891 0.0340159
5.84751790108 0.0321971
5.84788430121 0.0645667
5.85116672745 0.0579969
5.8608158118 0.0367026
5.90782653411 0.0246767
5.91058130148 0.0369088
5.97910567615 0.0552103
5.98024687102 0.0267481
5.98758312595 0.0314273
5.9887317942 0.0479029
6.03266233444 0.0287829
6.08692837443 0.0308964
6.11728928452 0.0245978
6.12542085599 0.0268558
6.17678636974 0.0550516
6.19161860618 0.0504805
6.19672118636 0.0247216
6.23634618436 0.0381883
6.25172137027 0.0363088
6.2520150473 0.0280512
6.2591966974 0.0238032
6.2632998974 0.023682
6.28964179494 0.0360326
6.29947017055 0.0297034
6.33324144729 0.0429346
6.36808291794 0.0200404
6.41373226008 0.0201326
6.48391923936 0.0206196
6.48895908482 0.0215115
6.50419230415 0.0190411
6.52356138304 0.0229855
6.53286166452 0.0199665
6.59348986905 0.0288672
6.60177864589 0.0196494
6.60489802601 0.0279993
6.62521598429 0.0294355
6.6278715614 0.0281915
6.67770424287 0.0174782
6.68458791426 0.0239929
6.7211343749 0.0259512
6.86514476453 0.015365
6.86618289053 0.0177741
6.8875793812 0.0197852
6.90547528991 0.0195681
6.91945866139 0.017058
6.95834844892 0.0172877
6.9590678424 0.0180712
6.97799393422 0.0210625
7.05844323299 0.0148512
7.06649381696 0.0149227
7.06736848445 0.0188029
7.09177754472 0.022784
7.17511450167 0.0321384
7.1887277529 0.031752
7.1907315832 0.0145086
7.21151333727 0.0120302
7.22452655067 0.01683
7.27166313007 0.0226572
7.3022213752 0.0140301
7.31188761244 0.0245256
7.32554291419 0.0143192
7.41441143823 0.0121539
7.47410572581 0.0132615
7.52474948616 0.0119247
7.539227372 0.0166344
7.56823682819 0.0176403
7.60664655512 0.0114279
7.63436217423 0.0187077
7.67781336256 0.0128527
7.69365896062 0.0111624
7.77417412219 0.0105209
7.80439266302 0.013102
7.81605793843 0.0109135
7.83709865142 0.0102302
7.86171440812 0.0100137
7.94409994108 0.00996457
8.16110686869 0.00901483
8.17385137906 0.021416
8.18654215444 0.0209207
8.20760631927 0.00945191
8.22823505858 0.0101361
8.25800069301 0.0142736
8.26822306553 0.00766784
8.29562858885 0.0145939
8.37576925958 0.00988022
8.3934165594 0.00899557
8.43609267865 0.00797652
8.49739901854 0.0104597
8.53430172484 0.00977896
8.62321880277 0.00827871
8.70236169544 0.00597591
8.74704676139 0.00694602
8.78546991541 0.00552142
8.85770209073 0.00976665
9.0221104261 0.0074013
9.0490272202 0.0057893
9.14912536131 0.0073833
9.15169538104 0.00507639
9.28700686923 0.00642731
9.46726166027 0.00552872
9.58712314609 0.00491504
9.72848613052 0.00694392
9.94804243126 0.00547246
10.0827916396 0.00495822
10.4827672035 0.00603948
#/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Simulation of seeing in large telescopes (D>>r0), tested against SNfactory
ad-hoc PSF models.
References:
* Tokovinin 2002PASP..114.1156T
* Fried 1966JOSA...56.1372F
* Racine 1996PASP..108..699R
Author: Yannick Copin <y.copin@ipnl.in2p3.fr>
"""
from __future__ import division
import numpy as N
from scipy import special as S
from scipy import fftpack as F
from scipy import interpolate as I
from scipy.optimize import fsolve
from scipy.integrate import quad
import matplotlib.pyplot as P
import hankel as H
import fractions
RAD2ARCS = 206264.80624709636 # From radians to arcsecs
# Color names
BLUE = 'C0'
GREEN = 'C2'
RED = 'C3'
def otf_Kolmogorov(r, r0=0.15, expo=5/3):
"""
Kolmogorov optical transfer function. r [m/rad], r0 is the Fried
parameter [m].
Note: lower exponent (e.g. 3/2=1.5 instead of 5/3=1.67) means more wings.
1.55 corresponds roughly to long exposure ad-hoc SNfactory PSFs,
short SNfactory PSFs are closer to 1.5.
"""
# (Half) Phase structure function
hdphi = (r/r0)**expo
if expo == (5/3):
# 2*( 24/5*gamma(6/5) )**(5/6) = 6.8838771822938112...
# Including the 0.5 of otf: 3.4419385911469056...
hdphi *= 3.4419385911469056
else:
# Possible generalisation, including the 0.5 of otf
hdphi *= (8/expo*S.gamma(2/expo))**(expo/2)
# otf = exp(-0.5*phase), the 0.5 factor has already been included
return N.exp(-hdphi)
def otf_VonKarman(r, r0=0.15, L0=20., desaturate=True):
"""
Von Karman optical transfer function.
Note that Tokovinin's formula has a typo -- 2**(11/6) should be 2**(5/6)
--, see Conan (2000).
"""
#raise NotImplementedError("Von Karman phase does not work properly...")
print "WARNING: Von Karman phase does not work properly..."
# (Half) Phase structure function
def hphase(r):
x = 2*N.pi*r/L0
# gamma(11/6)/(2**(5/6)*pi**(8/3)) * ( 24/5*gamma(6/5) )**(5/6) =
# 0.08583068106228546...
# gamma(5/6)/2**(1/6) = 1.0056349179985902...
return 0.08583068106228546 * (r0/L0)**(-5/3) * \
( 1.0056349179985902 - x**(5/6) * S.kv(5/6, x) )
hdphi = hphase(r)
hdphi[r == 0] = 0. # Extension to 0 (NaN otherwise)
otf = N.exp(-hdphi) # Optical transfert function
if desaturate: # See Tokovinin (2002)
otf -= N.exp(-hphase(N.max(r)*2)) # Remove constant level
otf /= otf.max() # Renormalization
return otf
def psf2D_FFT(otfarr, normed=True):
"""
FFT-computed 2D-PSF from input OTF 2D-array (e.g. from otf_Kolmogorov).
"""
assert otfarr.ndim == 2, "Input OTF array is not 2D"
psf = F.fftshift(N.absolute(F.fft2(otfarr))) # PSF=FT(OTF), otfarr.shape
if normed:
psf /= psf.max()
return psf
def friedParamater(lbda, r0ref=0.10, lref=5e-7, expo=5/3):
"""Implement r0 chromaticity."""
return r0ref*(lbda/lref)**(2/expo)
def seeing_fwhm(lbda, r0ref=0.10, lref=5e-7, expo=5/3, verbose=False):
"""
Seeing FWHM [arcsec] at wavelength lbda [m] for Fried parameter r0ref
[m] at reference wavelength lref [m].
Note: the 'traditional' seeing is dependant on exponent 5/3 used in
otf_Kolmogorov through constant 0.976 (actually 0.97586...).
"""
r0 = friedParamater(lbda, r0ref, lref)
s = 0.975863432579*lbda/r0 * RAD2ARCS # [arcsec] Valid for expo=5/3
if expo != (5/3):
s = 2*fsolve(lambda r:
psf_Kolmogorov_Hankel(r, lbda, r0=r0, expo=expo) - 0.5,
s/2)
if verbose:
print "r0 = %.0f cm @%.0fÅ = %.0f cm @%.0fÅ: " \
"seeing=%.2f\" (FWHM) (expo=%.2f)" % \
(r0ref*100, lref*1e10, r0*100, lbda*1e10, s, expo)
return s
def psf_ES(r, alpha, coeffs, decompose=False):
"""
Compute (max-normalized) extract_star PSF given free parameter
alpha and set of correlation coefficients coeffs for radius array r
[arcsec]. If decompose=True, return individual components of PSF
(gaussian + moffat).
"""
spx = 0.43 # Spaxel size [arcsec]
name, s1, s0, b1, b0, e1, e0 = coeffs
sigma = s0 + s1*alpha
beta = b0 + b1*alpha
eta = e0 + e1*alpha
print "PSF %s: sigma,beta,eta =" % name, sigma, beta, eta
r2 = (r/spx)**2 # (Radius [spx])**2
gaussian = N.exp(-r2/2/sigma**2)
moffat = (1 + r2/alpha**2)**(-beta)
s = eta*gaussian + moffat
if decompose:
return eta*gaussian/s.max(), moffat/s.max()
else:
return s/s.max()
def psf_ES_long(r, alpha, decompose=False):
return psf_ES(r, alpha,
['long', 0.215, 0.545, 0.345, 1.685, 0.0, 1.04],
decompose=decompose)
def psf_ES_short(r, alpha, decompose=False):
return psf_ES(r, alpha,
['short', 0.2, 0.56, 0.415, 1.395, 0.16, 0.6],
decompose=decompose)
def psf_Kolmogorov_FFT(r, lbda, scale=None, r0=0.15, expo=5/3):
"""
Compute (max-normalized) Kolmogorov (FFT-based) PSF given free
parameters r0 and expo for radius array r [arcsec] at
wavelength lbda [m].
"""
assert scale is not None, "Pixel scale [arcsec/px] should be set"
amax = N.max(r) # Image half width [arcsec]
if amax < 20:
# print "WARNING: extending PSF modeling from %.2f'' to 20''" % amax
amax = 20
# 2D-array construction
xmax = int(amax / scale) # Image half width [px]
amax = xmax * scale # Image half width [arcsec]
# print "Image half width: %d px = %.2f\"" % (xmax,amax)
x = N.arange(-xmax, xmax+0.1, dtype='d') # (n,) [px]
rpx = N.hypot(*N.meshgrid(x, x)) # Radius 2D-array (n,n) [px]
px2f = RAD2ARCS/scale/len(x) # [px/rad]
f = rpx * px2f # Spatial freq 2D-array (n,n) [1/rad]
# FFT-based PSF computation
psf = psf2D_FFT(otf_Kolmogorov(lbda*f, r0=r0, expo=expo)) # (n,n)
a = rpx * scale # Radius (n,n) [arcsec]
j = N.argsort(a.ravel()) # Such that a.ravel()[j] is sorted
i = j[:N.searchsorted(a.ravel()[j], amax)]
x = a.ravel()[i]
y = N.log(psf.ravel()[i])
# Spline interpolation
n, = N.nonzero(N.diff(x)) # Discard duplicated radii (and last point)
spl = I.UnivariateSpline(x[n], y[n], k=3, s=0)
# Estimate PSF at given radii
return N.exp(spl(r))
def psf_Kolmogorov_Hankel(r, lbda, r0=0.15, expo=5/3, normed=True):
"""
Compute (max-normalized) Kolmogorov (Hankel-based) PSF given free
parameters r0 and expo for radius array r [arcsec] at
wavelength lbda [m].
"""
# One should compute psf(r) = H.hankel(lambda
# r:otf_Kolmogorov(lbda*r/(2*N.pi)), r/RAD2ARCS), but for some numerical
# reasons, one computes lbda**2/(2*pi) * psf(r) = H.hankel(lambda
# r:otf_Kolmogorov(r, r0=r0, expo=expo), 2*pi/lambda*r/RAD2ARCS)
tmp = (6.2831853071795862/RAD2ARCS/lbda)*N.atleast_1d(r)
psf = H.hankel(lambda r: otf_Kolmogorov(r, r0=r0, expo=expo), tmp)
# psf(0) = 2*pi/expo*fO**2*Gamma(2/expo)
# where f0 = r0/lbda * beta**(-1/expo)
# and beta = (8/expo*Gamma(2/expo))**(expo/2) = 3.44... for expo=5/3
# Therefore f0**2 = (r0/lbda)**2 / ( 8/expo*Gamma(2/expo) )
# and psf(0) = pi/4 * (r0/lbda)**2. Given we actually compute
# lbda**2/(2*pi)*psf(r), this gives psf(0) = r0**2/8
pmax = r0**2/8
psf[tmp == 0] = pmax # Remove NaNs at r=0
if normed:
psf /= pmax # Max normalisation
return psf.reshape(N.shape(r)) # PSF should have the same shape as r
def integ_radial_laguerre(f, accuracy=1e-3, imin=1, imax=40):
"""
Compute s = 2*pi int_0^infinity g(r) dr with g(r) = r*f(r), using
Gauss-Laguerre quadrature: int_0^infinity exp(-r)*exp(r)*g(r) dr = sum_i
w_i exp(r_i) g(r_i) where r_i and w_i are the roots and weights of
ith-order Laguerre polynomial.
"""
def g(r): return r*f(r)
sprev = 0
errprev = N.inf
for i in xrange(imin, imax):
w = S.laguerre(i+1).weights # Laguerre polynomial roots & weights
s = N.dot(w[:, 2], g(w[:, 0])) # sum_i w_i exp(x_i) g(x_i)
err = abs(1-sprev/s)
print "Order %d (%f-%f): s=%f err=%f" % \
(i+1, min(w[:, 0]), max(w[:, 0]), 2*N.pi*s, err)
if err < accuracy:
print "Requested accuracy is reached"
break
elif err > errprev:
print "Relative error is increasing"
# break
sprev = s
errprev = err
s *= 6.2831853071795862 # 2*pi
return s, s*err # Integral and error estimate
def integ_radial_quad(f, epsabs=1e-6, epsrel=1e-6):
"""Compute s = 2*pi int_0^infinity g(r) dr with g(r) = r*f(r)."""
s, ds = quad(lambda r: r*f(r), 0, N.inf, epsabs=epsabs, epsrel=epsrel)
s *= 6.2831853071795862
ds *= 6.2831853071795862
return s, ds
if __name__ == '__main__':
ftel = 22.5 # Telescope focal length [m]
pixsize = 15e-6 # Pixel size [m]
px2arcs = pixsize/ftel*RAD2ARCS # Pixel scale [arcsec/px]
print "Focal length=%.2f m, pixel size=%.0f microns, scale=%.3f\"/px" % \
(ftel, pixsize*1e6, px2arcs)
amax = 20. # Image half width [arcsec]
xmax = int(amax / px2arcs) # Image half width [px]
amax = xmax * px2arcs # Image half width [arcsec]
print "Image half width: %d px = %.2f\"" % (xmax, amax)
x = N.arange(-xmax, xmax+0.1, dtype='d') # (n,) [px]
r = N.hypot(*N.meshgrid(x, x)) # Radius 2D-array (n,n) [px]
a = r * px2arcs # Radius (n,n) [arcsec]
px2f = ftel/pixsize/len(x) # [px/rad]
f = r * px2f # Spatial freq 2D-array (n,n) [1/rad]
# Reference medium seeing
lref = 5e-7 # Reference wavelength [m]
r0ref = 0.10 # Fried parameter at ref. lbda [m]
expo = 5/3
# expo = 1.5 # Kolmogorov requires 5/3
# Medium seeing at 5000A
lbda = 5e-7 # Current wavelength [m]
r0m = friedParamater(lbda, r0ref, lref, expo)
s = seeing_fwhm(lbda, r0ref, lref, expo,
verbose=True) # Seeing FWHM [arcsec]
psf = psf2D_FFT(otf_Kolmogorov(lbda*f, r0=r0m, expo=expo))
ar = a.ravel() # (n**2,)
j = N.argsort(ar)
i = j[:N.searchsorted(ar[j], 5)] # ar[i]: r up to 5 arcsec
r1 = N.logspace(-1, N.log10(5/px2arcs), 100) # Radius (n,) [px]
a1 = r1 * px2arcs # Radius (n,) [arcsec]
psf1 = psf_Kolmogorov_Hankel(a1, lbda, r0=r0m, expo=expo)
psf2 = psf_Kolmogorov_FFT(a1, lbda, scale=px2arcs, r0=r0m, expo=expo)
print "Integral(Laguerre)", \
integ_radial_laguerre(
lambda r:
psf_Kolmogorov_Hankel(r, lbda, r0=r0m, expo=expo))
print "Integral(quad)", \
integ_radial_quad(
lambda r:
psf_Kolmogorov_Hankel(r, lbda, r0=r0m, expo=expo))
if False:
fig = P.figure()
ax = fig.add_subplot(1, 1, 1,
title="Kolmogorov PSF (expo=%.2f)" % expo,
xlabel="r [arcsec]", xscale='log',
ylabel="Normalized flux", yscale='log',
)
ax.plot(ar[i], psf.ravel()[i],
color=RED, ls='None', marker='.', ms=5,
label='2D-FFT')
ax.plot(a1, psf2,
color=GREEN, ls='None', marker='.', ms=5,
label='Interpolated 2D-FFT')
ax.plot(a1, psf1, label='Hankel')
#ax.plot(a1,a1*psf1*N.exp(a1), label='Hankel')
ax.axhline(0.5, c='0.8', label='_')
ax.axvline(s/2, c='0.8', label='_')
ax.set_ylim(psf1.min()/1.1, psf1.max()*1.1)
ax.legend(loc='best', fontsize='small')
# Plots ==============================
if False:
fig = P.figure()
axI = fig.add_subplot(1, 1, 1,
title=u"PSF (r₀=%.0f cm@%.0f Å)" %
(r0m*100, lbda*1e10),
xlabel='x [arcsec]',
ylabel='y [arcsec]',
aspect='equal')
psf = psf_Kolmogorov_Hankel(a, lbda, r0=r0m)
print psf.sum()/len(a)**2
print psf.max(), lbda, S.gamma(6/5)
axI.imshow(psf,
norm=P.matplotlib.colors.LogNorm(vmin=(psf[psf > 0]).min()),
interpolation='nearest',
extent=[-amax, amax, -amax, amax])
# Radial profile ------------------------------
if True:
fig = P.figure()
axR = fig.add_subplot(1, 1, 1,
title=u"Kolmogorov seeing radial profile "
u"(r₀=%.0f cm@%.0f Å)" %
(r0ref*1e2, lref*1e10),
xlabel='r [arcsec]', # xscale='log',
ylabel='Normalized flux', yscale='log')
axR.plot(ar[i], psf.ravel()[i],
color=GREEN, ls='-', marker='None',
label=u'%.0f Å: seeing=%.2f"' % (lbda*1e10, s))
lbda = 3e-7 # Medium seeing @3000A
r0 = friedParamater(lbda, r0ref, lref)
s = seeing_fwhm(lbda, r0ref, lref)
axR.plot(ar[i], psf2D_FFT(otf_Kolmogorov(lbda*f, r0)).ravel()[i],
color=BLUE, ls='-', marker='None',
label=u'%.0f Å: seeing=%.2f"' % (lbda*1e10, s))
lbda = 10e-7 # Medium seeing @10000A
r0 = friedParamater(lbda, r0ref, lref)
s = seeing_fwhm(lbda, r0ref, lref)
axR.plot(ar[i], psf2D_FFT(otf_Kolmogorov(lbda*f, r0)).ravel()[i],
color=RED, ls='-', marker='None',
label=u'%.0f Å: seeing=%.2f"' % (lbda*1e10, s))
lbda = 5e-7
r0ref = 0.15 # Good seeing @5000A
r0 = friedParamater(lbda, r0ref, lref)
s = seeing_fwhm(lbda, r0ref, lref)
axR.plot(ar[i], psf2D_FFT(otf_Kolmogorov(lbda*f, r0)).ravel()[i],
color=GREEN, ls=':', marker='None',
label=u'r₀=%.0f cm: seeing=%.2f"' % (r0ref*100, s))
r0ref = 0.07 # Bad seeing @5000A
r0 = friedParamater(lbda, r0ref, lref)
s = seeing_fwhm(lbda, r0ref, lref)
axR.plot(ar[i], psf2D_FFT(otf_Kolmogorov(lbda*f, r0)).ravel()[i],
color=GREEN, ls='--', marker='None',
label=u'r₀=%.0f cm: seeing=%.2f"' % (r0ref*100, s))
axR.set_ylim(1e-4, 1)
axR.legend(loc='best', fontsize='small')
# Comparison w/ extract_star PSF ------------------------------
if True:
lbda = 5e-7
r0ref = 0.10
s = seeing_fwhm(lbda, r0ref, lref)
fig = P.figure()
ax = fig.add_subplot(1, 1, 1,
title=u"Kolmogorov (r₀=%.0f cm@%.0f Å) "
"vs. ad-hoc seeing PSF" % (r0ref*1e2, lref*1e10),
xlabel='r [arcsec]', # xscale='log',
ylabel='Normalized flux', yscale='log')
# Long exposures
gl, ml = psf_ES_long(ar[i], 2.03, decompose=True)
ax.plot(ar[i], gl+ml,
color=BLUE, ls='-', marker='None',
label="Ad-hoc PSF (long)")
ax.set_autoscale_on(False)
ax.plot(ar[i], gl,
color=BLUE, ls='--', marker='None',
label="_")
ax.plot(ar[i], ml,
color=BLUE, ls='--', marker='None',
label="_")
# Short exposures
gs, ms = psf_ES_short(ar[i], 2, decompose=True)
ax.plot(ar[i], gs+ms,
color=RED, ls='-', marker='None',
label="Ad-hoc PSF (short)")
ax.plot(ar[i], gs,
color=RED, ls='--', marker='None',
label="_") # [Individual components]
ax.plot(ar[i], ms,
color=RED, ls='--', marker='None',
label="_")
# Kolmogorov
ax.plot(ar[i], psf.ravel()[i],
color=GREEN, ls='-', lw=2, marker='None',
label=u'%.0f Å: seeing=%.2f"' % (lbda*1e10, s))
for n in range(8, 12):
y = psf_Kolmogorov_Hankel(a1, lbda, r0=r0m, expo=n/6)
if n != 10:
ax.plot(a1[72:], y[72:],
color=GREEN, ls='-', marker='None',
label='_')
ax.annotate('n=%s' % (fractions.Fraction(n, 6)), (a1[90], y[90]),
fontsize='small', rotation=-25)
ax.set_ylim(1e-4, 1)
ax.legend(loc='best', fontsize='small')
# Ad-hoc comparison w/ observations ------------------------------
if True:
# Long exposure @4330A: GD71_07_253_090_B.txt
Rl, Fl = N.loadtxt("GD71_07_253_090_B.txt", unpack=True)
Fl /= Fl.max()/0.8 # /0.85
ll = 4.33e-7
rl = 0.038
psfl = psf2D_FFT(otf_Kolmogorov(ll*f, rl)) + 0.0035
psfl2 = psf2D_FFT(otf_Kolmogorov(ll*f, rl, expo=1.52)) + 0.0035
# Short exposure @7600: HR7950_07_253_041_R.txt
Rs, Fs = N.loadtxt("HR7950_07_253_041_R.txt", unpack=True)
Fs /= Fs.max()/0.9
ls = 7.6e-7
rs = 0.075
psfs = psf2D_FFT(otf_Kolmogorov(ls*f, rs))
psfs2 = psf2D_FFT(otf_Kolmogorov(ls*f, rs, expo=1.5))
fig = P.figure(figsize=(10, 5))
axl = fig.add_subplot(1, 2, 1,
title=u"Long exposure @%.0f Å" % (ll*1e10),
xlabel="r [arcsec]",
ylabel="Normalized flux", yscale='log')
axs = fig.add_subplot(1, 2, 2,
title=u"Short exposure @%.0f Å" % (ls*1e10),
xlabel="r [arcsec]",
yscale='log')
i = j[:N.searchsorted(ar[j], 10)] # Keep r up to 10 arcsec
axl.plot(Rl, Fl,
color=BLUE, ls='None', marker='.', ms=5,
label='Observed')
axl.plot(ar[i], psfl.ravel()[i],
color=GREEN, ls='-', lw=2, marker='None',
label='Kolmogorov (n=5/3)', zorder=0)
axl.plot(ar[i], psfl2.ravel()[i],
color=GREEN, ls='-', marker='None',
label='Kolmogorov (n=3/2)', zorder=0)
axs.plot(Rs, Fs,
color=RED, ls='None', marker='.', ms=5,
label='Observed')
axs.plot(ar[i], psfs.ravel()[i],
color=GREEN, ls='-', lw=2, marker='None',
label='Kolmogorov (n=5/3)', zorder=0)
axs.plot(ar[i], psfs2.ravel()[i],
color=GREEN, ls='-', marker='None',
label='Kolmogorov (n=3/2)', zorder=0)
axl.set_ylim(1e-4, 1.1)
axs.set_ylim(1e-4, 1.1)
axl.legend(loc='best', fontsize='small')
axs.legend(loc='best', fontsize='small')
if True:
for i in P.get_fignums():
fig = P.figure(i)
fig.savefig("seeing_%d.png" % i)
P.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment