This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>From: "Craddock, Mary Ellen" <address@hidden> >Organization: Northrop Grumman Information Technology, TASC >Keywords: 200306091217.h59CGxLd005776 McIDAS XRD remap2 Hi Mary Ellen, >Your last email makes a lot of good points and I should have been >clearer from the start. In the end I want MY version of remap2.pgm to run on >the linux box. OK, now I understand. >My problem running my version I believe has to do with its >compilation. When I compile remap2.pgm on the linux box, remap2.k is >significantly smaller than the executables of this code created on our IBM >AIX and our DEC OSF1 machines. The executables on PC OSes (e.g., Linux, FreeBSD, and Solaris x86) tend to be smaller than those on other supported systems (e.g., OSF/1, IRIX, AIX, Solaris SPARC), so I wouldn't take this to mean anything significant. >I thought if I could get the McIDAS XRD >version of remap2.pgm working, then I could simply replace that source file >with MY version, recompile and have success. Unfortunately, my plan has not >been successful. Good thought though :-) >I have attached my version of remap2.pgm which calls a c function cloudp.c >(also included) as well as the makefile script (comp_remap2). Also included >is sza.c which the program needs. As I said earlier, the compile appears to >run successfully based on the stdout/stderr messages. However, when you try >to launch the executable nothing happens. In our version of remap2.pgm you >only need to have a sarea predefined. The darea will be created by >remap2.pgm with the appropriate projection and navigation. OK. >So, to run after compiling try: > >REMAP2 1000 2000 BAND=1 2 3 4 6 LAT=25 50 LON=65 125, where AREA1000 is a >GOES 12 raw image and AREA2000 does not previously exist and will be >created. Will do. >If you could try compiling and running on your linux box I'd appreciate. I >feel like there is just something off with the compile script. OK, done. I brought your version of remap2.pgm, cloudp.c, and sza.c to one of our RedHat 7.3 Linux systems and tried to build the remap2.k executable using using GNU gcc (version 2.96) and g77 (version 0.5.26). I found a number of problems with the code in remap2.pgm and cloudp.c that were either annoying warnings or outright bugs that had to be fixed before I could get a successful build. I then ran remap2.k more-or-less as you advised above (the AREA numbers had to be changed (to protect the innocent ;-)) and experienced the same thing that you did: remap2.k exited very quickly. At this point, I decided to troubleshoot your code. The basic problem turned out to be an improper typing of the McIDAS routine mccmddll: original code in remap2.pgm: INTEGER status, mccmdint DOUBLE PRECISION mccmddll, LAT1, LAT2, LON1, LON2, LATSPACE, + LONSPACE, + Lat_Space_Deg, Lon_Space_Deg, Number_Elements, Number_lines corrected code: INTEGER status INTEGER mccmdint, mccmddll ! <<<<< UPC mod 20030610 >>>>> DOUBLE PRECISION LAT1, LAT2, LON1, LON2, LATSPACE, LONSPACE, + Lat_Space_Deg, Lon_Space_Deg, Number_Elements, Number_lines INTEGER NAV(128) The change I had to make to get things to compile and link in the first place was: original code: call sdest('LAT1=',LAT1) corrected code: INTEGER NAV(128) character*12 cff ! <<<<< UPC add 20030610 >>>>> ... call sdest('LAT1='//cff(lonspace,2),0) Explanation: Declaring mccmddll to be of type double precision was causing its return value to be a negative number. The first use of mccmddll to get the SOUTH LATITUDE: status = mccmddll('LAT',1,'SOUTH LATITUDE',0.0d0, + -90.0d0,90.0d0,LAT1) C call sdest('status=',status) C call sdest('LAT1=',LAT1) if (status .lt. -90) return was then seeing LAT1 as negative and so the program was executing the return statement. Also, I made one small change in cloudp.c. MinReflec and MaxReflec were declared as 'extern double' and then initialized, and initialization of a variable must be done where it is originally declared. Since these variables are not declared in sza.c, I simply removed the 'extern' declaration: double MinReflec=100.0, MaxReflec=0.0; /* <<<<< UPC mod 20030610 >>>>> */ Finally, I decided to modify the top part of remap2.pgm to be more descriptive when status returns from command line parsing functions indicated errors. After making all of the changes, I was able to successfully build, link, and then run your remap2 program on a multibanded GOES-East image with no errors indicated: REMAP2_TASC 1233 1234 BAND=1 2 3 4 6 LAT=25 50 LON=65 125 DEV=CCC REMAP2_TASC* Input AREA = 1233 REMAP2_TASC* Output AREA = 1234 REMAP2_TASC* Spline Size = 5 REMAP2_TASC* South Lat = 25.00 REMAP2_TASC* North Lat = 50.00 REMAP2_TASC* East Lon = 65.00 REMAP2_TASC* West Lon = 125.00 REMAP2_TASC* LAT spacing= 4.00 REMAP2_TASC* LON spacing= 4.00 REMAP2_TASC* CALL MAPPER REMAP2_TASC* IN UINIT REMAP2_TASC* CALL NVPREP REMAP2_TASC* IFLIP is set to 1 REMAP2_TASC* CALL NVXINI REMAP - TRANFORMATIONS COMPLETE..BEGIN DATA MOVE --REMAP DONE end here! And, the listing of the output image data looked reasonable: IMGLIST MYDATA/IMAGES.1234 FORM=EXP Image file directory listing for:MYDATA/IMAGES Pos Satellite/ Date Time Center Res (km) Image_Size sensor Lat Lon Lat Lon --- ------------- ------------ -------- ---- ---- ----- ----- ------------ 1234 G-12 IMG 9 JUN 03160 21:40:00 38 95 Band: 1 0.65 um Visible - Cloud Cover 4.00 3.18 695 x 1668 Band: 2 3.9 um Night clouds; shortwave window 4.00 3.18 695 x 1668 Band: 3 6.5 um Upper level water vapor 4.00 3.18 695 x 1668 Band: 4 10.7 um Surface temp; longwave window 4.00 3.18 695 x 1668 Band: 6 13.3 um CO2; cloud height determination 4.00 3.18 695 x 1668 proj: 0 created: 2003161 213117 memo: RT GVAR type:GVAR cal type:RAW offsets: data= 3328 navigation= 256 calibration= 2816 auxiliary= 0 doc length: 0 cal length: 0 lev length: 8 PREFIX= 8 valcod: 0 zcor: 0 avg-smp: N start yyddd: 2003160 start time:214013 start scan: 360 lcor: 1 ecor: 1 bytes per pixel: 2 ss: 78 Resolution Factors (base=1): Line= 1.0 Element= 1.0 IMGLIST: done However: - display of BAND=1 data is black - display of BAND=2 looks sorta reasonable - display of BAND=3 is shows one value only - display of BAND=4 looks washed out - display of BAND=6 has a weird strip diagonally across it I can't explain this. I have included the modified source code for these routines below. >Thanks! No worries. Tom --- Content-Type: application/octet-stream; name="remap2_tasc.pgm" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="remap2_tasc.pgm" Content-MD5: Mp+i4VSjuCSH64Y123z3Pg== ICAgICAgU1VCUk9VVElORSBNQUlOMAoKQyAqKiogTWNJREFTIFJldmlzaW9uIEhpc3Rvcnkg KioqCkMgMSBSRU1BUC5QR00gMTktTWFyLTkwLDE2OjE2OjMwLGBTU0VDJyBQQy1NY0lEQVMg dmVyIDUuMDAKQyAyIFJFTUFQLlBHTSA1LVNlcC05MCwxMzoxODoxMCxgSlInIGNhbiBub3cg cmVtYXAgR1ZBUjsgbmV3IG1heCBuYXYgY29kIHNpemUKQyAzIFJFTUFQLlBHTSAyOS1PY3Qt OTAsMTY6NTk6MDIsYFNNRycgZmlyc3QgcmVsZWFzZSB0byBDT01tb24KQyA0IFJFTUFQLlBH TSAxOS1Ob3YtOTAsMTY6MzU6NDAsYEpTUCcgdSBhZGRlZCBjYWxsIHRvIFNUQU1QIGZvciBh dWRpdCB0cmFpbApDIDUgUkVNQVAuUEdNIDE1LU1heS05MSwxMzowNDozOCxgREFWRVMnIEFk ZGVkIE1FUkdFPSBrZXl3b3JkCkMgNiBSRU1BUC5QR00gMTUtTWF5LTkxLDEzOjA0OjM4LGBF UklDTicgUmVsZWFzZWQKQyA3IFJFTUFQLlBHTSAzMS1KdWwtOTIsMTA6MDg6MzAsYEJFVEhB JyBVcGRhdGVkIGhlbHAKQyA4IFJFTUFQLlBHTSAzMS1KdWwtOTIsMTQ6MzY6MzgsYFVTRVIn IFJlbGVhc2VkCkMgOSBSRU1BUC5QR00gMTQtT2N0LTkyLDEwOjQ4OjI0LGBCRVRIQScgVXBk YXRlZCBoZWxwCkMgMTAgUkVNQVAuUEdNIDIwLU9jdC05MiwxMTo0MjoyOCxgVVNFUicgUmVs ZWFzZWQKQyAxMSBSRU1BUC5QR00gNS1Ob3YtOTIsMTM6NDU6MTgsYEtFTkInIG1vZCB0byBo ZWxwIGZvciBTTU89IGtleXdvcmQgKDI5ODQpCkMgMTIgUkVNQVAuUEdNIDIzLU5vdi05Miw4 OjEwOjQ2LGBVU0VSJyBSZWxlYXNlZApDIDEzIFJFTUFQLlBHTSAyNC1NYXItOTMsMTg6MzM6 MDQsYEJBUlJZUicgVXBkYXRlZCBTTU9PVEg9IGluIEhFTFAgc2VjdGlvbgpDIDE0IFJFTUFQ LlBHTSAyNS1NYXItOTMsMTY6MDI6MDYsYFVTRVInIFJlbGVhc2VkCkMKQyBSRU1BUDIuUEdN IC0gMiBCWVRFIFJFTUFQUEVSLCBNT0RJRklFRCBCWSBFRCBXUklHSFQgU1NFQyA4Lzk0CkMK QyAxNSBSRU1BUDIuUEdNIDI5LUZlYi0wMCwgJ1NMRUVUJyBha2EgbWVsIG1vZGlmaWVkIG5h diB0byBmaXggY291bnR5IG1hcCBwcm9ibGVtCkMgUkpBIDUvMjIvMjAwMwpDCkMgKioqIE1j SURBUyBSZXZpc2lvbiBIaXN0b3J5ICoqKgpDICAgVEhJUyBJUyBTU0VDIFBST1BSSUVUQVJZ IFNPRlRXQVJFIC0gSVRTIFVTRSBJUyBSRVNUUklDVEVELgpDIFJFTUFQIFNBTlRFSyAwOTgz OiBSRU1BUFBFUgpDID8gUkVNQVAgLS0gUmVtYXBzIGFuIGFyZWEgaW50byBhIGRpZmZlcmVu dCBwcm9qZWN0aW9uCkMgPyAgIFJFTUFQIHNhcmVhIGRhcmVhIHNwbGluZSA8a2V5d29yZHM+ CkMgPyBQYXJhbWV0ZXJzOgpDID8gICBzYXJlYSB8IHNvdXJjZSBhcmVhIG51bWJlciB0byBy ZW1hcApDID8gICBkYXJlYSB8IGRlc3RpbmF0aW9uIGFyZWEgbnVtYmVyIGZvciByZW1hcHBl ZCBpbWFnZTsgZGFyZWEKQyA/ICAgICAgICAgICBjb250YWlucyB0aGUgcHJvamVjdGlvbiB0 aGF0IHNhcmVhIGlzIHJlbWFwcGVkIGludG8KQyA/ICAgc3BsaW5lIHwgc3BsaW5lIGZ1bmN0 aW9uLCBhcmVhIHBpeGVscyAoZGVmPTIwKQpDID8gS2V5d29yZHM6CkMgPyAgIEJBTkQ9IHwg YmFuZCBudW1iZXIgKGRlZj1sb3dlc3QgYmFuZCBudW1iZXIpCkMgPyAgIE1FUkdFPVlFUyB8 IG1lcmdlIGRhdGEgaW4gc2FyZWEgd2l0aCB3aGF0IGlzIGluIGRhcmVhCkMgPyAgICAgICAg PU5PICB8IG92ZXJ3cml0ZSBkYXRhIGluIGRhcmVhIChkZWYpCkMgPyAgIFNNT09USD1saW1i IGRhdGEKQyA/ICAgICAgICAgIGxpbWIgIHwgTk8vWUVTIGZvciBsaW1iIHNtb290aGluZyAo ZGVmPU5PKQpDID8gICAgICAgICAgZGF0YSAgfCBOTy9ZRVMgZm9yIGRhdGEgc21vb3RoaW5n IChkZWY9Tk8pCkMgPyBSZW1hcmtzOgpDID8gICBUaGUgc2FyZWEgYW5kIGRhcmVhIG11c3Qg Y29udGFpbiBuYXZpZ2F0aW9uIGJlZm9yZSB5b3UgY2FuIHJlbWFwCkMgPyAgIGltYWdlcy4g IERpc3BsYXkgdGhlIG5ldyBpbWFnZSB3aXRoIHRoZSBjb21tYW5kIERGLgpDID8gLS0tLS0t LS0tLQoKICAgICAgSU5URUdFUiAgICAgIEtFWTEgICwKICAgICAuICAgICAgICAgICAgIEtF WTIgICwKICAgICAuICAgICAgICAgICAgIElTUFNMICwKICAgICAuICAgICAgICAgICAgIElT UFNFICwKICAgICAuICAgICAgICAgICAgIElQUCAgICwKICAgICAuICAgICAgICAgICAgIElE SVIoIDY0ICkKICAgIAoKICAgICAgSU5URUdFUiAgc3RhdHVzCiAgICAgIElOVEVHRVIgIG1j Y21kaW50LCBtY2NtZGRsbCAgICAgICAgICAgISA8PDw8PCBVUEMgbW9kIDIwMDMwNjEwID4+ Pj4+CiAgICAgIERPVUJMRSBQUkVDSVNJT04gTEFUMSwgTEFUMiwgTE9OMSwgTE9OMiwgTEFU U1BBQ0UsIExPTlNQQUNFLAogICAgICsgICAgTGF0X1NwYWNlX0RlZywgTG9uX1NwYWNlX0Rl ZywgTnVtYmVyX0VsZW1lbnRzLCBOdW1iZXJfbGluZXMKICAgICAgSU5URUdFUiBOQVYoMTI4 KQoKICAgICAgY2hhcmFjdGVyKjEyIGNmZiAgICAgICAgICAgICAgICAgICAgICAhIDw8PDw8 IFVQQyBhZGQgMjAwMzA2MTAgPj4+Pj4KCmMgICAgICBLRVkxICA9IElQUCgxLDApCmMgICAg ICBLRVkyICA9IElQUCgyLDApCmMgICAgICBJU1BTTCA9IElQUCgzLDIwKQpjIG1vZGlmaWVk IGp1bmUgNSwgMTk5OCByamErCmMgQWRkIGtleSB3b3JkcwoKICAgICAgc3RhdHVzID0gbWNj bWRpbnQoJyAnLDEsJ0lOUFVUIEFSRUEgTlVNQkVSJywwLDEsOTk5OSxrZXkxKQogICAgICBp ZiAoc3RhdHVzIC5sdC4gMCkgdGhlbiAgICAgICAgICAgICAgICEgPDw8PDwgVVBDIG1vZCAy MDAzMDYxMCA+Pj4+PgogICAgICAgIGNhbGwgZWRlc3QoICcgbWNjbWRpbnQgZm9yIDFzdCBw b3NpdGlvbmFsIHBhcmFtZXRlciByZXR1cm5zICcsCiAgICAgJiAgICAgICAgICAgICAgIHN0 YXR1cyApCiAgICAgICAgcmV0dXJuCiAgICAgIGVuZGlmCiAgICAgIGNhbGwgZGRlc3QoICdJ bnB1dCBBUkVBID0gJywga2V5MSApCiAgICAgIHN0YXR1cyA9IG1jY21kaW50KCcgJywyLCdP VVRQVVQgQVJFQSBOVU1CRVInLDAsMSw5OTk5LGtleTIpCiAgICAgIGlmIChzdGF0dXMgLmx0 LiAwKSB0aGVuICAgICAgICAgICAgICAgISA8PDw8PCBVUEMgbW9kIDIwMDMwNjEwID4+Pj4+ CiAgICAgICAgY2FsbCBlZGVzdCggJyBtY2NtZGludCBmb3IgMm5kIHBvc2l0aW9uYWwgcGFy YW1ldGVyIHJldHVybnMgJywKICAgICAmICAgICAgICAgICAgICAgc3RhdHVzICkKICAgICAg ICByZXR1cm4KICAgICAgZW5kaWYKICAgICAgY2FsbCBkZGVzdCggJ091dHB1dCBBUkVBID0g Jywga2V5MiApCgogICAgICBzdGF0dXMgPSBtY2NtZGludCgnICcsMywnU1BMSU5FIFNJWkUn LDUsMywxMDAsaXNwc2wpCiAgICAgIGlmIChzdGF0dXMgLmx0LiAwKSB0aGVuICAgICAgICAg ICAgICAgISA8PDw8PCBVUEMgbW9kIDIwMDMwNjEwID4+Pj4+CiAgICAgICAgY2FsbCBlZGVz dCggJyBtY2NtZGludCBmb3IgM25kIHBvc2l0aW9uYWwgcGFyYW1ldGVyIHJldHVybnMgJywK ICAgICAmICAgICAgICAgICAgICAgc3RhdHVzICkKICAgICAgICByZXR1cm4KICAgICAgZW5k aWYKICAgICAgY2FsbCBkZGVzdCggJ1NwbGluZSBTaXplID0gJywgaXNwc2wgKQogICAgICAg CiAgICAgIHN0YXR1cyA9IG1jY21kZGxsKCdMQVQnLDEsJ1NPVVRIIExBVElUVURFJywwLjBk MCwKICAgICArICAgICAtOTAuMGQwLDkwLjBkMCxMQVQxKQogICAgICBpZiAoc3RhdHVzIC5s dC4gMCkgdGhlbiAgICAgICAgICAgICAhIDw8PDw8IFVQQyBtb2QgMjAwMzA2MTAgPj4+Pj4K ICAgICAgICBjYWxsIGVkZXN0KCAnbWNjbWRkbGwgZm9yIExBVCAxIHJldHVybnMgJywgc3Rh dHVzICkKICAgICAgICByZXR1cm4KICAgICAgZW5kaWYKICAgICAgY2FsbCBkZGVzdCgnU291 dGggTGF0ID0nLy9jZmYoTEFUMSwyKSwwKSAgICAhIDw8PDw8IFVQQyBtb2QgMjAwMzA2MTAg Pj4+Pj4KCiAgICAgIHN0YXR1cyA9IG1jY21kZGxsKCdMQVQnLDIsJ05PUlRIIExBVElUVURF JywwLjBkMCwKICAgICArICAgICAgTEFUMSw5MC4wZDAsTEFUMikKICAgICAgaWYgKHN0YXR1 cyAubHQuIDApIHRoZW4gICAgICAgICAgICAgISA8PDw8PCBVUEMgbW9kIDIwMDMwNjEwID4+ Pj4+CiAgICAgICAgY2FsbCBlZGVzdCggJ21jY21kZGxsIGZvciBMQVQgMiByZXR1cm5zICcs IHN0YXR1cyApCiAgICAgICAgcmV0dXJuCiAgICAgIGVuZGlmCiAgICAgIGNhbGwgZGRlc3Qo J05vcnRoIExhdCA9Jy8vY2ZmKExBVDIsMiksMCkgICAgISA8PDw8PCBVUEMgbW9kIDIwMDMw NjEwID4+Pj4+CgogICAgICBzdGF0dXMgPSBtY2NtZGRsbCgnTE9OJywxLCdFQVNUIExPTkdJ VFVERScsMC4wZDAsCiAgICAgKyAgICAgIC0xODAuMGQwLDE4MC4wZDAsTE9OMSkKICAgICAg aWYgKHN0YXR1cyAubHQuIDApIHRoZW4gICAgICAgICAgICAgISA8PDw8PCBVUEMgbW9kIDIw MDMwNjEwID4+Pj4+CiAgICAgICAgY2FsbCBlZGVzdCggJ21jY21kZGxsIGZvciBMT04gMSBy ZXR1cm5zICcsIHN0YXR1cyApCiAgICAgICAgcmV0dXJuIAogICAgICBlbmRpZgogICAgICBj YWxsIGRkZXN0KCdFYXN0IExvbiA9Jy8vY2ZmKExPTjEsMiksMCkgICAgISA8PDw8PCBVUEMg bW9kIDIwMDMwNjEwID4+Pj4+CgogICAgICBzdGF0dXMgPSBtY2NtZGRsbCgnTE9OJywyLCdX RVNUIExPTkdJVFVERScsMC4wZDAsIAogICAgICsgICAgICBMT04xLDE4MC4wZDAsTE9OMikg CiAgICAgIGlmIChzdGF0dXMgLmx0LiAwKSB0aGVuICAgICAgICAgICAgICEgPDw8PDwgVVBD IG1vZCAyMDAzMDYxMCA+Pj4+PgogICAgICAgIGNhbGwgZWRlc3QoICdtY2NtZGRsbCBmb3Ig TE9OIDIgcmV0dXJucyAnLCBzdGF0dXMgKQogICAgICAgIHJldHVybiAKICAgICAgZW5kaWYK ICAgICAgY2FsbCBkZGVzdCgnV2VzdCBMb24gPScvL2NmZihMT04yLDIpLDApICAgICEgPDw8 PDwgVVBDIG1vZCAyMDAzMDYxMCA+Pj4+PgoKICAgICAgc3RhdHVzID0gbWNjbWRkYmwoJ1NQ QS5DSU5HJywxLCdMQVRJVFVERSBTUEFDSU5HJywKICAgICArICAgICAgNC4wZDAsNC4wZDAs MTYuMGQwLExBVFNQQUNFKQogICAgICBpZiAoc3RhdHVzIC5sdC4gMCkgdGhlbiAgICAgICAg ICAgICAhIDw8PDw8IFVQQyBtb2QgMjAwMzA2MTAgPj4+Pj4KICAgICAgICBjYWxsIGVkZXN0 KCAnbWNjbWRkbGwgZm9yIExBVCBzcGFjaW5nIHJldHVybnMgJywgc3RhdHVzICkKICAgICAg ICByZXR1cm4KICAgICAgZW5kaWYKICAgICAgY2FsbCBkZGVzdCgnTEFUIHNwYWNpbmc9Jy8v Y2ZmKGxhdHNwYWNlLDIpLDApICAgICEgPDw8PDwgVVBDIG1vZCAyMDAzMDYxMCA+Pj4+PgoK ICAgICAgc3RhdHVzID0gbWNjbWRkYmwoJ1NQQS5DSU5HJywyLCdMT05HSVRVREUgU1BBQ0lO RycsCiAgICAgKyAgICAgIExBVFNQQUNFLDQuMGQwLDE2LjBkMCxMT05TUEFDRSkKICAgICAg aWYgKHN0YXR1cyAubHQuIDApIHRoZW4gICAgICAgICAgICAgISA8PDw8PCBVUEMgbW9kIDIw MDMwNjEwID4+Pj4+CiAgICAgICAgY2FsbCBlZGVzdCggJ21jY21kZGxsIGZvciBMT04gc3Bh Y2luZyByZXR1cm5zICcsIHN0YXR1cyApCiAgICAgICAgcmV0dXJuCiAgICAgIGVuZGlmCiAg ICAgIGNhbGwgZGRlc3QoJ0xPTiBzcGFjaW5nPScvL2NmZihsb25zcGFjZSwyKSwwKSAgICAh IDw8PDw8IFVQQyBtb2QgMjAwMzA2MTAgPj4+Pj4KYyByamEtCgogICAgICBJU1BTRSA9IElT UFNMCgpjLS0tIENvbXB1dGUgbnVtYmVyIG9mIGxpbmVzIGFuZCBlbGVtZW50cyBpbiBzdWJz ZXR0ZWQgcmVnaW9uCmMgICAgc3BhY2luZyByZXNldCB0byBkZWdyZWVzIHJqYSsKICAgIAog ICAgICBMYXRfU3BhY2VfRGVnID0gTEFUU1BBQ0UgLyAxMTEuMTBkMCAKICAgICAgTG9uX1Nw YWNlX0RlZyA9IExPTlNQQUNFIC8gMTExLjEwZDAgCiAgICAgIE51bWJlcl9MaW5lcyA9ICgg KExBVDIgLSBMQVQxKSAvIExhdF9TcGFjZV9EZWcgKSArIDEKICAgICAgTnVtYmVyX0VsZW1l bnRzID0gKCAoTE9OMiAtIExPTjEpIC8gTG9uX1NwYWNlX0RlZyApICsgMQoKQy0tLSAgUkVT RVQgVEhFIE9VVFBVVCBBUkVBJ1MgUFJFRklYIElORk9STUFUSU9OIE5PVyBCRUZPUkUgQU5Z IEtJTkQKQyAgICAgT0YgUkVBRCBJUyBQRVJGT1JNRUQgT04gVEhFIEFSRUEgKEVEVykKYyAg ICAgIENBTEwgUkVBREQgKCBLRVkyLCBJRElSICkKYy0tLSBSZWFkIGlucHV0CiAgICAgIENB TEwgUkVBREQgKCBLRVkxLCBJRElSICkKICAgICAgSURJUig2KSA9IDEKICAgICAgSURJUig3 KSA9IDEKICAgICAgSURJUig5KSA9IE51bWJlcl9MaW5lcyAKICAgICAgSURJUigxMCkgPSBO dW1iZXJfRWxlbWVudHMKICAgICAgSURJUigxMikgPSAxIAogICAgICBJRElSKDEzKSA9IDEK ICAgICAgSURJUigxNSkgPSAwCiAgICAgIElESVIoMzYpID0gMAogICAgICBJRElSKDQ5KSA9 IDAKICAgICAgSURJUig1MCkgPSAwCiAgICAgIElESVIoNTEpID0gMApDICAgICBUSElTIElT IEFOIElOVkFMSUQgQ0FMSUJSQVRJT04gVFlQRS4gWU9VIE1VU1QgVVNFIFRIRSBTVSBVVElM SVRZIFRPIERJU1BMQVkgSU1BR0UgKEpVTksgQU5EIFJFRikKYyAgICAgIElESVIoNTIpID0g TElUKCdUQVNDJykKICAgICAgSURJUig1MikgPSBMSVQoJ0dWQVInKQpjIHJqYS0KICAgICAK YyAgICAgIGNhbGwgc2Rlc3QoJ2lkaXIoOSk9ICcgLCBpZGlyKDkpKQpjICAgICAgY2FsbCBz ZGVzdCgnaWRpcigxNCk9ICcgLCBpZGlyKDE0KSkKYyAgICAgIGNhbGwgc2Rlc3QoJ2lkaXIo MTEpPSAnICwgaWRpcigxMSkpCmMgICAgICBjYWxsIHNkZXN0KCdpZGlyKDEyKT0gJyAsIGlk aXIoMTIpKQpjICAgICAgY2FsbCBzZGVzdCgnaWRpcigxMCk9ICcgLCBpZGlyKDEwKSkKCmMg ICAgICBDQUxMIFdSSVREICggS0VZMiwgSURJUiApCmMgICAgIGNoYW5nZSB0byBtYWtlIG91 dHB1dCBhcmVhIHJqYSsKICAgICAgQ0FMTCBtYWthcmEgKCBLRVkyLCBJRElSICkKCmMgRklM TCBJTiBOQVYgCiAgICAgIGtsYXRzcGFjZSA9IGlkbmludChMYXRfU3BhY2VfRGVnKjEwMDAw KQogICAgICBrbG9uc3BhY2UgPSBpZG5pbnQoTG9uX1NwYWNlX0RlZyoxMDAwMCkKICAgICAg TkFWKDEpID0gTElUKCdSRUNUJykgCiAgICAgIE5BVigyKSA9IE51bWJlcl9MaW5lcy8yIAog ICAgICBOQVYoMykgPSBpZG5pbnQoTEFUMioxMDAwMCkgLSBrbGF0c3BhY2UqKG5hdigyKS0x KQogICAgICBOQVYoNCkgPSBOdW1iZXJfRWxlbWVudHMvMgogICAgICBOQVYoNSkgPSBpZG5p bnQoTE9OMioxMDAwMCkgLSBrbG9uc3BhY2UqKG5hdig0KS0xKSAKICAgICAgTkFWKDYpID0g a2xhdHNwYWNlICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgTkFWKDcpID0ga2xvbnNw YWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBOQVYoOCkgPSA2Mzc4Mzg4 ICAhIHJhZGl1cyBvZiBlYXJ0aAogICAgICBOQVYoOSkgPSA4MTk5OSAgICAhIGVjY2VudHJp Y2l0eSBvZiBlYXJ0aAogICAgICBOQVYoMTApID0gMCAKICAgICAgTkFWKDExKSA9IDAgCiAg ICAgIE5BVigyMSkgPSBJRElSKDYpIAogICAgICBOQVYoMjIpID0gSURJUig3KSAKICAgICAg TkFWKDIzKSA9IElESVIoOSkgCiAgICAgIE5BVigyNCkgPSBJRElSKDEwKSAKICAgIAogICAg ICBjYWxsIGFyYXB1dChLRVkyLElESVIoMzUpLDUxMixOQVYpCiAgICAgIApjIHJqYS0KCgog ICAgICBDQUxMIERERVNUKCdDQUxMIE1BUFBFUicsMCkKCiAgICAgIENBTEwgTUFQUEVSKElT UFNMLElTUFNFKQoKICAgICAgQ0FMTCBTVEFNUChLRVkyKQogICAgICB3cml0ZSgqLCopJ2Vu ZCBoZXJlIScKICAgICAgUkVUVVJOCiAgICAgIEVORAoKICAgICAgU1VCUk9VVElORSBVSU5J VChJQkFEKQogICAgICBJTVBMSUNJVCBJTlRFR0VSIChTLEQpCkMgICAgIElOQ0xVREUgJ01Y Q0RTWi5JTkMnCkM9PT09PT09PT09PT09PT09PT09PT09PT09PT0gRElNWENEU1ogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQyAkICAg KEpSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCkMgJCAgIFRISVMgSU5DTFVERSBGSUxFIElTIFBBUlQgT0YgVEhFIE5B VklHQVRJT04gU1VCU1lTVEVNICAgICAgICAgICAgIApDICQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQyAk ICAgREVTQ1JJUFRJT046ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCkMgJCAgICAgIFRISVMgSVMgVEhFIFZBTFVFIE9GIExBUkdFU1Qg TkFWSUdBVElPTiBDT0RJQ0lMIFNJWkUgQUxMT1dFRCAgIApDICQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK QyAkJCAgRElNWENEU1ogPSBJTkNMVURFLCBOQVZJR0FUSU9OICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApDIERFRklOSVRJT05TIE9G IFBBUkFNRVRFUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKQyBNWENEU1ogICA6IExBUkdFU1QgQUxMT1dFRCBDT0RJQ0lMIFNJWkUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBJTlRFR0VS ICAgICAgTVhDRFNaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIFBBUkFNRVRFUiAoTVhDRFNaID0gNSox MjgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKQz09PT09PT09PT09PT09PT09PT09PT09PT0gRU5EIERJTVhDRFNaID09PT09 PT09PT09PT09PT09PT09PT09PT09PSAgICAgCiAgICAgIElOVEVHRVIgICAgIE5BVlNJWgog ICAgICBDSEFSQUNURVIqNCBDTElUCiAgICAgIENPTU1PTi9QQVJBTVMvU0FOLFNOTCxTTkUs U0xCLFNSRUVMLFNEQVksU1RJTUUsU0xJTixTRUxFLAogICAgIDFTSU5DTCxTSU5DRSxTR0Uo OCksREFOLEROTCxETkUsRExCLERSRUVMLEREQVksRFRJTUUsRExJTixERUxFLAogICAgIDJE SU5DTCxESU5DRSxER0UoOCksU1BTTCxTUFNFCiAgICAgIERJTUVOU0lPTiBESVIxKDY0KSxE SVIyKDY0KSxJUEFSTTEoTVhDRFNaKSxJUEFSTTIoTVhDRFNaKQogICAgICAgIENBTEwgRERF U1QoJ0lOIFVJTklUJywwKQoKICAgICAgQ0FMTCBSRUFERChTQU4sRElSMSkKICAgICAgQ0FM TCBSRUFERChEQU4sRElSMikKCiAgICAgIE5BVlNJWiA9IERJUjEoNjMpIC0gRElSMSgzNSkK ICAgICAgSUYgKERJUjEoNjMpLkVRLjApIE5BVlNJWiA9IERJUjEoMzQpIC0gRElSMSgzNSkK ICAgICAgQ0FMTCBBUkFHRVQoU0FOLERJUjEoMzUpLE5BVlNJWixJUEFSTTEpCiAgICAgIE5B VlNJWiA9IERJUjIoNjMpIC0gRElSMigzNSkKICAgICAgSUYgKERJUjIoNjMpLkVRLjApIE5B VlNJWiA9IERJUjIoMzQpIC0gRElSMigzNSkKICAgICAgQ0FMTCBBUkFHRVQoREFOLERJUjIo MzUpLE5BVlNJWixJUEFSTTIpCiAgICAgIENBTEwgRERFU1QoJ0NBTEwgTlZQUkVQJywwKQog ICAgICBJRihOVlBSRVAoMSxJUEFSTTEpLk5FLjApIEdPIFRPIDkwMgogICAgICBJRihOVlBS RVAoMixJUEFSTTIpLk5FLjApIEdPIFRPIDkwMwogICAgICBDQUxMIERERVNUKCdDQUxMIE5W WElOSScsMCkKICAgICAgaSA9IE5WMUlOSSgyLExJVCgnWFlaICcpKSAgICAgICAgICAgICAh IDw8PDw8IFVQQyBtb2QgMjAwMzA2MTAgPj4+Pj4KICAgICAgaSA9IE5WMklOSSgyLExJVCgn WFlaICcpKSAgICAgICAgICAgICAhIDw8PDw8IFVQQyBtb2QgMjAwMzA2MTAgPj4+Pj4KQ0ND ICAgQ0FMTCBCTEtBKDgwLERJUjEpCkNDQyAgIENBTEwgTU9WQ1coQ0xJVChJUEFSTTEoMSkp Ly8nICBUTyAgJy8vQ0xJVChJUEFSTTIoMSkpLERJUjEpCkNDQyAgIElTPUlDUFVUKERBTixE SVIxKQogICAgICBJQkFEPTAKICAgICAgUkVUVVJOCjkwMCAgIENPTlRJTlVFCiAgICAgIENB TEwgRURFU1QoJ05BViBOT1QgRk9VTkQgRk9SIFNPVVJDRSBBUkVBICcsU0FOKQogICAgICBJ QkFEPS0xCiAgICAgIFJFVFVSTgo5MDEgICBDT05USU5VRQogICAgICBDQUxMIEVERVNUKCdO QVYgTk9UIEZPVU5EIEZPUiBERVNUSU5BVElPTiBBUkVBICcsREFOKQogICAgICBJQkFEPS0x CiAgICAgIFJFVFVSTgo5MDIgICBDT05USU5VRQogICAgICBDQUxMIEVERVNUKCdOTyBOQVYg TU9EVUxFIEZPUiAnLy9DTElUKElQQVJNMSgxKSkvLycgIEFSRUEgJyxTQU4pCiAgICAgIElC QUQ9LTEKICAgICAgUkVUVVJOCjkwMyAgIENPTlRJTlVFCiAgICAgIENBTEwgRURFU1QoJ05P IE5BViBNT0RVTEUgRk9SICcvL0NMSVQoSVBBUk0yKDEpKS8vJyAgQVJFQSAnLERBTikKICAg ICAgSUJBRD0tMQogICAgICBSRVRVUk4KICAgICAgRU5ECiAgICAgIFNVQlJPVVRJTkUgVU1B UChZTCxZRSxaTCxaRSxJQkFEKQogICAgICBJRihOVjJTQUUoWUwsWUUsMC4sWCxZLFopLk5F LjApIEdPIFRPIDkwMAogICAgICBJRihOVjFFQVMoWCxZLFosWkwsWkUsWkRVTSkuTkUuMCkg R08gVE8gOTAwCiAgICAgIElCQUQ9MAogICAgICBSRVRVUk4KOTAwICAgQ09OVElOVUUKICAg ICAgSUJBRD0tMQogICAgICBSRVRVUk4KICAgICAgRU5ECmMKYy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmMK ICAgICAgU1VCUk9VVElORSBJTklUKEZMQUcsU1BTTEQsU1BTRUQpCkMgKioqIE1jSURBUyBS ZXZpc2lvbiBIaXN0b3J5ICoqKgpDIDEgSU5JVC5GT1IgMTktTWFyLTkwLDE2OjM5OjM2LGBT U0VDJyBQQy1NY0lEQVMgdmVyIDUuMDAKQyAyIElOSVQuRk9SIDI1LVNlcC05MCw3OjM0OjI4 LGBTTUcnIEZpcnN0IFJlbGVhc2UgaW50byBDT01tb24KQyAzIElOSVQuRk9SIDI4LUphbi05 MSw5OjA5OjM4LGBTTUcnIHRyYXAgb2NjdXJyZWQgaWYgZGVzdCBhcmVhIG5vdCAxIGJ5dGUg ZGF0YQpDIDQgSU5JVC5GT1IgMjgtSmFuLTkxLDk6MDk6MzgsYEVSSUNOJyBSZWxlYXNlZApD IDUgSU5JVC5GT1IgMTUtTWFyLTkyLDE5OjA2OjA0LGBEQVZFUycgQ2hlY2sgZm9yIGFyZWEg ZXhpc3QgaW5xIDIzMzMKQyA2IElOSVQuRk9SIDI3LU1hci05Miw4OjI2OjQ0LGBVU0VSJyBS ZWxlYXNlZCBmb3IgTWNJREFTLVggT25seQpDIDcgSU5JVC5GT1IgNS1Ob3YtOTIsMTM6MTU6 MDQsYEtFTkInIGNvcnJlY3RlZCBTTU9PVEg9IGtleXdvcmQgKDI5ODQpCkMgOCBJTklULkZP UiAyMy1Ob3YtOTIsODoxOTo0OCxgVVNFUicgUmVsZWFzZWQKQyA5IElOSVQuRk9SIDEwLUZl Yi05MywxNTozMTo0MixgUkFZTCcgQWRkZWQgcmVtYXBhcm0uaW5jIGluY2x1ZGUgZmlsZSB0 aGF0CkMgICAgICBjb250YWlucyBidWZmZXIgc2l6ZXMgKDM1NTgpCkMgMTAgSU5JVC5GT1Ig MS1NYXItOTMsNzozMjo1NixgVVNFUicgUmVsZWFzZWQKQyAqKiogTWNJREFTIFJldmlzaW9u IEhpc3RvcnkgKioqCkMgJCBTVUJST1VUSU5FIElOSVQoRkxBRywgU1BTTEQsIFNQU0VEKSAg KERBUykKQyAkIElOSVRJQUxJWkFUSU9OIEZPUiBSRU1BUFBJTkcKQyAkIEZMQUcgPSAoSSkg T1VUUFVUID0wIEFMTCBPSzsgPTEgU09NRVRISU5HIFdST05HCkMgJCBTUFNMRCA9IChJKSBJ TlBVVCBTUExJTkUgU0laRSBJTiBMSU5FIERJUkVDVElPTgpDICQgU1BTRUQgPSAoSSkgSU5Q VVQgU1BMSU5FIFNJWkUgSU4gRUxFTUVOVCBESVJFQ1RJT04KQyAkJCBJTklUID0gQ09OVkVS VCwgSU1BR0UsIFBST0pFQ1RJT04KICAgICAgSU1QTElDSVQgSU5URUdFUihBLVopCiAgICAg IENIQVJBQ1RFUioxMiBDRkksQ0tXUCxDSU1HU00KICAgICAgSU5DTFVERSAncmVtYXBhcm0u aW5jJwogICAgICBDT01NT04vUEFSQU1TL1NBTixTTkwsU05FLFNMQixTUkVFTCxTREFZLFNU SU1FLFNMSU4sU0VMRSwKICAgICAxU0lOQ0wsU0lOQ0UsU0dFKDgpLERBTixETkwsRE5FLERM QixEUkVFTCxEREFZLERUSU1FLERMSU4sREVMRSwKICAgICAyRElOQ0wsRElOQ0UsREdFKDgp LFNQU0wsU1BTRQogICAgICBDT01NT04vQ09OU1RTL0JGVyxCQ1csTlNQTCxOU1BFLE5TUCxO Q0wsTkNFLE5DLFNQUElYCiAgICAgIERJTUVOU0lPTiBJRElSKDY0KSxKRElSKDY0KQogICAg ICBCQ1c9QkNXRAogICAgICBCRlc9QkZXRAogICAgICBGTEFHPTAKICAgICAgU0FOPUlQUCgx LDApCiAgICAgIERBTj1JUFAoMiwwKQogICAgICBJRihTQU4gLkxULiAxIC5PUi4gU0FOIC5H VC4gOTk5OSkgR08gVE8gOTk4CiAgICAgIElGKERBTiAuTFQuIDEgLk9SLiBEQU4gLkdULiA5 OTk5KSBHTyBUTyA5OTkKCiAgICAgIENBTEwgUkVBREQoU0FOLElESVIpCiAgICAgIENBTEwg UkVBREQoREFOLEpESVIpCgogICAgICBJRiggSURJUigxKSAuTkUuIDApIFRIRU4KCSBDQUxM IEVERVNUKCdTb3VyY2UgYXJlYSBkb2VzIG5vdCBleGlzdCAnLFNBTikKCSBSRVRVUk4KICAg ICAgRU5ESUYKCiAgICAgIElGKCBKRElSKDEpIC5ORS4gMCkgVEhFTgoJIENBTEwgRURFU1Qo J0Rlc3RpbmF0aW9uIGFyZWEgZG9lcyBub3QgZXhpc3QgJyxEQU4pCgkgUkVUVVJOCiAgICAg IEVORElGCmMgcmphIDIwMDMKYyAgICAgIE5CWVRFTCA9IE1BWDAoTktXUCgnQkFORCcpLDEp ICogSURJUigxMSkKYyAgY2hhbmdlIHRvIGluY2x1ZGUgYWxsIDUgYmFuZHMgcmphKwogICAg ICBOQllURUwgPSA1ICogSURJUigxMSkKYyByamEtCgogICAgICBCRlcgPSBCRlcvTkJZVEVM CiAgICAgIENBTEwgSE9XQklHKFNBTixTTkwsU05FKQogICAgICBDQUxMIENPQVJFQShTQU4s U1JFRUwsU0RBWSxTVElNRSxTTElOLFNFTEUsU0lOQ0wsU0lOQ0UsU0dFKQogICAgICBDQUxM IEhPV0JJRyhEQU4sRE5MLERORSkKICAgICAgQ0FMTCBDT0FSRUEoREFOLERSRUVMLEREQVks RFRJTUUsRExJTixERUxFLERJTkNMLERJTkNFLERHRSkKICAgICAgSUYoRE5MLkxULjEpIEdP IFRPIDk5NwogICAgICBJRihTTkwuTFQuMSkgR08gVE8gOTk3CmNjYyAgICAgIElGICgoSkRJ UigxMSkuTkUuMSkuT1IuKEpESVIoMTUpLk5FLjApKSBHT1RPIDk5NQogICAgICBTUFNMPVNQ U0xECiAgICAgIFNQU0U9U1BTRUQKQyBDT05TVEFOVFMKQyBCRlc9QkxPQ0sgV09SRCBTSVpF CkMgQkNXPSNDT1JORVJTIE1BWElNVU0vT1VUUFVUIElNQUdFCkMgU1BTPVNQTElORSBTSVpF CkMgTlNQTD0jU1BMSU5FUy9MSU5FCkMgTlNQRT0jU1BMSU5FUy9FTEUKQyBOU1A9I1NQTElO RVMKQyBOQ0w9I0NPUk5FUlMvTElORQpDIE5DRT0jQ09STkVSUy9FTEUKQyBOQz0jQ09STkVS UwpDIFNQUElYPVBJWEVMUy9TUExJTkUKQyBTQU4sU05MLFNORT1TT1VSQ0UgQVJFQSwjTElO RVMsI0VMRVMKQyBEQU4sRE5MLERORT1ERVNUIEFSRUEsI0xJTkVTLCNFTEVTCkMgU0xCLERM Qj1TT1VSQ0UgJiBERVNULiBMSU5FUy9CTE9DSwpDCkMgU0VUIENPTlNUQU5UUwogICAgICBO U1BMPShETkUrU1BTRS0xKS9TUFNFCiAgICAgIE5TUEU9KEROTCtTUFNMLTEpL1NQU0wKICAg ICAgTlNQPU5TUEwqTlNQRQogICAgICBOQ0w9TlNQTCsxCiAgICAgIE5DRT1OU1BFKzEKICAg ICAgSUYoTU9EKERORStTUFNFLTEsU1BTRSkuRVEuMCkgTkNMPU5TUEwKICAgICAgSUYoTU9E KEROTCtTUFNMLTEsU1BTTCkuRVEuMCkgTkNFPU5TUEUKICAgICAgTkM9TkNMKk5DRQogICAg ICBJRihOQy5HVC5CQ1cpIEdPIFRPIDk5NgogICAgICBTUFBJWD1TUFNMKlNQU0UKICAgICAg U0xCPUJGVy9TTkUKQwpDLS0tIENBUFRVUkUgS0VZV09SRCBGT1IgQSBTTU9PVEhFRCBJTUFH RQpDCiAgICAgIENJTUdTTSA9IENLV1AoJ1NNTycsMiwnTicpCiAgICAgIElGKENJTUdTTSgx OjEpIC5FUS4gJ1knKSBTTEI9KEJGVy0yKihTTkUrOCkpLyhTTkUrOCkKQy4uLlRSWSBUTyBD T1JSRUNUICNMSU5FUyBGT1IgMiBCWVRFIERBVEEKICAgICAgU0xCPVNMQi1JRElSKDExKSsx CiAgICAgIERMQj0oQkZXL0RORSkvU1BTTCpTUFNMCiAgICAgIElGKERMQi5MRS4wKSBHTyBU TyA5OTYKICAgICAgRkxBRz0xCiAgICAgIFJFVFVSTgo5OTYgICBDT05USU5VRQogICAgICBC RldETkU9QkZXL0RORQogICAgICBETyAxMTAgSj1CRldETkUsMSwtMQogICAgICBOQ1RFU1Q9 KChETkUrSi0xKS9KKSooKEROTCtKLTEpL0opCiAgICAgIElGKE5DVEVTVC5HVC5CQ1cpIEdP IFRPIDExMQoxMTAgICBDT05USU5VRQoxMTEgICBDT05USU5VRQogICAgICBJTE9XPUorMQog ICAgICBJSEk9QkZXRE5FCiAgICAgIElGKElISS5HVC5JTE9XKSBUSEVOCiAgICAgICAgIENB TEwgU0RFU1QoJ1JFTUFQIC0gU1BMSU5FIFNJWkUgTVVTVCBCRSBCRVRXRUVOJy8vCiAgICAg KiAgIENGSShJTE9XKS8vJyBBTkQnLy9DRkkoSUhJKSwwKQogICAgICBFTFNFCiAgICAgICAg IENBTEwgU0RFU1QoJ1JFTUFQIC0gREVTVElOQVRJT04gQVJFQSBUTyBMQVJHRScsMCkKICAg ICAgRU5ESUYKICAgICAgUkVUVVJOCjk5NSAgIENPTlRJTlVFCiAgICAgIENBTEwgU0RFU1Qo J1JFTUFQIC0gREVTVElOQVRJT04gQVJFQSBNVVNUIEJFIDEgQllURSBEQVRBJywwKQogICAg ICBSRVRVUk4KOTk3ICAgQ09OVElOVUUKICAgICAgQ0FMTCBTREVTVCgnUkVNQVAgLSBCQUQg QVJFQSBTSVpFJywwKQogICAgICBSRVRVUk4KOTk4ICAgQ09OVElOVUUKICAgICAgQ0FMTCBT REVTVCgnUkVNQVAgLSBCQUQgQVJFQSBOVU1CRVIgJyxTQU4pCiAgICAgIFJFVFVSTgo5OTkg ICBDQUxMIFNERVNUKCdSRU1BUCAtIEJBRCBBUkVBIE5VTUJFUiAnLERBTikKICAgICAgUkVU VVJOCiAgICAgIEVORAoKCgpjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYwogICAgICBTVUJST1VUSU5FIERP TUFQCkMgKioqIE1jSURBUyBSZXZpc2lvbiBIaXN0b3J5ICoqKgpDIDEgRE9NQVAuRk9SIDIx LU1hci05MCw5OjM2OjUwLGBTU0VDJyBQQy1NY0lEQVMgdmVyIDUuMDAKQyAyIERPTUFQLkZP UiAyNS1TZXAtOTAsNzozNDozOCxgU01HJyBGaXJzdCBSZWxlYXNlIGludG8gQ09NbW9uCkMg MyBET01BUC5GT1IgMS1NYXktOTEsMTA6MjI6NTgsYERBVkVTJyBBZGRlZCBVUERBVEU9IHRv IHVwZGF0ZSBhcmVhcwpDIDQgRE9NQVAuRk9SIDE0LU1heS05MSwxNTowMzoyMCxgREFWRVMn IEFkZGVkIE1FUkdFPSBrZXl3b3JkCkMgNSBET01BUC5GT1IgMjEtTWF5LTkxLDEwOjU3OjQy LGBEQVZFUycgZml4IGZvciBkYXRlbGluZSBwcm9ibGVtCkMgNiBET01BUC5GT1IgMjEtTWF5 LTkxLDEwOjU3OjQyLGBFUklDTicgUmVsZWFzZWQKQyA3IERPTUFQLkZPUiA1LU5vdi05Miwx MzoxNTo1MixgS0VOQicgZml4ZWQgbGltYiBzbW9vdGhpbmcgYW5kIFNNT09USD0KQyAgICAg IGtleW9yZCAoMjk4NCkKQyA4IERPTUFQLkZPUiAyMy1Ob3YtOTIsODozNDoxNCxgVVNFUicg UmVsZWFzZWQKQyA5IERPTUFQLkZPUiAxMC1GZWItOTMsMTU6MzM6MDgsYFJBWUwnIEFkZGVk IHJlbWFwYXJtLmluYyBpbmNsdWRlIGZpbGUgdGhhdApDICAgICAgY29udGFpbnMgYnVmZmVy IHNpemVzICgzNTU4KQpDIDEwIERPTUFQLkZPUiAxLU1hci05Myw3OjMxOjUwLGBVU0VSJyBS ZWxlYXNlZApDICoqKiBNY0lEQVMgUmV2aXNpb24gSGlzdG9yeSAqKioKQyAkIFNVQlJPVVRJ TkUgRE9NQVAgIChEQVMpCkMgJCBDUkVBVEUgQklMSU5FQVIgU1BMSU5FUyBBTkQgTU9WRSBE QVRBCkMgJCQgRE9NQVA9IENPTlZFUlQsIE1BUCwgUFJPSkVDVElPTgogICAgICBQQVJBTUVU RVIgKE1BWEJORCA9IDEyKQogICAgICBQQVJBTUVURVIgKE1BWENBTCA9IDUxMikKICAgICAg SU1QTElDSVQgSU5URUdFUiAoQS1ZKQogICAgICBMT0dJQ0FMKjEgUkVBRCxTT1VSQ0UsREVT VAogICAgICBJTlRFR0VSKjQgQk5ET1JEKE1BWEJORCksIFNSQ0RJUig2NCksIG9kaXIoNjQp CiAgICAgIGludGVnZXIqNCBjYWxhcnIobWF4Y2FsKSwgY2Fsc2l6CglpbnRlZ2VyIGlvcHQo NSkKICAgICAgUkVBTCBBTUFYMSxBTUlOMSxBTklOVAogICAgICBJTkNMVURFICdyZW1hcGFy bS5pbmMnCiAgICAgIENPTU1PTi9QQVJBTVMvU0FOLFNOTCxTTkUsU0xCLFNSRUVMLFNEQVks U1RJTUUsU0xJTixTRUxFLAogICAgIDFTSU5DTCxTSU5DRSxTR0UoOCksREFOLEROTCxETkUs RExCLERSRUVMLEREQVksRFRJTUUsRExJTixERUxFLAogICAgIDJESU5DTCxESU5DRSxER0Uo OCksU1BTTCxTUFNFCiAgICAgIENPTU1PTi9DT05TVFMvQkZXLEJDVyxOU1BMLE5TUEUsTlNQ LE5DTCxOQ0UsTkMsU1BQSVgKICAgICAgQ09NTU9OL0JPWDEvWkxJTihCQ1dEKQogICAgICBD T01NT04vQk9YMi9aRUxFKEJDV0QpCiAgICAgIENPTU1PTi9TQ09NL1NPVVJDRShCRldEKQog ICAgICBDT01NT04vRENPTS9ERVNUKEJGV0QpCiAgICAgIERJTUVOU0lPTiBKTDEoOCksSkwy KDgpLEpFMSg4KSxKRTIoOCkKICAgICAgSU5URUdFUiBJMjMoMDoyNTUpLEkxMygwOjI1NSkK ICAgICAgTE9HSUNBTCoxIExWQUwxKDQpLExWQUwyKDQpCiAgICAgIElOVEVHRVIqNCBJVkFM MSxJVkFMMgogICAgICBDSEFSQUNURVIqNCAgQ09QU1lTCiAgICAgIENIQVJBQ1RFUioxMiBD S1dQLCBDTElULCBDSU1HU00sIENMTUJTTSwgQ01FUkdFCiAgICAgIEVRVUlWQUxFTkNFIChM VkFMMSxJVkFMMSksKExWQUwyLElWQUwyKQogICAgICBJTkQoSUwsSUUpPShJTC0xKSpOQ0wr SUUKQwpDLS0tIENBUFRVUkUgU01PT1RIIEtFWVdPUkRTCkMtLS0gICBTTU9PVEgsMSA9IE5P L1lFUyBGT1IgTElNQiBTTU9PVEhJTkcKQy0tLSAgIFNNT09USCwyID0gTk8vWUVTIEZPUiBF TlRJUkUgSU1BR0UgU01PT1RISU5HCkMKICAgICAgQ0xNQlNNID0gQ0tXUCgnU01PJywxLCdO JykKICAgICAgQ0lNR1NNID0gQ0tXUCgnU01PJywyLCdOJykKQwogICAgICBJRihDTE1CU00o MToxKSAuRVEuICdOJykgVEhFTgpDCkMtLS0gTElNQiBJUyAqTk9UKiBUTyBCRSBTTU9PVEhF RApDCiAgICAgICAgREFUQSBOUkFELzgvCiAgICAgICAgREFUQSBKTDEvLTIsLTIsMCwyLDIs MiwwLC0yLwogICAgICAgIERBVEEgSkwyLy0xLC0xLDAsMSwxLDEsMCwtMS8KICAgICAgICBE QVRBIEpFMS8wLDIsMiwyLDAsLTIsLTIsLTIvCiAgICAgICAgREFUQSBKRTIvMCwxLDEsMSww LC0xLC0xLC0xLwpDLi4uCkMuLi5UTyBTTU9PVEggRURHRVMsIEVYVFJBUE9MQVRFIE9VVCBP TkUgQ09STkVSCkMuLi5VU0UgTUVBTiBWQUxVRSBGUk9NIEFMTCBSQURJQUxMWSBFWFRSQVBP TEFURUQgQ0FMQ1VMQVRJT05TCkMuLi4KICAgICAgRE8gMzAwIEk9MSxOQwogICAgICAgIFNP VVJDRShJKT0uRkFMU0UuCjMwMCAgIENPTlRJTlVFCiAgICAgICAgRE8gMzEwIElMPTEsTkNF CiAgICAgICAgIERPIDMxMCBJRT0xLE5DTAogICAgICAgICAgSVBUPUlORChJTCxJRSkKICAg ICAgICAgIElGKFpMSU4oSVBUKS5ORS4tOTkuOSkgR08gVE8gMzEwCiAgICAgICAgICBaU1VN TD0wLjAKICAgICAgICAgIFpTVU1FPTAuMAogICAgICAgICAgTlBUPTAKICAgICAgICAgIERP IDMwNSBLPTEsTlJBRAogICAgICAgICAgICBJTDE9SUwrSkwxKEspCiAgICAgICAgICAgIElM Mj1JTCtKTDIoSykKICAgICAgICAgICAgSUYoSUwxLkxULjEuT1IuSUwyLkxULjEpIEdPIFRP IDMwNQogICAgICAgICAgICBJRihJTDEuR1QuTkNFLk9SLklMMi5HVC5OQ0UpIEdPIFRPIDMw NQogICAgICAgICAgICBJRTE9SUUrSkUxKEspCiAgICAgICAgICAgIElFMj1JRStKRTIoSykK ICAgICAgICAgICAgSUYoSUUxLkxULjEuT1IuSUUyLkxULjEpIEdPIFRPIDMwNQogICAgICAg ICAgICBJRihJRTEuR1QuTkNMLk9SLklFMi5HVC5OQ0wpIEdPIFRPIDMwNQogICAgICAgICAg ICBJTkQxPUlORChJTDEsSUUxKQogICAgICAgICAgICBJTkQyPUlORChJTDIsSUUyKQogICAg ICAgICAgICBJRihaTElOKElORDEpLkVRLi05OS45Lk9SLlpMSU4oSU5EMikuRVEuLTk5Ljkp IEdPIFRPIDMwNQogICAgICAgICAgICBJRihTT1VSQ0UoSU5EMSkuT1IuU09VUkNFKElORDIp KSBHTyBUTyAzMDUKICAgICAgICAgICAgTlBUPU5QVCsxCiAgICAgICAgICAgIFpTVU1MPVpT VU1MKzIqWkxJTihJTkQyKS1aTElOKElORDEpCiAgICAgICAgICAgIFpTVU1FPVpTVU1FKzIq WkVMRShJTkQyKS1aRUxFKElORDEpCjMwNSAgICAgICBDT05USU5VRQogICAgICAgICAgSUYo TlBULkVRLjApIEdPIFRPIDMxMAogICAgICAgICAgWkxJTihJUFQpPVpTVU1ML05QVAogICAg ICAgICAgWkVMRShJUFQpPVpTVU1FL05QVAogICAgICAgICAgU09VUkNFKElQVCk9LlRSVUUu CjMxMCAgICAgQ09OVElOVUUKQwogICAgICBFTkRJRgoKCkMgTE9PUCBUSFJPVUdIIEJZIERF U1RJTkFUSU9OIEJMT0NLUwogICAgICBDQUxMIE9QTkEoU0FOKQpjY2MgICBDQUxMIEFSQU9Q VChTQU4sMSwnVU5JVCcsTElUKCdCUklUJykpCmNjYyAgIENBTEwgQVJBT1BUKFNBTiwxLCdT UEFDJywxKQpDCkMtLS0gQ09MTEVDVCBCQU5EIE5VTUJFUlMgSU4gQVJSQVkgQk5ET1JECkMt LS0gICAgRk9SIEEgQ09NTUFORCBMSU5FIEFTIEZPTExPV1M6IEJBTkQ9MSAzIDU7IEJORE9S RCBXSUxMIEFQUEVBUiBBUwpDLS0tICAgICAgICAgQk5ET1JEKDEpID0gMQpDLS0tICAgICAg ICAgQk5ET1JEKDIpID0gMwpDLS0tICAgICAgICAgQk5ET1JEKDMpID0gNQpDCmMgICAgICBO QkFORFMgPSBOS1dQKCdCQU5EJykKYyBjaGFuZ2UgdG8gaW5jbHVkZSBhbGwgNSBiYW5kcyBy amErCiAgICAgIE5CQU5EUyA9IDUgCmMgcmphLQoKCiAgICAgIElGKE5CQU5EUyAuRVEuIDAp IFRIRU4KICAgICAgICAgQ0FMTCBGSU5CTkQoU0FOLEJORE9SRCgxKSkKICAgICAgICAgTkJB TkRTID0gMQogICAgICBFTFNFCmMgcmphIDUvMjIvMjAwMyBjaGFuZ2UgcGVyIGNvbnZlcnNh dGlvbiB3aXRoIERhdmUgU2FudGVrCiAgICAgICAgIERPIDEwMCBOTj0xLE5CQU5EUwogICAg ICAgICAgICBCTkRPUkQoTk4pID0gSUtXUCgnQkFORCcsTk4sTk4pCiAxMDAgICAgIENPTlRJ TlVFCiAgICAgIEVORElGCgogICAgICBCTE9DSz0wCkMKQy0tLSBSRUFEIFNPVVJDRSBBUkVB IERJUkVDVE9SWSBBTkQgQ0FQVFVSRSBUSEUgTlVNQkVSIE9GIEJZVEVTL0VMRU1FTlQKQwog ICAgICBDQUxMIFJFQUREKFNBTixTUkNESVIpCiAgICAgIE5CWVRFTCA9IFNSQ0RJUigxMSkK ICAgICAgTkJQSVggPSBOQllURUwgKiBOQkFORFMKCiAgICAgIGNhbGwgcmVhZGQoZGFuLCBv ZGlyKQpjCmMtLS0gY2hhbmdlIGRpcmVjdG9yeSBwYXJhbWV0ZXJzIGF0IHJhbmRvbQpjCiAg ICAgIG9kaXIoMTEpID0gbmJ5dGVsCiAgICAgIG9kaXIoMTQpID0gbmJhbmRzCiAgICAgIG9k aXIoMzYpID0gMAogICAgICBvZGlyKDQ5KSA9IDAKICAgICAgb2Rpcig1MCkgPSAwCiAgICAg IG9kaXIoNTEpID0gbmJhbmRzICsgKDQgLSBtb2QobmJhbmRzLDQpKSAgICEgcHJlZml4IG11 c3QgYmUgbXVsdCBvZiA0CgogICAgICBvZGlyKDE1KSA9IG9kaXIoNDkpICsgb2Rpcig1MCkg KyBvZGlyKDUxKQogICAgICBpZihvZGlyKDM2KSAubmUuIDApIG9kaXIoMTUpID0gb2Rpcigx NSkgKyA0CmMKYy0tLSBzZXQgdGhlIGJpdHMgZm9yIHRoZSBmaWx0ZXIgbWFwCmMKICAgICAg ZG8gMTUwIGpqPTEsbmJhbmRzCiAgICAgICAgIGliYW5kID0gYm5kb3JkKGpqKQogICAgICAg ICBpYml0ID0gaWJzZXQoaWJpdCwgaWJhbmQtMSkKIDE1MCAgY29udGludWUKYwogICAgICBv ZGlyKDE5KSA9IGliaXQKYwpjLS0tIHdyaXRlIHRoYXQgc3Vja2VyIHRvIHRoZSBvdXRwdXQg YXJlYQpjCiAgICAgIGNhbGwgd3JpdGQoZGFuLCBvZGlyKQpjCmMtLS0gY29weSBjYWwgYmxv Y2sgZnJvbSBzb3VyY2UgYXJlYSB0byBkZXN0aW5hdGlvbiBhcmVhCmMKICAgICAgY2Fsc2l6 ID0gc3JjZGlyKDM0KSAtIHNyY2Rpcig2MykKICAgICAgY2FsbCBhcmFnZXQoc2FuLCBzcmNk aXIoNjMpLCBjYWxzaXosIGNhbGFycikKICAgICAgY2FsbCBhcmFwdXQoZGFuLCAgIG9kaXIo NjMpLCBjYWxzaXosIGNhbGFycikKICAgICAgQ0FMTCBPUE5BKERBTikKCmMtLS1pbml0aWFs aXplIGNhbCBmb3IgY2xvdWQgcHJvZHVjdCBDaGFubmVscyAyIGFuZCA0ICByamErCgoJaSA9 IGticHJlcCgxLCBsaXQoJ0dWQVInKSkKCWlvcHQoMSkgPSAyCglpb3B0KDIpID0gMgoJaSA9 IGtiMWluaSgnUkFXICcsICdURU1QJywgaW9wdCkKYyBjcmVhdGUgY2hhbm5lbCA1IGxvb2t1 cCB0YWJsZSBmb3IgY2FsaWJyYXRpb24KIAlpID0ga2JwcmVwKDMsIGxpdCgnR1ZBUicpKQog CWlvcHQoMSkgPSAyCiAJaW9wdCgyKSA9IDIKIAlpID0ga2IzaW5pKCdSQVcgJywgJ1RFTVAn LCBpb3B0KQpjYyAgYWRkIHNsb3QgZm9yIGNvbnZlcnRpbmcgcmF3IHRvIGFsYmVkbyAKIAlp ID0ga2JwcmVwKDIsIGxpdCgnR1ZBUicpKQogCWlvcHQoMSkgPSAyCiAJaW9wdCgyKSA9IDIK IAlpID0ga2IyaW5pKCdSQVcgJywgJ0FMQiAnLCBpb3B0KQoKCWkgPSBudjFpbmkoMiwgbGl0 KCdMTCAgJykpCmMgcmphLQoKQy0tLSBNRVJHRSBPVVRQVVQgQVJFQT8KCiAgICAgIEFMTD1M SVQoJ0FMTCAnKQogICAgICBNRVJHRT0wCiAgICAgIENNRVJHRSA9IENLV1AoJ01FUicsMSwn TicpCiAgICAgIElGKENNRVJHRSgxOjEpIC5FUS4gJ1knKSBNRVJHRT0xCkMKQy0tLSBJTUFH RSBJUyBUTyBCRSBTTU9PVEhFRDsgQlJBTkNIIEFDQ09SRElOR0xZCkMKICAgICAgSUYoQ0lN R1NNKDE6MSkgLkVRLiAnWScpIEdPIFRPIDUwMDAKQwogICAgICBETyAxMCBETE9DPTEsRE5M LERMQgpDLS0tQUNDVU1VTEFURUQgTElORVM9QkxPQ0sjLygjTElORVMvQkxPQ0spCiAgICAg IEFDQ0xJTj1CTE9DSypETEIKQy0tLVBPSU5URVIgVE8gRklSU1QgQ09STkVSIE9GIFNQTElO RVMgRk9SIFRISVMgREVTVCBCTE9DSwogICAgICBQT0lOVD1CTE9DSypOQ0wqRExCL1NQU0wK ICAgICAgT1BPSU5UPVBPSU5UCkMtLS1QT0lOVEVSIFRPIExBU1QgQ09STkVSIEZPUiBUSElT IERFU1QgQkxPQ0sKICAgICAgTVhQVD0oQkxPQ0srMSkqTkNMKkRMQi9TUFNMLTEKICAgICAg TVhQVD1NSU4wKE1YUFQsTkMtTkNMKQoKQy0tLVpFUk8gT1VUIEJGVyBCWVRFUyBPRiBERVNU IChPUiBSRUFEIElOIERFU1QgQkxPQ0sgRk9SIE1FUkdFPTEpCiAgICAgIElGKE1FUkdFLkVR LjApIFRIRU4KICAgICAgICAgQ0FMTCBaRVJPUyhERVNULEJGVypuYnBpeCkKICAgICAgRUxT RQogICAgICAgICBOTElORVMgPSBNSU4wKERMQixETkwtRExPQysxKQogICAgICAgICBDQUxM IFJFQURYKERBTiwgRExPQywgTkxJTkVTLCBETkUsIE5CWVRFTCwgTkJBTkRTLCBBTEwsIERF U1QpCiAgICAgIEVORElGCkMgRk9SIEVBQ0ggREVTVElOQVRJT04gQkxPQ0sgTE9PUCBUSFJP VUdIIEVOVElSRSBTT1VSQ0UKICAgICAgRE8gMjAgU0xPQz0xLFNOTCxTTEIKICAgICAgTUFY U0w9TUlOMChTTkwsU0xPQytTTEItMSkKICAgICAgUkVBRD0uRkFMU0UuCkMgTE9PUCBUSFJP VUdIIFNQTElORVMgQU5EIE1PVkUgQU5ZIERBVEEKQwogICAgICBQT0lOVD1PUE9JTlQKICAg ICAgU0JMSz0wCjE1ICAgIENPTlRJTlVFCiAgICAgIERPIDMwIElTUFM9MSxOU1BMCiAgICAg IERPRkYwPVNCTEsvTlNQTCpTUFNMKkRORQogICAgICBET0ZGMT1NT0QoU0JMSyxOU1BMKSpT UFNFCiAgICAgIERPRkYyPURPRkYxK0RPRkYwKzEKICAgICAgUFNQUz1QT0lOVCtJU1BTCkMg R0VUIDQgQ09STkVSUyBJTiBMSU5FIFNQQUNFIEFORCBDSEVDSyBGT1IgT1VUIE9GIEJPVU5E UwogICAgICBaTDExPVpMSU4oUFNQUykKICAgICAgWkwxMj1aTElOKFBTUFMrMSkKICAgICAg WkwyMT1aTElOKFBTUFMrTkNMKQogICAgICBaTDIyPVpMSU4oUFNQUysxK05DTCkKICAgICAg Wk1JTkw9QU1JTjEoWkwxMSxaTDEyLFpMMjEsWkwyMikKQwpDLS0tIFRFU1QgRk9SIFRIRSBQ UkVTRU5DRSBPRiBBIExJTUIgSU4gVEhFIFNQTElORSBCT1guCkMtLS0gSUYgTElNQiBJUyBQ UkVTRU5ULCBUSEVOIEJSQU5DSCBUTyBMSU1CIFNNT09USElORyBCTE9DSyBJRiBORUMuCkMK ICAgICAgSUYoWk1JTkwuRVEuLTk5LjkpIFRIRU4KICAgICAgICBJRihDTE1CU00oMToxKSAu RVEuICdZJykgVEhFTgogICAgICAgICAgR08gVE8gMzUKICAgICAgICBFTFNFCiAgICAgICAg ICBHTyBUTyAzMAogICAgICAgIEVORElGCiAgICAgIEVORElGCkMKICAgICAgS01JTkw9Wk1J TkwrLjUKICAgICAgSUYoS01JTkwuR1QuTUFYU0wpIEdPIFRPIDMwCiAgICAgIEtNQVhMPUFN QVgxKFpMMTEsWkwxMixaTDIxLFpMMjIpKy41CiAgICAgIElGKEtNQVhMLkxULlNMT0MpIEdP IFRPIDMwCkMgR0VUIDQgQ09STkVSUyBJTiBFTEVNIFNQQUNFIEFORCBDSEVDSyBGT1IgT1VU IE9GIEJPVU5EUwogICAgICBaRTExPVpFTEUoUFNQUykKICAgICAgWkUxMj1aRUxFKFBTUFMr MSkKICAgICAgWkUyMT1aRUxFKFBTUFMrTkNMKQogICAgICBaRTIyPVpFTEUoUFNQUysxK05D TCkKICAgICAgS01BWEU9QU1BWDEoWkUxMSxaRTEyLFpFMjEsWkUyMikrLjUKICAgICAgSUYo S01BWEUuTFQuMSkgR08gVE8gMzAKICAgICAgS01JTkU9QU1JTjEoWkUxMSxaRTEyLFpFMjEs WkUyMikrLjUKICAgICAgSUYoS01JTkUuR1QuU05FKSBHTyBUTyAzMAogICAgICBJRlhFREc9 MApDCkMtLS0gSUYgVEhFIE1BWCAmIE1JTiBFTEVNRU5UIEZBTEwgT0ZGIFRIRSBJTUFHRS4u LlBJVENIIElUCkMKICAgICAgSUYoIEtNQVhFIC5HVC4gU05FIC5BTkQuIEtNSU5FIC5MVC4g MSkgR08gVE8gMzAKQy0tLUZJWCBJRiBMRUZUICYgUklHSFQgRURHRSBTSE9VTEQgQkUgQ09O VElOVU9VUyAKICAgICAgSUYoS01BWEUgLSBLTUlORSAuR1QuIE5JTlQoIC43NSAqIFNORSkg KSBUSEVOCiAgICAgICAgIElGKFpFMTEgLkxULiBTTkUvMikgWkUxMSA9IFpFMTEgKyBTTkUK CSBJRihaRTEyIC5MVC4gU05FLzIpIFpFMTIgPSBaRTEyICsgU05FCgkgSUYoWkUyMSAuTFQu IFNORS8yKSBaRTIxID0gWkUyMSArIFNORQoJIElGKFpFMjIgLkxULiBTTkUvMikgWkUyMiA9 IFpFMjIgKyBTTkUKICAgICAgICAgSUZYRURHPTEKICAgICAgRU5ESUYgCiAgICAgIFpMQT0o WkwxMi1aTDExKS9TUFNFCiAgICAgIFpMQj0oWkwyMS1aTDExKS9TUFNMCiAgICAgIFpMQz0o WkwyMitaTDExLVpMMTItWkwyMSkvU1BQSVgKICAgICAgWkVBPShaRTEyLVpFMTEpL1NQU0UK ICAgICAgWkVCPShaRTIxLVpFMTEpL1NQU0wKICAgICAgWkVDPShaRTIyK1pFMTEtWkUyMS1a RTEyKS9TUFBJWApDIExPT1AgVEhST1VHSCBCT1hFUwogICAgICBETkUwPTAKICAgICAgWkxC Qj1aTDExKy41CiAgICAgIFpMQ0M9MAogICAgICBaRUJCPVpFMTErLjUKICAgICAgWkVDQz0w CiAgICAgIElGKFJFQUQpIEdPIFRPIDY1MAogICAgICBSRUFEPS5UUlVFLgogICAgICBOTElO RVMgPSBNSU4wKFNMQixTTkwtU0xPQysxKQogICAgICBDQUxMIFJFQURYKFNBTiwgU0xPQywg TkxJTkVTLCBTTkUsIE5CWVRFTCwgTkJBTkRTLCBCTkRPUkQsIFNPVVJDRSkKNjUwICAgQ09O VElOVUUKICAgICAgSUYoSVNQUy5FUS5OU1BMKSBHTyBUTyA1NQpDIENIRUNLIENPUk5FUlMg Rk9SIENPTVBMRVRFIFNQTElORQogICAgICBJRihLTUlORS5MVC4xLk9SLktNQVhFLkdULlNO RSkgR08gVE8gNTUKICAgICAgSUYoS01JTkwuTFQuU0xPQy5PUi5LTUFYTC5HVC5NQVhTTCkg R08gVE8gNTUKQyBDSEVDSyBUTyBTRUUgSUYgT04gTEFTVCBST1cgT0YgU1BMSU5FUwogICAg ICBJRihQT0lOVCsyKk5DTC0xLkdULk1YUFQpIEdPIFRPIDU1CiAgICAgIElGKCBJRlhFREcg LkVRLiAwKSBUSEVOCiAgICAgICAgIERPIDUyIElMPTEsU1BTTAogICAgICAgICBaTEFDPVpM QStaTENDCiAgICAgICAgIFpFQUM9WkVBK1pFQ0MKICAgICAgICAgWkxBQzA9MAogICAgICAg ICBaRUFDMD0wCiAgICAgICAgIERPRkY9RE9GRjIrRE5FMAogICAgICAgICBEUElYT0YgPSAo RE9GRi0xKSAqIE5CUElYCiAgICAgICAgIERPIDUwIElFPTEsU1BTRQogICAgICAgICBTTD1a TEJCK1pMQUMwCiAgICAgICAgIFNFPVpFQkIrWkVBQzAKICAgICAgICAgU09GRj0oU0wtU0xP QykqU05FK1NFCkNDQyAgICAgIERFU1QoRE9GRik9U09VUkNFKFNPRkYpCkNDQyAgICAgIERP RkY9RE9GRisxCiAgICAgICAgIFNQSVhPRiA9IChTT0ZGIC0gMSkgKiBOQlBJWAogICAgICAg ICBDQUxMIE1PVkMoTkJQSVgsIFNPVVJDRSwgU1BJWE9GLCBERVNULCBEUElYT0YpCmMKYy0t LS0tLSBpbnNlcnQgY2xvdWQgcHJvZHVjdCBjb2RlMQogCgljYWxsIGNsb3VkcChkZXN0LGRw aXhvZixzbGluKyhzbC0xKSpzaW5jbCxzZWxlKyhzZS0xKSpzaW5jZSwKICAgICAqICAgc3Jj ZGlyKQoKYy0tLS0tLQogICAgICAgICBEUElYT0YgPSBEUElYT0YgKyBOQlBJWAogICAgICAg ICBaTEFDMD1aTEFDMCtaTEFDCiAgICAgICAgIFpFQUMwPVpFQUMwK1pFQUMKNTAgICAgICAg Q09OVElOVUUKICAgICAgICAgWkxCQj1aTEJCK1pMQgogICAgICAgICBaTENDPVpMQ0MrWkxD CiAgICAgICAgIFpFQkI9WkVCQitaRUIKICAgICAgICAgWkVDQz1aRUNDK1pFQwogICAgICAg ICBETkUwPURORTArRE5FCjUyICAgICAgIENPTlRJTlVFCiAgICAgIEVMU0UgSUYgKElGWEVE RyAuRVEuIDEpIFRIRU4KCiAgICAgICAgIERPIDExNTIgSUw9MSxTUFNMCiAgICAgICAgIFpM QUM9WkxBK1pMQ0MKICAgICAgICAgWkVBQz1aRUErWkVDQwogICAgICAgICBaTEFDMD0wCiAg ICAgICAgIFpFQUMwPTAKICAgICAgICAgRE9GRj1ET0ZGMitETkUwCiAgICAgICAgIERQSVhP RiA9IChET0ZGLTEpICogTkJQSVgKICAgICAgICAgRE8gMTE1MCBJRT0xLFNQU0UKICAgICAg ICAgU0w9WkxCQitaTEFDMAogICAgICAgICBTRT1aRUJCK1pFQUMwCiAgICAgICAgIElGKFNF IC5HVC4gU05FKSBTRSA9IFNFIC0gU05FCiAgICAgICAgIFNPRkY9KFNMLVNMT0MpKlNORStT RQogICAgICAgICBTUElYT0YgPSAoU09GRiAtIDEpICpOQlBJWAogICAgICAgICBDQUxMIE1P VkMoTkJQSVgsIFNPVVJDRSwgU1BJWE9GLCBERVNULCBEUElYT0YpCmMKYy0tLS0tLSBpbnNl cnQgY2xvdWQgcHJvZHVjdCBjb2RlMgoKCWNhbGwgY2xvdWRwKGRlc3QsZHBpeG9mLHNsaW4r KHNsLTEpKnNpbmNsLHNlbGUrKHNlLTEpKnNpbmNlLAogICAgICogICBzcmNkaXIpCmMtLS0t LS0KICAgICAgICAgRFBJWE9GID0gRFBJWE9GICsgTkJQSVgKQ0NDICAgICAgREVTVChET0ZG KT1TT1VSQ0UoU09GRikKQ0NDICAgICAgRE9GRj1ET0ZGKzEKICAgICAgICAgWkxBQzA9WkxB QzArWkxBQwogICAgICAgICBaRUFDMD1aRUFDMCtaRUFDCjExNTAgICAgIENPTlRJTlVFCiAg ICAgICAgIFpMQkI9WkxCQitaTEIKICAgICAgICAgWkxDQz1aTENDK1pMQwogICAgICAgICBa RUJCPVpFQkIrWkVCCiAgICAgICAgIFpFQ0M9WkVDQytaRUMKICAgICAgICAgRE5FMD1ETkUw K0RORQoxMTUyICAgICBDT05USU5VRQogICAgICBFTkRJRgogICAgICBHTyBUTyA0NQo1NSAg ICBDT05USU5VRQogICAgICBETyA0MiBJTD0xLFNQU0wKICAgICAgWkxBQz1aTENDK1pMQQog ICAgICBaRUFDPVpFQ0MrWkVBCiAgICAgIFpMQUMwPTAKICAgICAgWkVBQzA9MAogICAgICBE TyA0MCBJRT0xLFNQU0UKICAgICAgU0w9WkxCQitaTEFDMAogICAgICBJRihTTC5MVC5TTE9D KSBHTyBUTyAzOQogICAgICBJRihTTC5HVC5NQVhTTCkgR08gVE8gMzkKICAgICAgU0U9WkVC QitaRUFDMAogICAgICBJRihTRS5MVC4xKSBHTyBUTyAzOQogICAgICBJRihTRS5HVC5TTkUg LkFORC4gSUZYRURHIC5FUS4gMCkgR08gVE8gMzkKICAgICAgSUYgKFNFIC5HVC4gU05FKSBT RSA9IFNFIC0gU05FCiAgICAgIFNPRkY9KFNMLVNMT0MpKlNORStTRQogICAgICBET0ZGRT1E T0ZGMStJRQogICAgICBJRihET0ZGRS5HVC5ETkUpIEdPIFRPIDM5CiAgICAgIERPRkZMPURP RkYwK0RORTAKICAgICAgSUYoRE9GRkwvRE5FK0FDQ0xJTi0xLkdULkROTCkgR08gVE8gMzkK ICAgICAgRE9GRj1ET0ZGTCtET0ZGRQogICAgICAgICBEUElYT0YgPSAoRE9GRiAtIDEpICog TkJQSVgKICAgICAgICAgU1BJWE9GID0gKFNPRkYgLSAxKSAqIE5CUElYCmNjYyAgICAgICAg ICAgIHdyaXRlKCosKikgJ3NwaXhvZixkcGl4b2YgJyxzcGl4b2YsZHBpeG9mCgogICAgICAg ICAgICBDQUxMIE1PVkMoTkJQSVgsIFNPVVJDRSwgU1BJWE9GLCBERVNULCBEUElYT0YpCmMt LS0gaW5zZXJ0IGNsb3VkIHByb2R1Y3QgY29kZTMKCgljYWxsIGNsb3VkcChkZXN0LGRwaXhv ZixzbGluKyhzbC0xKSpzaW5jbCxzZWxlKyhzZS0xKSpzaW5jZSwKICAgICAqICAgc3JjZGly KQpjLS0tLQpDQ0MgICBERVNUKERPRkYpPVNPVVJDRShTT0ZGKQozOSAgICBDT05USU5VRQog ICAgICBaTEFDMD1aTEFDMCtaTEFDCiAgICAgIFpFQUMwPVpFQUMwK1pFQUMKNDAgICAgQ09O VElOVUUKICAgICAgWkxCQj1aTEJCK1pMQgogICAgICBaTENDPVpMQ0MrWkxDCiAgICAgIFpF QkI9WkVCQitaRUIKICAgICAgWkVDQz1aRUNDK1pFQwogICAgICBETkUwPURORTArRE5FCjQy ICAgIENPTlRJTlVFCjQ1ICAgIENPTlRJTlVFCkMKQy0tLSBCTE9DSyBGT1IgQ1JFQVRJTkcg QSBTTU9PVEggTElNQiBPTiBBIFJFTUFQUEVEIElNQUdFCkMKICAgICAgR09UTyAzMAogMzUg ICBaTUFYVkFMID0gQU1BWDEoWkwxMSxaTDEyLFpMMjEsWkwyMikKQwpDLS0tIENIRUNLIFRP IE1BS0UgU1VSRSBBVCBMRUFTVCBPTkUgREFUQSBWQUxVRSBJUyBHT09ECkMKICAgICAgSUYo Wk1BWFZBTCAuTEUuIC05OS45KSBHT1RPIDMwCkMKQy0tLSBDQUxDVUxBVEUgREVTVElOQVRJ T04gQVJFQSBMSU5FIEFORCBFTEVNRU5UIChBUkFMSU4sIEFSQUVMRSkKQwogICAgICBBUkFM SU4gPSBETE9DICsgKChQT0lOVCAtIE9QT0lOVCkvTkNMKSAqIFNQU0wKICAgICAgQVJBRUxF ID0gKElTUFMgLSAxKSAqIFNQU0UgKyAxCiAgICAgIFpTSU5DTCA9IDEuMC9TSU5DTAogICAg ICBaU0lOQ0UgPSAxLjAvU0lOQ0UKQwpDLS0tIExPT1AgVEhST1VHSCBERVNUSU5BVElPTiBT UExJTkUgQk9YCkMKICAgICAgRE8gMzYgSUxJTj1BUkFMSU4sQVJBTElOK1NQU0wtMQogICAg ICAgIFpERVNUTCA9IERMSU4gKyAoSUxJTi0xKSAqIERJTkNMCiAgICAgICAgRE8gMzYgSUVM RT1BUkFFTEUsQVJBRUxFK1NQU0UtMQogICAgICAgICAgWkRFU1RFID0gREVMRSArIChJRUxF LTEpICogRElOQ0UKICAgICAgICAgIENBTEwgVU1BUChaREVTVEwsIFpERVNURSwgWlNSQ0ws IFpTUkNFLCBCQUQpCkMKQy0tLSBDSEVDSyBUTyBNQUtFIFNVUkUgVU1BUCBSRVRVUk5FRCBF UlJPUiBGUkVFIChCQUQ9MCkKQwogICAgICAgICAgSUYoQkFEIC5ORS4gMCkgR09UTyAzNgog ICAgICAgICAgWlNSQ0wgPSAoWlNSQ0wgLSBTTElOKSAqIFpTSU5DTCArIDEuMAogICAgICAg ICAgIElTUkNMID0gTklOVChaU1JDTCkKICAgICAgICAgIFpTUkNFID0gKFpTUkNFIC0gU0VM RSkgKiBaU0lOQ0UgKyAxLjAKICAgICAgICAgICBJU1JDRSA9IE5JTlQoWlNSQ0UpCkMKQy0t LSBDSEVDSyBUTyBTRUUgVEhBVCBUSEUgU09VUkNFIExJTkUgQU5EIEVMRU1FTlQgQVJFIElO IFRIRSBBUkVBCkMKICAgICAgICAgIElGKChJU1JDTCAuTFQuIDEpIC5PUi4gKElTUkNMIC5H VC4gU05MKSkgR09UTyAzNgogICAgICAgICAgSUYoKElTUkNFIC5MVC4gMSkgLk9SLiAoSVNS Q0UgLkdULiBTTkUpKSBHT1RPIDM2CiAgICAgICAgICBJRigoSVNSQ0wgLkxULiBTTE9DKSAu T1IuIChJU1JDTCAuR1QuIE1BWFNMKSkgR09UTyAzNgpDCkMtLS0gSUYgTkVDRVNTQVJZLCBS RUFEIElOIEEgQkxPQ0sgT0YgREFUQQpDCiAgICAgICAgICBJRiAoLk5PVC4gUkVBRCkgVEhF TgogICAgICAgICAgICBSRUFEID0gLlRSVUUuCiAgICAgICAgICAgIE5MSU5FUyA9IE1JTjAo U0xCLFNOTC1TTE9DKzEpCiAgICAgICAgICAgIENBTEwgUkVBRFgoU0FOLFNMT0MsTkxJTkVT LFNORSxOQllURUwsTkJBTkRTLEJORE9SRCxTT1VSQ0UpCiAgICAgICAgICBFTkRJRgpDCkMt LS0gQUxMIFRFU1RTIEhBVkUgQkVFTiBQQVNTRUQ7IFRSQU5TRkVSIFZBTFVFIEZST00gU09V UkNFIFRPIERFU1QuCkMKICAgICAgICAgIFNPRkYgPSAoSVNSQ0wgIC0gU0xPQykgKiBTTkUg KyBJU1JDRQogICAgICAgICAgRE9GRiA9IChJTElOICAgLSBETE9DKSAqIERORSArIElFTEUK ICAgICAgICAgIERQSVhPRiA9IChET0ZGIC0gMSkgKiBOQlBJWAogICAgICAgICAgU1BJWE9G ID0gKFNPRkYgLSAxKSAqIE5CUElYCiAgICAgICAgICBDQUxMIE1PVkMoTkJQSVgsIFNPVVJD RSwgU1BJWE9GLCBERVNULCBEUElYT0YpCmMKYy0tLS0gaW5zZXJ0IGNsb3VkIHByb2R1Y3Qg Y29kZTQKCgljYWxsIGNsb3VkcChkZXN0LGRwaXhvZixzbGluKyhzbC0xKSpzaW5jbCxzZWxl KyhzZS0xKSpzaW5jZSwKICAgICAqICAgc3JjZGlyKQpjLS0tLQpjY2MgICAgICAgICAgREVT VChET0ZGKSA9IFNPVVJDRShTT0ZGKQogMzYgICAgIENPTlRJTlVFCkMKQy0tLSBSRVNVTUUg Tk9STUFMIFJFTUFQIEJMT0NLIC0gTk8gQ1JPUFBJTkcKQwogMzAgICBTQkxLPVNCTEsrMQog ICAgICBQT0lOVD1QT0lOVCtOQ0wKICAgICAgSUYoUE9JTlQuTFQuTVhQVCkgR08gVE8gMTUK MjAgICAgQ09OVElOVUUKQyBXUklURSBPVVQgQkxPQ0sKICAgICAgQ0FMTCBXUklUWAogICAg ICYgKERBTixETE9DLE1JTjAoRExCLEROTC1ETE9DKzEpLE5CWVRFTCxOQkFORFMsRE5FLERF U1QsQk5ET1JEKQogICAgICBCTE9DSz1CTE9DSysxCjEwICAgIENPTlRJTlVFCiAgICAgIEdP IFRPIDYwMDAKNTAwMCAgQ09OVElOVUUKQy0tLS0tCkMKQwpDICAgICAgQ09ERSBGT1IgU01P T1RISU5HCkMKQwpDLS0tLS0KQy0tLQpDCkMgIEdFTkVSQVRFIDIvMyBBTkQgMS8zIFRBQkxF UwpDCkMtLS0KQwpDLS0tIENBUFRVUkUgVEVSTUlOQUwgT1BFUkFUSU5HIFNZU1RFTS4KQy0t LSBJRiBTWVNURU0gSVMgJ1VOSVgnIFRIRU4gVEhFIExWQUwgSU5ERVggRk9SIFNNT09USElO RyA9IDQsCkMtLS0gT1RIRVJXSVNFIElUIElTIEVRVUFMIFRPIDEuICBUSElTIElTIERPTkUg QkVDQVVTRSBPRiBUSEUgQllURQpDLS0tIE9SREVSSU5HIERJRkZFUkVOQ0VTIEJFVFdFRU4g VEhFIE9TMiBBTkQgVU5JWCBXT1JLU1RBVElPTlMuCkMKICAgICAgQ09QU1lTID0gQ0xJVChJ VFJNQ0goJ09QRVJfU1lTVEVNJywtMSkpCiAgICAgIElGKENPUFNZUyAuRVEuICdVTklYJykg VEhFTgogICAgICAgIElCWVQgPSA0CiAgICAgIEVMU0UKICAgICAgICBJQllUID0gMQogICAg ICBFTkRJRgpDCiAgICAgIERPIDExMDAgST0wLDI1NQogICAgICAgIEkyMyhJKT0oSSoyKzIp LzMKICAgICAgICBJMTMoSSk9KEkrMikvMwoxMTAwICBDT05USU5VRQpDCkMtLS0KICAgICAg QkxPQ0s9MAogICAgICBTTkU4PVNORSs4CiAgICAgIFpORT1TTkU4CiAgICAgIElWQUwxPTAK ICAgICAgSVZBTDI9MAogICAgICBETyA1MDEwIERMT0M9MSxETkwsRExCCkMtLS1BQ0NVTVVM QVRFRCBMSU5FUz1CTE9DSyMvKCNMSU5FUy9CTE9DSykKICAgICAgQUNDTElOPUJMT0NLKkRM QgpDLS0tUE9JTlRFUiBUTyBGSVJTVCBDT1JORVIgT0YgU1BMSU5FUyBGT1IgVEhJUyBERVNU IEJMT0NLCiAgICAgIFBPSU5UPUJMT0NLKk5DTCpETEIvU1BTTAogICAgICBPUE9JTlQ9UE9J TlQKQy0tLVBPSU5URVIgVE8gTEFTVCBDT1JORVIgRk9SIFRISVMgREVTVCBCTE9DSwogICAg ICBNWFBUPShCTE9DSysxKSpOQ0wqRExCL1NQU0wtMQogICAgICBNWFBUPU1JTjAoTVhQVCxO Qy1OQ0wpCkMtLS1aRVJPIE9VVCBCRlcgQllURVMgT0YgREVTVCAoT1IgUkVBRCBJTiBERVNU IEJMT0NLIEZPUiBNRVJHRT0xKQogICAgICBJRihNRVJHRS5FUS4wKSBUSEVOCiAgICAgICAg IENBTEwgWkVST1MoREVTVCxCRlcqbmJwaXgpCiAgICAgIEVMU0UKICAgICAgICAgTkxJTkVT ID0gTUlOMChETEIsRE5MLURMT0MrMSkKICAgICAgICAgQ0FMTCBSRUFEWChEQU4sIERMT0Ms IE5MSU5FUywgRE5FLCBOQllURUwsIE5CQU5EUywgQUxMLCBERVNUKQogICAgICBFTkRJRgpD IEZPUiBFQUNIIERFU1RJTkFUSU9OIEJMT0NLIExPT1AgVEhST1VHSCBFTlRJUkUgU09VUkNF CiAgICAgIERPIDUwMjAgU0xPQz0xLFNOTCxTTEIKICAgICAgTUFYU0w9TUlOMChTTkwsU0xP QytTTEItMSkKICAgICAgUkVBRD0uRkFMU0UuCkMgTE9PUCBUSFJPVUdIIFNQTElORVMgQU5E IE1PVkUgQU5ZIERBVEEKQwogICAgICBQT0lOVD1PUE9JTlQKICAgICAgU0JMSz0wCjUwMTUg IENPTlRJTlVFCiAgICAgIERPIDUwMzAgSVNQUz0xLE5TUEwKICAgICAgRE9GRjA9U0JMSy9O U1BMKlNQU0wqRE5FCiAgICAgIERPRkYxPU1PRChTQkxLLE5TUEwpKlNQU0UKICAgICAgRE9G RjI9RE9GRjErRE9GRjArMQogICAgICBQU1BTPVBPSU5UK0lTUFMKQyBHRVQgNCBDT1JORVJT IElOIExJTkUgU1BBQ0UgQU5EIENIRUNLIEZPUiBPVVQgT0YgQk9VTkRTCiAgICAgIFpMMTE9 WkxJTihQU1BTKQogICAgICBaTDEyPVpMSU4oUFNQUysxKQogICAgICBaTDIxPVpMSU4oUFNQ UytOQ0wpCiAgICAgIFpMMjI9WkxJTihQU1BTKzErTkNMKQogICAgICBaTUlOTD1BTUlOMSha TDExLFpMMTIsWkwyMSxaTDIyKQpDCkMtLS0gVEVTVCBGT1IgVEhFIFBSRVNFTkNFIE9GIEEg TElNQiBJTiBUSEUgU1BMSU5FIEJPWC4KQy0tLSBJRiBMSU1CIElTIFBSRVNFTlQsIFRIRU4g QlJBTkNIIFRPIExJTUIgU01PT1RISU5HIEJMT0NLIElGIE5FQy4KQwogICAgICBJRihaTUlO TC5FUS4tOTkuOSkgVEhFTgogICAgICAgIElGKENMTUJTTSgxOjEpIC5FUS4gJ1knKSBUSEVO CiAgICAgICAgICBHTyBUTyA1MDM1CiAgICAgICAgRUxTRQogICAgICAgICAgR08gVE8gNTAz MAogICAgICAgIEVORElGCiAgICAgIEVORElGCkMKICAgICAgS01JTkw9Wk1JTkwrLjUKICAg ICAgSUYoS01JTkwuR1QuTUFYU0wpIEdPIFRPIDUwMzAKICAgICAgS01BWEw9QU1BWDEoWkwx MSxaTDEyLFpMMjEsWkwyMikrLjUKICAgICAgSUYoS01BWEwuTFQuU0xPQykgR08gVE8gNTAz MApDIEdFVCA0IENPUk5FUlMgSU4gRUxFTSBTUEFDRSBBTkQgQ0hFQ0sgRk9SIE9VVCBPRiBC T1VORFMKICAgICAgWkUxMT1aRUxFKFBTUFMpCiAgICAgIFpFMTI9WkVMRShQU1BTKzEpCiAg ICAgIFpFMjE9WkVMRShQU1BTK05DTCkKICAgICAgWkUyMj1aRUxFKFBTUFMrMStOQ0wpCiAg ICAgIEtNQVhFPUFNQVgxKFpFMTEsWkUxMixaRTIxLFpFMjIpKy41CiAgICAgIElGKEtNQVhF LkxULjEpIEdPIFRPIDUwMzAKICAgICAgS01JTkU9QU1JTjEoWkUxMSxaRTEyLFpFMjEsWkUy MikrLjUKICAgICAgSUYoS01JTkUuR1QuU05FKSBHTyBUTyA1MDMwCiAgICAgIElGWEVERz0w IApDLS0tRklYIElGIExFRlQgJiBSSUdIVCBFREdFIFNIT1VMRCBCRSBDT05USU5VT1VTIAog ICAgICBJRihLTUFYRSAtIEtNSU5FIC5HVC4gTklOVCggLjc1ICogU05FKSApIFRIRU4KICAg ICAgICAgSUYoWkUxMSAuTFQuIFNORS8yKSBaRTExID0gWkUxMSArIFNORQoJIElGKFpFMTIg LkxULiBTTkUvMikgWkUxMiA9IFpFMTIgKyBTTkUKCSBJRihaRTIxIC5MVC4gU05FLzIpIFpF MjEgPSBaRTIxICsgU05FCgkgSUYoWkUyMiAuTFQuIFNORS8yKSBaRTIyID0gWkUyMiArIFNO RQogICAgICAgICBJRlhFREc9MQogICAgICBFTkRJRiAKICAgICAgWkxBPShaTDEyLVpMMTEp L1NQU0UKICAgICAgWkxCPShaTDIxLVpMMTEpL1NQU0wKICAgICAgWkxDPShaTDIyK1pMMTEt WkwxMi1aTDIxKS9TUFBJWAogICAgICBaRUE9KFpFMTItWkUxMSkvU1BTRQogICAgICBaRUI9 KFpFMjEtWkUxMSkvU1BTTAogICAgICBaRUM9KFpFMjIrWkUxMS1aRTIxLVpFMTIpL1NQUElY CkMgTE9PUCBUSFJPVUdIIEJPWEVTCiAgICAgIERORTA9MAogICAgICBaTEJCPVpMMTEKICAg ICAgWkxDQz0wCiAgICAgIFpFQkI9WkUxMQogICAgICBaRUNDPTAKICAgICAgSUYoUkVBRCkg R08gVE8gNTY1MAogICAgICBSRUFEPS5UUlVFLgpDQ0MgICAgICBDQUxMIFJFQURZKFNBTixT TE9DLE1JTjAoU0xCLFNOTC1TTE9DKzEpLFNORSxCTkRPUkQsU09VUkNFKQo1NjUwICBDT05U SU5VRQogICAgICBJRihJU1BTLkVRLk5TUEwpIEdPIFRPIDUwNTUKQyBDSEVDSyBDT1JORVJT IEZPUiBDT01QTEVURSBTUExJTkUKICAgICAgSUYoS01JTkUuTFQuMS5PUi5LTUFYRS5HVC5T TkUpIEdPIFRPIDUwNTUKICAgICAgSUYoS01JTkwuTFQuU0xPQy5PUi5LTUFYTC5HVC5NQVhT TCkgR08gVE8gNTA1NQpDIENIRUNLIFRPIFNFRSBJRiBPTiBMQVNUIFJPVyBPRiBTUExJTkVT CiAgICAgIElGKFBPSU5UKzIqTkNMLTEuR1QuTVhQVCkgR08gVE8gNTA1NQogICAgICBJRigg SUZYRURHIC5FUS4gMCkgVEhFTgogICAgICAgICBETyA1MDUyIElMPTEsU1BTTAogICAgICAg ICBaTEFDPVpMQStaTENDCiAgICAgICAgIFpFQUM9WkVBK1pFQ0MKICAgICAgICAgWkxBQzA9 MAogICAgICAgICBaRUFDMD0wCiAgICAgICAgIERPRkY9RE9GRjIrRE5FMAogICAgICAgICBE TyA1MDUwIElFPTEsU1BTRQogICAgICAgICBaTD1aTEJCK1pMQUMwCiAgICAgICAgIFpFPVpF QkIrWkVBQzAKICAgICAgICAgU0w9WkwrLjUKICAgICAgICAgU0U9WkUrLjUKICAgICAgICAg U09GRj0oU0wtU0xPQysxKSpTTkU4K1NFKzQKICAgICAgICAgSUxJTkQ9TklOVCgoWkwtQU5J TlQoWkwpKSoyLjk4KQogICAgICAgICBJRUlORD1OSU5UKChaRS1BTklOVChaRSkpKjIuOTgp CiAgICAgICAgIElGKElMSU5ELkVRLjAuQU5ELklFSU5ELkVRLjApIEdPIFRPIDEwNTAKICAg ICAgICAgICAgSUxJTkQ9SUxJTkQqU05FOAogICAgICAgICAgICBTT0ZGMj1TT0ZGK0lFSU5E K0lMSU5ECiAgICAgICAgICAgIExWQUwxKElCWVQpPVNPVVJDRShTT0ZGKQogICAgICAgICAg ICBMVkFMMihJQllUKT1TT1VSQ0UoU09GRjIpCiAgICAgICAgICAgIEpWQUw9STIzKElWQUwx KStJMTMoSVZBTDIpCiAgICAgICAgICAgIElWQUwxPUpWQUwKICAgICAgICAgICAgREVTVChE T0ZGKT1MVkFMMShJQllUKQogICAgICAgICAgICBHTyBUTyAxMDUxCjEwNTAgICAgIERFU1Qo RE9GRik9U09VUkNFKFNPRkYpCjEwNTEgICAgIERPRkY9RE9GRisxCiAgICAgICAgIFpMQUMw PVpMQUMwK1pMQUMKICAgICAgICAgWkVBQzA9WkVBQzArWkVBQwo1MDUwICAgICBDT05USU5V RQogICAgICAgICBaTEJCPVpMQkIrWkxCCiAgICAgICAgIFpMQ0M9WkxDQytaTEMKICAgICAg ICAgWkVCQj1aRUJCK1pFQgogICAgICAgICBaRUNDPVpFQ0MrWkVDCiAgICAgICAgIERORTA9 RE5FMCtETkUKNTA1MiAgICAgQ09OVElOVUUKICAgICAgRUxTRSBJRiggSUZYRURHIC5FUS4g MSkgVEhFTgogICAgICAgICBETyA1MTUyIElMPTEsU1BTTAogICAgICAgICBaTEFDPVpMQSta TENDCiAgICAgICAgIFpFQUM9WkVBK1pFQ0MKICAgICAgICAgWkxBQzA9MAogICAgICAgICBa RUFDMD0wCiAgICAgICAgIERPRkY9RE9GRjIrRE5FMAogICAgICAgICBETyA1MTUwIElFPTEs U1BTRQogICAgICAgICBaTD1aTEJCK1pMQUMwCiAgICAgICAgIFpFPVpFQkIrWkVBQzAKICAg ICAgICAgU0w9WkwrLjUKICAgICAgICAgU0U9WkUrLjUKICAgICAgICAgU09GRj0oU0wtU0xP QysxKSpTTkU4K1NFKzQKICAgICAgICAgSUxJTkQ9TklOVCgoWkwtQU5JTlQoWkwpKSoyLjk4 KQogICAgICAgICBJRUlORD1OSU5UKChaRS1BTklOVChaRSkpKjIuOTgpCiAgICAgICAgIElG KElMSU5ELkVRLjAuQU5ELklFSU5ELkVRLjApIEdPIFRPIDYwNTAKICAgICAgICAgICAgSUxJ TkQ9SUxJTkQqU05FOAogICAgICAgICAgICBTT0ZGMj1TT0ZGK0lFSU5EK0lMSU5ECiAgICAg ICAgICAgIExWQUwxKElCWVQpPVNPVVJDRShTT0ZGKQogICAgICAgICAgICBMVkFMMihJQllU KT1TT1VSQ0UoU09GRjIpCiAgICAgICAgICAgIEpWQUw9STIzKElWQUwxKStJMTMoSVZBTDIp CiAgICAgICAgICAgIElWQUwxPUpWQUwKICAgICAgICAgICAgREVTVChET0ZGKT1MVkFMMShJ QllUKQogICAgICAgICAgICBHTyBUTyA2MDUxCjYwNTAgICAgIERFU1QoRE9GRik9U09VUkNF KFNPRkYpCjYwNTEgICAgIERPRkY9RE9GRisxCiAgICAgICAgIFpMQUMwPVpMQUMwK1pMQUMK ICAgICAgICAgWkVBQzA9WkVBQzArWkVBQwo1MTUwICAgICBDT05USU5VRQogICAgICAgICBa TEJCPVpMQkIrWkxCCiAgICAgICAgIFpMQ0M9WkxDQytaTEMKICAgICAgICAgWkVCQj1aRUJC K1pFQgogICAgICAgICBaRUNDPVpFQ0MrWkVDCiAgICAgICAgIERORTA9RE5FMCtETkUKNTE1 MiAgICAgQ09OVElOVUUKICAgICAgRU5ESUYKICAgICAgR08gVE8gNTA0NQo1MDU1ICBDT05U SU5VRQogICAgICBETyA1MDQyIElMPTEsU1BTTAogICAgICBaTEFDPVpMQ0MrWkxBCiAgICAg IFpFQUM9WkVDQytaRUEKICAgICAgWkxBQzA9MAogICAgICBaRUFDMD0wCiAgICAgIERPIDUw NDAgSUU9MSxTUFNFCiAgICAgIFpMPVpMQkIrWkxBQzAKICAgICAgU0w9WkwrLjUKICAgICAg SUYoU0wuTFQuU0xPQykgR08gVE8gNTAzOQogICAgICBJRihTTC5HVC5NQVhTTCkgR08gVE8g NTAzOQogICAgICBaRT1aRUJCK1pFQUMwCiAgICAgIFNFPVpFKy41CiAgICAgIElGKFNFLkxU LjEpIEdPIFRPIDUwMzkKICAgICAgSUYoU0UuR1QuU05FIC5BTkQuIElGWEVERyAuRVEuIDAp IEdPIFRPIDUwMzkKICAgICAgSUYoU0UgLkdULiBTTkUpIFNFPSBTRSAtIFNORQogICAgICBT T0ZGPShTTC1TTE9DKzEpKlNORTgrU0UrNAogICAgICBET0ZGRT1ET0ZGMStJRQogICAgICBJ RihET0ZGRS5HVC5ETkUpIEdPIFRPIDUwMzkKICAgICAgRE9GRkw9RE9GRjArRE5FMAogICAg ICBJRihET0ZGTC9ETkUrQUNDTElOLTEuR1QuRE5MKSBHTyBUTyA1MDM5CiAgICAgIERPRkY9 RE9GRkwrRE9GRkUKICAgICAgSUxJTkQ9TklOVCgoWkwtQU5JTlQoWkwpKSoyLjk4KQogICAg ICBJRUlORD1OSU5UKChaRS1BTklOVChaRSkpKjIuOTgpCiAgICAgIElGKElMSU5ELkVRLjAu QU5ELklFSU5ELkVRLjApIEdPIFRPIDIwNTAKICAgICAgICAgSUxJTkQ9SUxJTkQqU05FOAog ICAgICAgICBTT0ZGMj1TT0ZGK0lFSU5EK0lMSU5ECiAgICAgICAgIExWQUwxKElCWVQpPVNP VVJDRShTT0ZGKQogICAgICAgICBMVkFMMihJQllUKT1TT1VSQ0UoU09GRjIpCiAgICAgICAg IEpWQUw9STIzKElWQUwxKStJMTMoSVZBTDIpCiAgICAgICAgIElWQUwxPUpWQUwKICAgICAg ICAgREVTVChET0ZGKT1MVkFMMShJQllUKQogICAgICAgICBHTyBUTyA1MDM5CjIwNTAgIERF U1QoRE9GRik9U09VUkNFKFNPRkYpCjUwMzkgIENPTlRJTlVFCiAgICAgIFpMQUMwPVpMQUMw K1pMQUMKICAgICAgWkVBQzA9WkVBQzArWkVBQwo1MDQwICBDT05USU5VRQogICAgICBaTEJC PVpMQkIrWkxCCiAgICAgIFpMQ0M9WkxDQytaTEMKICAgICAgWkVCQj1aRUJCK1pFQgogICAg ICBaRUNDPVpFQ0MrWkVDCiAgICAgIERORTA9RE5FMCtETkUKNTA0MiAgQ09OVElOVUUKNTA0 NSAgQ09OVElOVUUKQwpDLS0tIEJMT0NLIEZPUiBDUkVBVElORyBBIFNNT09USCBMSU1CIE9O IEEgUkVNQVBQRUQgSU1BR0UKQwogICAgICBHT1RPIDUwMzAKIDUwMzUgWk1BWFZBTCA9IEFN QVgxKFpMMTEsWkwxMixaTDIxLFpMMjIpCkMKQy0tLSBDSEVDSyBUTyBNQUtFIFNVUkUgQVQg TEVBU1QgT05FIERBVEEgVkFMVUUgSVMgR09PRApDCiAgICAgIElGKFpNQVhWQUwgLkxFLiAt OTkuOSkgR09UTyA1MDMwCkMKQy0tLSBDQUxDVUxBVEUgREVTVElOQVRJT04gQVJFQSBMSU5F IEFORCBFTEVNRU5UIChBUkFMSU4sIEFSQUVMRSkKQwogICAgICBBUkFMSU4gPSBETE9DICsg KChQT0lOVCAtIE9QT0lOVCkvTkNMKSAqIFNQU0wKICAgICAgQVJBRUxFID0gKElTUFMgLSAx KSAqIFNQU0UgKyAxCiAgICAgIFpTSU5DTCA9IDEuMC9TSU5DTAogICAgICBaU0lOQ0UgPSAx LjAvU0lOQ0UKQwpDLS0tIExPT1AgVEhST1VHSCBERVNUSU5BVElPTiBTUExJTkUgQk9YCkMK ICAgICAgRE8gNTAzNiBJTElOPUFSQUxJTixBUkFMSU4rU1BTTC0xCiAgICAgICAgWkRFU1RM ID0gRExJTiArIChJTElOLTEpICogRElOQ0wKICAgICAgICBETyA1MDM2IElFTEU9QVJBRUxF LEFSQUVMRStTUFNFLTEKICAgICAgICAgIFpERVNURSA9IERFTEUgKyAoSUVMRS0xKSAqIERJ TkNFCiAgICAgICAgICBDQUxMIFVNQVAoWkRFU1RMLCBaREVTVEUsIFpTUkNMLCBaU1JDRSwg QkFEKQpDCkMtLS0gQ0hFQ0sgVE8gTUFLRSBTVVJFIFVNQVAgUkVUVVJORUQgRVJST1IgRlJF RSAoQkFEPTApCkMKICAgICAgICAgIElGKEJBRCAuTkUuIDApIEdPVE8gNTAzNgogICAgICAg ICAgWlNSQ0wgPSAoWlNSQ0wgLSBTTElOKSAqIFpTSU5DTCArIDEuMAogICAgICAgICAgIElT UkNMID0gTklOVChaU1JDTCkKICAgICAgICAgIFpTUkNFID0gKFpTUkNFIC0gU0VMRSkgKiBa U0lOQ0UgKyAxLjAKICAgICAgICAgICBJU1JDRSA9IE5JTlQoWlNSQ0UpCkMKQy0tLSBDSEVD SyBUTyBTRUUgVEhBVCBUSEUgU09VUkNFIExJTkUgQU5EIEVMRU1FTlQgQVJFIElOIFRIRSBB UkVBCkMKICAgICAgICAgIElGKChJU1JDTCAuTFQuIDEpIC5PUi4gKElTUkNMIC5HVC4gU05M KSkgR09UTyA1MDM2CiAgICAgICAgICBJRigoSVNSQ0UgLkxULiAxKSAuT1IuIChJU1JDRSAu R1QuIFNORSkpIEdPVE8gNTAzNgogICAgICAgICAgSUYoKElTUkNMIC5MVC4gU0xPQykgLk9S LiAoSVNSQ0wgLkdULiBNQVhTTCkpIEdPVE8gNTAzNgpDCkMtLS0gSUYgTkVDRVNTQVJZLCBS RUFEIElOIEEgQkxPQ0sgT0YgREFUQQpDCiAgICAgICAgICBJRiAoLk5PVC4gUkVBRCkgVEhF TgogICAgICAgICAgICBSRUFEID0gLlRSVUUuCkNDQyAgICAgICAgICAgIENBTEwgUkVBRFko U0FOLFNMT0MsTUlOMChTTEIsU05MLVNMT0MrMSksU05FLEJORE9SRCxTT1VSQ0UpCiAgICAg ICAgICBFTkRJRgpDCkMtLS0gQUxMIFRFU1RTIEhBVkUgQkVFTiBQQVNTRUQ7IFRSQU5TRkVS IFZBTFVFIEZST00gU09VUkNFIFRPIERFU1QuCkMKICAgICAgICAgU09GRj0oSVNSQ0wgLSBT TE9DICsgMSkqU05FOCArIElTUkNFICsgNAogICAgICAgICBET0ZGID0gKElMSU4gICAtIERM T0MpICogRE5FICsgSUVMRQogICAgICAgICBJTElORD1OSU5UKChaU1JDTCAtIEFOSU5UKFpT UkNMKSkgKiAyLjk4KQogICAgICAgICBJRUlORD1OSU5UKChaU1JDRSAtIEFOSU5UKFpTUkNF KSkgKiAyLjk4KQogICAgICAgICBJRihJTElORC5FUS4wLkFORC5JRUlORC5FUS4wKSBUSEVO CiAgICAgICAgICAgIElMSU5EPUlMSU5EKlNORTgKICAgICAgICAgICAgU09GRjI9U09GRitJ RUlORCtJTElORAogICAgICAgICAgICBMVkFMMShJQllUKT1TT1VSQ0UoU09GRikKICAgICAg ICAgICAgTFZBTDIoSUJZVCk9U09VUkNFKFNPRkYyKQogICAgICAgICAgICBKVkFMPUkyMyhJ VkFMMSkrSTEzKElWQUwyKQogICAgICAgICAgICBJVkFMMT1KVkFMCiAgICAgICAgICAgIERQ SVhPRiA9IChET0ZGIC0gMSkgKiBOQlBJWAogICAgICAgICAgICBTUElYT0YgPSAoSUJZVCAt IDEpICogTkJQSVgKICAgICAgICAgICAgQ0FMTCBNT1ZDKE5CUElYLCBMVkFMMSwgU1BJWE9G LCBERVNULCBEUElYT0YpCmNjYyAgICAgICAgICAgIERFU1QoRE9GRik9TFZBTDEoSUJZVCkK ICAgICAgICAgIEVMU0UKICAgICAgICAgICAgRFBJWE9GID0gKERPRkYgLSAxKSAqIE5CUElY CiAgICAgICAgICAgIFNQSVhPRiA9IChTT0ZGIC0gMSkgKiBOQlBJWAogICAgICAgICAgICBD QUxMIE1PVkMoTkJQSVgsIFNPVVJDRSwgU1BJWE9GLCBERVNULCBEUElYT0YpCmNjYyAgICAg ICAgICAgIERFU1QoRE9GRik9U09VUkNFKFNPRkYpCiAgICAgICAgICBFTkRJRgpDCmNjYyAg ICAgICAgICBTT0ZGID0gKElTUkNMICAtIFNMT0MpICogU05FICsgSVNSQ0UKY2NjICAgICAg ICAgIERPRkYgPSAoSUxJTiAgIC0gRExPQykgKiBETkUgKyBJRUxFCmNjYyAgICAgICAgICBE RVNUKERPRkYpID0gU09VUkNFKFNPRkYpCiA1MDM2ICAgQ09OVElOVUUKQwpDLS0tIFJFU1VN RSBOT1JNQUwgUkVNQVAgQkxPQ0sgLSBOTyBDUk9QUElORwpDCjUwMzAgIFNCTEs9U0JMSysx CiAgICAgIFBPSU5UPVBPSU5UK05DTAogICAgICBJRihQT0lOVC5MVC5NWFBUKSBHTyBUTyA1 MDE1CjUwMjAgIENPTlRJTlVFCkMgV1JJVEUgT1VUIEJMT0NLCiAgICAgIENBTEwgV1JJVFgK ICAgICAmIChEQU4sRExPQyxNSU4wKERMQixETkwtRExPQysxKSxOQllURUwsTkJBTkRTLERO RSxERVNULGJuZG9yZCkKICAgICAgQkxPQ0s9QkxPQ0srMQo1MDEwICBDT05USU5VRQo2MDAw ICBDT05USU5VRQogICAgICBDQUxMIENMT1NBTyhEQU4pCiAgICAgIENBTEwgQ0xPU0FPKFNB TikKICAgICAgUkVUVVJOCiAgICAgIEVORAoKYy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmMKICAgICAgU1VC Uk9VVElORSBNQVBQRVIoU1BTTEQsU1BTRUQpCkMgKioqIE1jSURBUyBSZXZpc2lvbiBIaXN0 b3J5ICoqKgpDIDEgTUFQUEVSLkZPUiAxOS1NYXItOTAsMTY6MzA6MTYsYFNTRUMnIFBDLU1j SURBUyB2ZXIgNS4wMApDIDIgTUFQUEVSLkZPUiAyNy1BdWctOTAsMTE6NDM6MDYsYFNTRUMn IE1haW50ZW5hbmNlIHJlc2VxdWVuY2UKQyAzIE1BUFBFUi5GT1IgMjUtU2VwLTkwLDc6MzQ6 NDYsYFNNRycgRmlyc3QgUmVsZWFzZSBpbnRvIENPTW1vbgpDICoqKiBNY0lEQVMgUmV2aXNp b24gSGlzdG9yeSAqKioKQyAkIFNVQlJPVVRJTkUgTUFQUEVSKFNQU0xELCBTUFNFRCkgIChE QVMpCkMgJCBNQUlOIFJPVVRJTkUgRk9SIFJFTUFQUElORwpDICQgU1BTTEQgPSAoSSkgSU5Q VVQgU1BMSU5FIFNJWkUgSU4gTElORSBESVJFQ1RJT04KQyAkIFNQU0VEID0gKEkpIElOUFVU IFNQTElORSBTSVpFIElOIEVMRU1FTlQgRElSRUNUSU9OCkMgJCQgTUFQUEVSID0gQ09OVkVS VCwgTUFQLCBQUk9KRUNUSU9OCiAgICAgIElNUExJQ0lUIElOVEVHRVIgKEEtWikKICAgICAg Q09NTU9OL1BBUkFNUy9TQU4sU05MLFNORSxTTEIsU1JFRUwsU0RBWSxTVElNRSxTTElOLFNF TEUsCiAgICAgMVNJTkNMLFNJTkNFLFNHRSg4KSxEQU4sRE5MLERORSxETEIsRFJFRUwsRERB WSxEVElNRSxETElOLERFTEUsCiAgICAgMkRJTkNMLERJTkNFLERHRSg4KSxTUFNMLFNQU0UK ICAgICAgQ09NTU9OL0NPTlNUUy9CRlcsQkNXLE5TUEwsTlNQRSxOU1AsTkNMLE5DRSxOQyxT UFBJWAogICAgICBDQUxMIElOSVQoRkxBRyxTUFNMRCxTUFNFRCkKICAgICAgSUYoRkxBRy5F US4wKSBSRVRVUk4KICAgICAgQ0FMTCBVSU5JVChCQUQpCiAgICAgIElGKEJBRC5ORS4wKSBS RVRVUk4KICAgICAgQ0FMTCBDT1JORVIKICAgICAgQ0FMTCBTREVTVCgnUkVNQVAgLSBUUkFO Rk9STUFUSU9OUyBDT01QTEVURS4uQkVHSU4gREFUQSBNT1ZFJywwKQogICAgICBDQUxMIERP TUFQCiAgICAgIENBTEwgU0RFU1QoJy0tUkVNQVAgRE9ORScsMCkKICAgICAgUkVUVVJOCiAg ICAgIEVORApjCmMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjCiAgICAgIFNVQlJPVVRJTkUgQ09STkVSCkMg KioqIE1jSURBUyBSZXZpc2lvbiBIaXN0b3J5ICoqKgpDIDEgQ09STkVSLkZPUiAxOS1NYXIt OTAsMTY6Mzk6MzgsYFNTRUMnIFBDLU1jSURBUyB2ZXIgNS4wMApDIDIgQ09STkVSLkZPUiAy NS1TZXAtOTAsNzozNDoyNixgU01HJyBGaXJzdCBSZWxlYXNlIGludG8gQ09NbW9uCkMgMyBD T1JORVIuRk9SIDEwLUZlYi05MywxNTozNDoxMCxgUkFZTCcgQWRkZWQgcmVtYXBhcm0uaW5j IGluY2x1ZGUgZmlsZQpDICAgICAgdGhhdCBjb250YWlucyBidWZmZXIgc2l6ZXMgKDM1NTgp CkMgNCBDT1JORVIuRk9SIDEtTWFyLTkzLDc6Mjk6NTAsYFVTRVInIFJlbGVhc2VkCkMgKioq IE1jSURBUyBSZXZpc2lvbiBIaXN0b3J5ICoqKgpDICQgU1VCUk9VVElORSBDT1JORVIgIChE QVMpCkMgJCBMT09QIFRIUk9VR0ggU1BMSU5FIERPTUFJTiBBTkQgUkVDT1JEIFNPVVJDRSBM SU5FIEFORCBFTEUKQyAkJCBDT1JORVIgPSBDT05WRVJULCBNQVAsIFBST0pFQ1RJT04KICAg ICAgSU1QTElDSVQgSU5URUdFUiAoQS1ZKQogICAgICBJTkNMVURFICdyZW1hcGFybS5pbmMn CiAgICAgIENPTU1PTi9QQVJBTVMvU0FOLFNOTCxTTkUsU0xCLFNSRUVMLFNEQVksU1RJTUUs U0xJTixTRUxFLAogICAgIDFTSU5DTCxTSU5DRSxTR0UoOCksREFOLEROTCxETkUsRExCLERS RUVMLEREQVksRFRJTUUsRExJTixERUxFLAogICAgIDJESU5DTCxESU5DRSxER0UoOCksU1BT TCxTUFNFCiAgICAgIENPTU1PTi9DT05TVFMvQkZXLEJDVyxOU1BMLE5TUEUsTlNQLE5DTCxO Q0UsTkMsU1BQSVgKICAgICAgQ09NTU9OL0JPWDEvWkxJTihCQ1dEKQogICAgICBDT01NT04v Qk9YMi9aRUxFKEJDV0QpCkMgREVGQVVMVCBPVVQgQ09STkVSIEFSUkFZUwogICAgICBETyA1 IEk9MSxOQwogICAgICBaTElOKEkpPS05OS45CiAgICAgIFpFTEUoSSk9LTk5LjkKNSAgICAg Q09OVElOVUUKQyBMT09QIFRIUk9VR0ggU1BMSU5FIERPTUFJTiBBTkQgUkVDT1JEIFNPVVJD RSBMSU5FIEFORCBFTEUKICAgICAgSU5EPTAKICAgICAgTlVNTD1ETkwrU1BTTC0xCiAgICAg IE5VTUU9RE5FK1NQU0UtMQogICAgICBaU0lOQ0w9MS4vU0lOQ0wKICAgICAgWlNJTkNFPTEu L1NJTkNFCiAgICAgIERPIDEwIEw9MSxOVU1MLFNQU0wKICAgICAgWkxTPURMSU4rKEwtMSkq RElOQ0wKICAgICAgRE8gMTAgRT0xLE5VTUUsU1BTRQogICAgICBaRVM9REVMRSsoRS0xKSpE SU5DRQogICAgICBDQUxMIFVNQVAoWkxTLFpFUyxaTCxaRSxCQUQpCiAgICAgIElORD1JTkQr MQogICAgICBJRihCQUQuTkUuMCkgR08gVE8gMTAKICAgICAgWkw9KFpMLVNMSU4pKlpTSU5D TCsxLjAKICAgICAgWkU9KFpFLVNFTEUpKlpTSU5DRSsxLjAKICAgICAgWkxJTihJTkQpPVpM CiAgICAgIFpFTEUoSU5EKT1aRQoxMCAgICBDT05USU5VRQogICAgICBSRVRVUk4KICAgICAg RU5ECmMKYy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmMKICAgICAgU1VCUk9VVElORSBSRUFEWChJQSxMSU5F LE5MSU5TLE5FTEUsTkJZVEVMLE5CQU5EUyxCTkRPUkQsQlVGKQpDICoqKiBNY0lEQVMgUmV2 aXNpb24gSGlzdG9yeSAqKioKQyAxIFJFQURYLkZPUiAxOS1NYXItOTAsMjE6Mjg6MDgsYFNT RUMnIFBDLU1jSURBUyB2ZXIgNS4wMApDIDIgUkVBRFguRk9SIDI1LVNlcC05MCw3OjM0OjQ4 LGBTTUcnIEZpcnN0IFJlbGVhc2UgaW50byBDT01tb24KQyAqKiogTWNJREFTIFJldmlzaW9u IEhpc3RvcnkgKioqCkMgJCBTVUJST1VUSU5FIFJFQURYKElBLCBMSU5FLCBOTElOUywgTkVM RSwgQk5ET1JELCBCVUYpICAoREFTKQpDICQgUkVBRCBJTiBOVU1CRVIgT0YgSU1BR0UgTElO RVMKQyAkIElBID0gKEkpIElOUFVUIEFSRUEgTlVNQkVSCkMgJCBMSU5FID0gKEkpIElOUFVU ICBTVEFSVElORyBMSU5FIE5VTUJFUgpDICQgTkxJTlMgPSAoSSkgSU5QVVQgIFRPVEFMIE5V TUJFUiBPRiBMSU5FUwpDICQgTkVMRSA9IChJKSBJTlBVVCAgTlVNQkVSIE9GIEVMRU1FTlRT L0xJTkUKQyAkIE5CWVRFTCA9IChJKSBJTlBVVCBOVU1CRVIgT0YgQllURVMvRUxFTUVOVApD ICQgTkJBTkRTID0gKEkpIElOUFVUIE5VTUJFUiBPRiBCQU5EUwpDICQgQk5ET1JEID0gKEkp IElOUFVUIEFSUkFZIE9GIEJBTkRTCkMgJCBCVUYgPSAoSSkgT1VUUFVUICBCVUZGRVIgQ09O VEFJTklORyBJTUFHRSBEQVRBCkMgJCBSRUFEWCA9IEFSRUEsIEkvTwpDCkMtLS0gVEhFIFBB UkFNRVRFUiBNQVhTSVogSVMgVEhFIElTIFRIRSBOVU1CRVIgT0YgV09SRFMgQ09OVEFJTkVE IElOIFRIRQpDICAgICAgQVJSQVkgSUFSUi4gIElUIElTIEVRVUFMIFRPIFRIRQpDICAgICAg ICAoTlVNQkVSIE9GIEJZVEVTL0VMRU1FTlQpICogKE5VTUJFUiBPRiBFTEVNRU5UUykgLyAo NCkKQwogICAgICBQQVJBTUVURVIgKE1BWFNJWiA9IDEwMDAwKQogICAgICBJTVBMSUNJVCBJ TlRFR0VSKEEtWikKICAgICAgbG9naWNhbCoxIElBUlIoTUFYU0laKSwgQlVGKCopCiAgICAg IElOVEVHRVIqNCBCTkRPUkQoKikKICAgICAgRU5EPUxJTkUrTkxJTlMtMQpDCkMtLS0gVFJZ IFRPIE1PRElGWSBUSElTIFNVQlJPVVRJTkUgVE8gSEFORExFIE1VTEktQkFORCBEQVRBCkMK QyAgICBEQVRBIElTIFJFQUQgSU5UTyBJQVJSIFNFUVVFTlRJQUxMWSBPTkUgTElORSBBVCBB IFRJTUU6CkMKQyAgICAgICAgQkFORCAxICAgICAgICAgICAgQkFORCAzICAgICAgICAgICAg QkFORCA1CkMgIHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0t LS0tLS0tLS0tLXwKQwpDLS0tIE1PVkUgREFUQSBGUk9NIElBUlIgSU5UTyBBUlJBWSBCVUYK QyAgICAgIFRIRSBEQVRBIE1VU1QgQkUgSU5URVJMRUFWRUQgSU4gQlVGOgpDCkMgICAgICAg ICAgICAgMSAzIDUgMSAzIDUgMSAzIDUgMSAzIDUKQyAgICAgICAgICAgIHwtfC18LXwtfC18 LXwtfC18LXwtfC18LXwKQwpDKioqIE5PVEUgKioqCkMgICBJTiBPUkRFUiBUTyBDT05TRVJW RSBTUEFDRSwgSUFSUiBPTkxZIENPTlRBSU5TIDEgTElORSBPRiAxIEJBTkQKQyAgIE9OIElO UFVULiAgSUFSUiBJUyBUSEVOIE1PVkVEIChWSUEgTU9WQkxLKSBJTlRPIEJVRiBXSVRIIFRI RSBEQVRBCkMgICBCRUlORyBQTEFDRUQgSU4gU1VDSCBBIFdBWSBUTyBJTlRFUkxFQVZFIElU LiAgSVQnUyBBIEJJVCBMSUtFCkMgICBDT0xMRUNUSU5HIEEgSEFOREZVTCBPRiBST1VORCBQ RUdTICYgUFVUVElORyBUSEVNIElOIFRIRUlSIEhPTEVTLApDICAgVEhFTiBHUkFCQklORyBB IEhBTkRGVUwgT0YgU1FBVVJFIFBFR1MgJiBQVVRUSU5HIFRIRU0gSU4gVEhFSVIKQyAgIFNQ QUNFUywgVEhFTiBHUkFCQklORyBBIEhBTkRGVUwgT0YgUkVDVEFOR1VMQVIgUEVHUyAmIFBV VFRJTkcKQyAgIFRIRU0gQVdBWS4gIFRISVMgUFJPQ0VTUyBDT05USU5VRVMgVU5USUwgQUxM IE9GIFRIRSBQRUdTIEFSRSBHT05FLgpDKioqIEVORCBOT1RFICoqKgpDCkMKQy0tLSBDT05T VFJVQ1QgQllURSBNT1ZJTkcgVkFSSUFCTEVTOgpDICAgICAgICBOQllURVMgOiBOVU1CRVIg T0YgQllURVMgUEVSIExJTkUKQyAgICAgICAgU09GRiA6IFNPVVJDRSBPRkZTRVQgSU4gQVJS QVkgSUFSUiAoSVMgRVFVQUwgVE8gMCkKQyAgICAgICAgRE9GRiA6IERFU1RJTkFUSU9OIE9G RlNFVCBJTiBBUlJBWSBCVUYgKElOVEVSTEVBVkVTIEJBTkRTKQpDICAgICAgICBTSU5DIDog U09VUkNFIElOQ1JFTUVOVCAoQkFORFMvTElORSAqIEJZVEVTL0VMRU1FTlQpCkMgICAgICAg IERJTkMgOiBERVNUSU5BVElPTiBJTkNSRU1FTlQgKE5VTUJFUiBPRiBCQU5EUyAqIEJZVEVT L0VMRU1FTlQpCkMKICAgICAgTkJZVEVTID0gTkVMRSAqIE5CWVRFTAogICAgICBTT0ZGID0g MAogICAgICBTSU5DID0gTkJZVEVMCiAgICAgIERJTkMgPSBOQkFORFMgKiBOQllURUwKYwog ICAgICBQSVhQT1MgPSAwCgogICAgICBibGtzaXogPSBuZWxlICogbmJhbmRzICogbmJ5dGVs CiAgICAgIHRvdHNpeiA9IChlbmQgLSBsaW5lICsgMSkgKiBibGtzaXoKICAgICAgY2FsbCB6 ZXJvcyhidWYsIHRvdHNpeikKCmNjYyAgICAgIHdyaXRlKCosKikgJ2xpbmUsZW5kICcsbGlu ZSxlbmQKICAgICAgRE8gMTAgSUk9TElORSxFTkQKICAgICAgT0ZGU0VUID0gYmxrc2l6ICog UElYUE9TCmNjYyAgICAgIHdyaXRlKCosKikgJ29mZnNldCAnLG9mZnNldAogICAgICAgICBE TyAyMCBLSz0xLE5CQU5EUwogICAgICAgICAgICBDQUxMIFJFREFSQShJQSxJSS0xLDAsTkVM RSxCTkRPUkQoS0spLElBUlIpCiAgICAgICAgICAgIERPRkYgPSBPRkZTRVQgKyAoS0sgLSAx KSAqIE5CWVRFTAogICAgICAgICAgICBDQUxMIE1PVkJMSyhORUxFLCBOQllURUwsIElBUlIs IFNPRkYsIFNJTkMsIEJVRiwgRE9GRiwgRElOQykKMjAgICAgICAgQ09OVElOVUUKYwogICAg ICBQSVhQT1MgPSBQSVhQT1MgKyAxCjEwICAgIENPTlRJTlVFCkMKICAgICAgUkVUVVJOCiAg ICAgIEVORApjCmMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjCiAgICAgIFNVQlJPVVRJTkUgV1JJVFgoSUEs TElORSxOTElOUyxOQllURUwsTkJBTkRTLE5FTEUsQlVGLGJuZG9yZCkKQyAqKiogTWNJREFT IFJldmlzaW9uIEhpc3RvcnkgKioqCkMgMSBXUklUWC5GT1IgMTktTWFyLTkwLDIxOjM2OjUw LGBTU0VDJyBQQy1NY0lEQVMgdmVyIDUuMDAKQyAyIFdSSVRYLkZPUiAyNS1TZXAtOTAsNzoz NDowNCxgU01HJyBGaXJzdCBSZWxlYXNlIGludG8gQ09NbW9uCkMgKioqIE1jSURBUyBSZXZp c2lvbiBIaXN0b3J5ICoqKgogICAgICBJTVBMSUNJVCBJTlRFR0VSIChBLVopCiAgICAgIElO VEVHRVIqNCBCVUYoKiksIGJuZG9yZCgqKQogICAgICBJTlRFR0VSKjQgZGF0YnVmKDEwMDAw KQogICAgICBFTkQ9TElORStOTElOUy0xCiAgICAgIE5CWVRCSyA9IE5CWVRFTCAqIE5CQU5E UyAqIE5FTEUKYwpjLS0tIGluc2VydCB0aGUgbGV2ZWwgc2VjdGlvbiBhY2NvcmRpbmcgdG8g Ym5kb3JkCmMKICAgICAgY2FsbCBwYWNrKG5iYW5kcywgYm5kb3JkLCBkYXRidWYpCiAgICAg IGRvZmYgPSBuYmFuZHMgKyAoNCAtIG1vZChuYmFuZHMsNCkpCmMKICAgICAgRE8gMjAgST1M SU5FLEVORAogICAgICAgICBKPShJLUxJTkUpKk5CWVRCSwogICAgICAgICBjYWxsIG1vdmMo bmJ5dGJrLCBidWYsIGosIGRhdGJ1ZiwgZG9mZikKICAgICAgICAgQ0FMTCBXUklUQShJQSxJ LTEsZGF0YnVmKQpjY2MgICAgICAgICBDQUxMIFdSSVRBKElBLEktMSxCVUYoSikpCgogMjAg ICBDT05USU5VRQoKICAgICAgUkVUVVJOCiAgICAgIEVORApjCmMgYWRkIG5ldyBmdW5jdGlv biBoZXJlIQpjCmMgICAgICBzdWJyb3V0aW5lIHN5c2luKGksaikKYyAgICAgIHJldHVybgpj ICAgICAgZW5kCg== ----- Tom