[Tutor] My shot at the partitioning problem

Danny Yoo dyoo@hkn.eecs.berkeley.edu
Thu, 16 Aug 2001 20:29:45 -0700 (PDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--545289610-1136917903-998018985=:19828
Content-Type: TEXT/PLAIN; charset=US-ASCII

Ok, here's my contribution to the partitioning problem.  I can only get it
to 2 decimal places too, so I'm sure that someone can do much better!


Sample output:

###
Our best choice (00001010010001100011101001110110000101010110110101)
has a value of 119.516797799
Difference between it and our target: 0.00110250314594
Ok, done computing.  Our best choice,
sqrt(5) + sqrt(7) + sqrt(10) + sqrt(14) + sqrt(15) + sqrt(19) + sqrt(20) +
sqrt(21) + sqrt(23) + sqrt(26) + sqrt(27) + sqrt(28) + sqrt(30) +
sqrt(31) + sqrt(36) + sqrt(38) + sqrt(40) + sqrt(42) + sqrt(43) +
sqrt(45) + sqrt(46) + sqrt(48) +
sqrt(50)
is THIS close to our target: 0.00110250314594
###


Actually, the program is a bit long.  I'll attach it to this message
instead, and send it off to Useless Python.  I'd have to say that this
approach was much more Useless than I had anticipated... *grin*.

--545289610-1136917903-998018985=:19828
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="genetic.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0108162029450.19828@hkn.eecs.berkeley.edu>
Content-Description: 
Content-Disposition: attachment; filename="genetic.py"

IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQoNCmZyb20gX19mdXR1cmVfXyBpbXBv
cnQgbmVzdGVkX3Njb3Blcw0KDQoiIiJnZW5ldGljLnB5IC0tLSBhIHRveSBn
ZW5ldGljIGFsZ29yaXRobSBmcmFtZXdvcmsgZm9yIFB5dGhvbi4NCg0KRGFu
bnkgWW9vIChkeW9vQGhrbi5lZWNzLmJlcmtlbGV5LmVkdSkNCg0KVGhpcyBp
cyBjb2RlIHRoYXQgZXhwbG9yZXMgaG93IGdlbmV0aWMgYWxnb3JpdGhtcyB3
b3JrLiAgVGhlIGlkZWEgaXMNCnRvIHNpbXVsYXRlIGV2b2x1dGlvbmFyeSBw
cmVzc3VyZTogd2UgYWxsb3cgYSBwb3B1bGF0aW9uIG9mIHNvbHV0aW9ucw0K
dG8gZ3JvdyBhbmQgZXZvbHZlLiAgQWZ0ZXIgZWFjaCBjeWNsZSwgd2UgY2hv
b3NlIGEgcG9wdWxhdGlvbiBiYXNlZCBvbg0KdGhlIHBlcmZvcm1hbmNlIG9m
IHRoZSBpbmRpdmlkdWFscywgbWF0ZSB0aGVtLCBhbmQgc3RhcnQgYWdhaW4u
ICBUaGUNCnRoZW9yeSBzdWdnZXN0cyB0aGF0IGlmIG91ciBmaXRuZXNzIGZ1
bmN0aW9uIGlzIGEgZ29vZCBvbmUsIHdlDQpncmFkdWFsbHkgcmFpc2UgdGhl
IG92ZXJhbGwgZml0bmVzcyBvZiB0aGUgcG9wdWxhdGlvbi4NCg0KQSBmaXRu
ZXNzIGZ1bmN0aW9uIHRha2VzIGluIHR3byBhcmd1bWVudHMsICdpbmRpdmlk
dWFsJyBhbmQgJ3BlZXJzJzoNCg0KICAgIGluZGl2aWR1YWw6IHRoZSBpbmRp
dmlkdWFsIHRoYXQgaXMgYmVpbmcgZXZhbHVhdGVkLCB0aGF0IGlzLCBhDQog
ICAgc2luZ2xlIGVsZW1lbnQgb2YgdGhlIHBvcHVsYXRpb24uDQogICAgDQog
ICAgcGVlcnM6IHRoZSByZXN0IG9mIHRoZSBwb3B1bGF0aW9uLg0KDQoiIiIN
Cg0KaW1wb3J0IG9wZXJhdG9yDQppbXBvcnQgcmFuZG9tDQoNCg0KIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KY2xhc3MgR2VuZXRpY0FsZ29yaXRobToN
CiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5pdGlhbF9wb3B1bGF0aW9uLCBm
aXRuZXNzX2Z1bmN0aW9uLA0KICAgICAgICAgICAgICAgICBjcm9zc292ZXJf
ZnVuY3Rpb24sIG11dGF0aW9uX2Z1bmN0aW9uPU5vbmUpOg0KICAgICAgICAi
IiJJbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCB3aXRoIGFuIGluaXRpYWwg
cG9wdWxhdGlvbiwgdGhlDQogICAgICAgIHByZXNzdXJlIG9mIGEgZml0bmVz
c19mdW5jdGlvbiwgYW5kIGEgY3Jvc3NvdmVyX2Z1bmN0aW9uLiIiIg0KICAg
ICAgICBzZWxmLnBvcHVsYXRpb24gPSBpbml0aWFsX3BvcHVsYXRpb24NCiAg
ICAgICAgc2VsZi5maXRuZXNzX2YgPSBmaXRuZXNzX2Z1bmN0aW9uDQogICAg
ICAgIHNlbGYuY3Jvc3NvdmVyX2YgPSBjcm9zc292ZXJfZnVuY3Rpb24NCiAg
ICAgICAgc2VsZi5tdXRhdGlvbl9mID0gbXV0YXRpb25fZnVuY3Rpb24NCiAg
ICAgICAgc2VsZi5jeWNsZXNfc2ltdWxhdGVkID0gMA0KDQoNCiAgICBkZWYg
c2ltdWxhdGUoc2VsZik6DQogICAgICAgICIiIlBlcmZvcm0gb25lIGN5Y2xl
IG9mIHRoZSBnZW5ldGljIGFsZ29yaXRobToNCg0KICAgICAgICAxLiAgRXZh
bHVhdGUgdGhlIGZpdG5lc3Mgb2YgZXZlcnkgbWVtYmVyIG9mIG91ciBwb3B1
bGF0aW9uLg0KICAgICAgICAyLiAgQ3JlYXRlIGEgbmV3IHBvcHVsYXRpb24g
YnkgcGlja2luZyBwYWlycyBhbmQgY3Jvc3NpbmcgdGhlbS4NCiAgICAgICAg
IiIiDQogICAgICAgIG5ld19wb3B1bGF0aW9uID0gW10NCiAgICAgICAgZml0
bmVzc2VzID0gW3NlbGYuZml0bmVzc19mKHgsIHNlbGYucG9wdWxhdGlvbikN
CiAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYucG9wdWxhdGlv
bl0NCiAgICAgICAgd2hpbGUgbGVuKG5ld19wb3B1bGF0aW9uKSA8IGxlbihz
ZWxmLnBvcHVsYXRpb24pOg0KICAgICAgICAgICAgcGFyZW50MSA9IHNlbGYu
cG9wdWxhdGlvbltyb3VsZXR0ZVNlbGVjdChmaXRuZXNzZXMpXQ0KICAgICAg
ICAgICAgcGFyZW50MiA9IHNlbGYucG9wdWxhdGlvbltyb3VsZXR0ZVNlbGVj
dChmaXRuZXNzZXMpXQ0KICAgICAgICAgICAgY2hpbGQgPSBzZWxmLmNyb3Nz
b3Zlcl9mKHBhcmVudDEsIHBhcmVudDIpDQogICAgICAgICAgICBpZiBzZWxm
Lm11dGF0aW9uX2Y6IGNoaWxkID0gc2VsZi5tdXRhdGlvbl9mKGNoaWxkKQ0K
ICAgICAgICAgICAgbmV3X3BvcHVsYXRpb24uYXBwZW5kKGNoaWxkKQ0KICAg
ICAgICBzZWxmLnBvcHVsYXRpb24gPSBuZXdfcG9wdWxhdGlvbg0KICAgICAg
ICBzZWxmLmN5Y2xlc19zaW11bGF0ZWQgKz0gMQ0KDQoNCiAgICBkZWYgZ2V0
UG9wdWxhdGlvbihzZWxmKToNCiAgICAgICAgcmV0dXJuIHNlbGYucG9wdWxh
dGlvbg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoiIiJBIGZldyB1
dGlsaXR5IGZ1bmN0aW9ucy4iIiINCg0KZGVmIHJvdWxldHRlU2VsZWN0KHJv
dWxldHRlX3dlaWdodHMpOg0KICAgICIiIkdpdmVuIGEgbGlzdCBvZiBwb3Np
dGl2ZSByb3VsZXR0ZV93ZWlnaHRzLCByZXR1cm4gdGhlIGluZGV4IG9mDQog
ICAgdGhlIGVsZW1lbnQgY2hvc2VuLiIiIg0KICAgIHN1bSA9IGxpc3RTdW0o
cm91bGV0dGVfd2VpZ2h0cykNCiAgICBjaG9pY2UgPSByYW5kb20ucmFuZG9t
KCkgKiBzdW0NCiAgICBmb3IgaSBpbiByYW5nZShsZW4ocm91bGV0dGVfd2Vp
Z2h0cykpOg0KICAgICAgICBhc3NlcnQgcm91bGV0dGVfd2VpZ2h0c1tpXSA+
PSAwDQogICAgICAgIGlmIGNob2ljZSA8IHJvdWxldHRlX3dlaWdodHNbaV06
DQogICAgICAgICAgICByZXR1cm4gaQ0KICAgICAgICBlbHNlOg0KICAgICAg
ICAgICAgY2hvaWNlIC09IHJvdWxldHRlX3dlaWdodHNbaV0NCiAgICByZXR1
cm4gLTENCiAgICAjIyBUaGlzIGxhc3QgcmV0dXJuIHN0YXRlbWVudCBzaG91
bGQgbm90IGJlIG5lY2Vzc2FyeSwgYWNjb3JkaW5nDQogICAgIyMgdG8gcHJv
YmFiaWxpdHkgdGhlb3J5LiAgU3RpbGwsIGl0IG1pZ2h0IGJlIGEgZ29vZCBp
ZGVhIHRvDQogICAgIyMgcHJvZ3JhbSBkZWZlbnNpdmVseS4NCg0KDQpkZWYg
bm9ybWFsaXplKEwpOg0KICAgICIiIkdpdmVuIGEgbGlzdCBvZiBudW1iZXJz
LCBtYWtlIGV2ZXJ5dGhpbmcgZ28gZnJvbSAwIHRvIDEuIiIiDQogICAgcGFz
cw0KDQoNCmRlZiBsaXN0U3VtKEwpOg0KICAgICIiIkdpdmVuIGEgbGlzdCBv
ZiB0aGluZ3MsIHJldHVybnMgdGhlaXIgdG90YWwgc3VtLiIiIg0KICAgIHJl
dHVybiByZWR1Y2Uob3BlcmF0b3IuYWRkLCBMKQ0KDQoNCmRlZiBzdHJpbmdD
cm9zc292ZXIoczEsIHMyLCBwcm9iYWJpbGl0eT0wLjUpOg0KICAgICIiIkEg
c2ltcGxlIGNyb3Nzb3ZlciBvcGVyYXRvciBvbiBzdHJpbmdzIHMxIGFuZCBz
Mi4iIiINCiAgICBmb3IgaSBpbiByYW5nZShsZW4oczEpKToNCiAgICAgICAg
aWYgcmFuZG9tLnJhbmRvbSgpIDwgcHJvYmFiaWxpdHk6DQogICAgICAgICAg
ICByZXR1cm4gczFbOmldICsgczJbaTpdDQogICAgcmV0dXJuIHMxDQoNCg0K
ZGVmIG1ha2VCaW5hcnlTdHJpbmdNdXRhdG9yKHJhZGlhdGlvbik6DQogICAg
ZGVmIG11dGF0b3Iocyk6DQogICAgICAgIGxldHRlcnMgPSBsaXN0KHMpDQog
ICAgICAgIG5ld2xldHRlcnMgPSBbXQ0KICAgICAgICBmb3IgbCBpbiBsZXR0
ZXJzOg0KICAgICAgICAgICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgcmFkaWF0
aW9uOg0KICAgICAgICAgICAgICAgIGlmIGwgPT0gJzAnOiBuZXdsZXR0ZXJz
LmFwcGVuZCgnMScpDQogICAgICAgICAgICAgICAgZWxzZTogbmV3bGV0dGVy
cy5hcHBlbmQoJzAnKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAg
ICAgICBuZXdsZXR0ZXJzLmFwcGVuZChsKQ0KICAgICAgICByZXR1cm4gJycu
am9pbihuZXdsZXR0ZXJzKQ0KICAgIHJldHVybiBtdXRhdG9yDQo=
--545289610-1136917903-998018985=:19828
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="partition50.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0108162029451.19828@hkn.eecs.berkeley.edu>
Content-Description: 
Content-Disposition: attachment; filename="partition50.py"

IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQppbXBvcnQgcmFuZG9tDQppbXBvcnQg
b3BlcmF0b3INCmZyb20gbWF0aCBpbXBvcnQgc3FydCwgc2luDQpmcm9tIGdl
bmV0aWMgaW1wb3J0IEdlbmV0aWNBbGdvcml0aG0sIHN0cmluZ0Nyb3Nzb3Zl
ciwgbWFrZUJpbmFyeVN0cmluZ011dGF0b3INCmZyb20gcHByaW50IGltcG9y
dCBwcHJpbnQNCg0KIiIiDQpBIGdlbmV0aWMgYWxnb3JpdGhtIHRoYXQgdHJp
ZXMgc29sdmluZyB0aGUgcGFydGl0aW9uaW5nLXNxcnQtNTANCnByb2JsZW0g
bWVudGlvbmVkIG9uIFB5dGhvbi10dXRvcjoNCg0KICAgIGh0dHA6Ly9tYWls
LnB5dGhvbi5vcmcvcGlwZXJtYWlsL3R1dG9yLzIwMDEtQXVndXN0LzAwNzk3
My5odG1sDQoNCkRhbm55IFlvbyAoZHlvb0Boa24uZWVjcy5iZXJrZWxleS5l
ZHUpDQoNCkhlcmUncyBhIHBhcnRpY3VsYXJseSBVc2VsZXNzIGFwcHJvYWNo
IHRvIHNvbHZpbmcgdGhlIHBhcnRpdGlvbmluZw0KcHJvYmxlbS4gIEkgaG9w
ZSB5b3UgZW5qb3kgaXQuICAqZ3JpbioNCg0KDQpBbiAiaW5kaXZpZHVhbCIg
aXMgYSBiaW5hcnkgc3RyaW5nIG9mIGxlbmd0aCA1MC4gIEhlcmUgYXJlIGEg
ZmV3DQpwZW9wbGUgaW4gYSBzYW1wbGUgcG9wdWxhdGlvbjoNCg0KICAgICIw
MTEwMTAwMTEwMDAwMTAwMDEwMDExMTEwMDExMDAxMDExMDAwMDAxMDExMTEw
MDExMSINCiAgICAiMTAxMDAxMDAwMTExMDAxMDAwMTAwMDAxMTEwMDExMDEx
MTAxMDAxMDAxMDExMDAxMTEiDQoNClRoZSB3YXkgdGhpcyB3b3JrcyBpcyB0
aGF0IHdlIHRyeSAiYnJlZWRpbmciIHNvbHV0aW9ucyB0aGF0IHNlZW0gdG8N
CmFkZCB1cCB0byByb290X3N1bS8yIC0tLSBpZiB3ZSBnZXQgaXQgZXhhY3Rs
eSwgdGhlbiBvdXIgcGFydGl0aW9uIHdpbGwNCmRpdmlkZSByb290X3N1bSBj
b21wbGV0ZWx5LiAgT2YgY291cnNlLCB3ZSdyZSBub3QgdGhhdCBvcHRpbWlz
dGljLi4uDQoNClRoaXMgYXBwcm9hY2ggd29ya3Mgb24gdGhlIGlkZWEgdGhh
dCBnb29kIHNvbHV0aW9ucyBzaGFyZSBjZXJ0YWluDQpjaGFyYWN0ZXJpc3Rp
Y3Mgd2l0aCBvdGhlcnM7IHRoZWlyIGJpdCBwYXR0ZXJzIHdpbGwgc2hhcmUg
Y29tbW9uDQplbGVtZW50cyB0aGF0IHdpbGwgc3Vydml2ZSBvbiBnZW5ldGlj
IGNyb3Nzb3Zlci4gIFNlZSBNZWxhbmllDQpNaXRjaGVsbCdzIGJvb2ssICJB
biBJbnRyb2R1Y3Rpb24gdG8gR2VuZXRpYyBBbGdvcml0aG1zIiwgZm9yIGEg
bmljZQ0KaW50cm9kdWN0aW9uIGludG8gdGhpcyB3YWNreSB0b3BpYy4NCg0K
IiIiDQoNCiMgR2xvYmFsIHZhcmlhYmxlcw0Kc3F1YXJlX3Jvb3RzID0gW3Nx
cnQoeCkgZm9yIHggaW4gcmFuZ2UoMSwgNTEpXQ0Kcm9vdF9zdW0gPSByZWR1
Y2Uob3BlcmF0b3IuYWRkLCBzcXVhcmVfcm9vdHMpDQptYWdpYyA9IDQyDQoN
Cg0KZGVmIG1ha2VSYW5kb21CaW5hcnlTdHJpbmcobik6DQogICAgIiIiUmV0
dXJuIGEgcmFuZG9tICJiaW5hcnkiIHN0cmluZyBvZiBsZW5ndGggbi4gIFdl
IGdldCBjYW4gZ2V0DQogICAgc3RyaW5ncyBsaWtlICIwMDAxMCIgZnJvbSB0
aGlzLg0KDQogICAgKE5vdGUgdGhhdCB3aGF0IHdlIGdldCBiYWNrIGlzIGEg
UHl0aG9uIHN0cmluZywgYW5kIG5vdCBhDQogICAgYmluYXJ5LXBhY2tlZCBz
dHJpbmcuKSIiIg0KICAgIGxldHRlcnMgPSBbXQ0KICAgIGZvciBpIGluIHJh
bmdlKG4pOg0KICAgICAgICBpZiByYW5kb20ucmFuZGludCgwLCAxKSA9PSAw
Og0KICAgICAgICAgICAgbGV0dGVycy5hcHBlbmQoJzAnKQ0KICAgICAgICBl
bHNlOg0KICAgICAgICAgICAgbGV0dGVycy5hcHBlbmQoJzEnKQ0KICAgIHJl
dHVybiAnJy5qb2luKGxldHRlcnMpDQoNCg0KZGVmIGNsb3NlVG9aZXJvbmVz
cyh4KToNCiAgICAiIiJUaGlzIGZ1bmN0aW9uIGdldHMgY2xvc2UgdG8gMSBu
ZWFyIHplcm8sIGFuZCB0cmllcyB0byBkZWNheQ0KICAgIGZyb20gdGhlcmUu
Li4gQXMgeW91IGNhbiB0ZWxsLCB0aGlzIGlzIGEgaGV1cmlzdGljLCBhbmQg
SSBuZWVkIHRvDQogICAgZml4IGl0LiIiIg0KICAgIGlmIGFicyh4KSA+IDM6
IHJldHVybiAwDQogICAgeCA9IHggLyAxMC4wDQogICAgcmV0dXJuIGFicygx
MCAqIHNpbih4KS94KSAgICAgICAgICAgICAgICAgIyMgZml4bWUNCg0KDQpk
ZWYgZXZhbHVhdGVQZXJzb24ocCk6DQogICAgIiIiR2l2ZW4gYSBwZXJzb24g
aW4gb3VyIHBvcHVsYXRpb24sIHJldHVybiB0aGVpciAidmFsdWUiLiIiIg0K
ICAgIHN1bSA9IDANCiAgICBmb3IgaSBpbiByYW5nZShsZW4ocCkpOg0KICAg
ICAgICBpZiBwW2ldID09ICcwJzogcGFzcw0KICAgICAgICBlbHNlOg0KICAg
ICAgICAgICAgc3VtICs9IHNxdWFyZV9yb290c1tpXQ0KICAgIHJldHVybiBz
dW0NCg0KDQpkZWYgZml0bmVzc0Z1bmN0aW9uKGluZGl2aWR1YWwsIHBlZXJz
KToNCiAgICAiIiJUaGlzIGZpdG5lc3MgZnVuY3Rpb24gZHJhd3MgYW4gYWJz
b2x1dGUgbGluZSBvZiBmaXRuZXNzOiBhbg0KICAgIGluZGl2aWR1YWwgaXMg
Zml0IGlmIGhlIG9yIHNoZSAiYWRkcyIgdXAgY2xvc2UgdG8gdGhlIHN1bSBv
ZiBhbg0KICAgIGlkZWFsIHBhcnRpdGlvbmluZy4gIFdlJ2xsIGlnbm9yZSBv
dXIgcGVlcnMgZm9yIG5vdy4iIiINCiAgICBzdW0gPSBldmFsdWF0ZVBlcnNv
bihpbmRpdmlkdWFsKQ0KICAgIHJldHVybiBjbG9zZVRvWmVyb25lc3MoYWJz
KHN1bSAtIHJvb3Rfc3VtLzIpKQ0KDQoNCmRlZiBjaG9vc2VCZXN0KHBvcHVs
YXRpb24pOg0KICAgICIiIlJldHVybiB0aGUgImJlc3QiIHBlcnNvbiBpbiB0
aGUgcG9wdWxhdGlvbiwgdGhhdCBpcywgdGhlIHBlcnNvbg0KICAgIHdobydz
IHZhbHVlIGlzIGNsb3Nlc3QgdG8gcm9vdF9zdW0vMi4iIiINCiAgICBhc3Nl
cnQgbGVuKHBvcHVsYXRpb24pID4gMA0KICAgIGJlc3RfY2hvaWNlID0gcG9w
dWxhdGlvblswXQ0KICAgIGZvciBwIGluIHBvcHVsYXRpb25bMTpdOg0KICAg
ICAgICBpZiAoYWJzKGV2YWx1YXRlUGVyc29uKHApIC0gcm9vdF9zdW0vMikg
PA0KICAgICAgICAgICAgYWJzKGV2YWx1YXRlUGVyc29uKGJlc3RfY2hvaWNl
KSAtIHJvb3Rfc3VtLzIpKToNCiAgICAgICAgICAgIGJlc3RfY2hvaWNlID0g
cA0KICAgIHJldHVybiBiZXN0X2Nob2ljZQ0KDQoNCmRlZiBkZXNjcmliZVBl
cnNvbihwZXJzb24pOg0KICAgIHNxcnRzID0gWyJzcXJ0KCVzKSIgJSAoYml0
KzEpIGZvciBiaXQgaW4gcmFuZ2UobGVuKHBlcnNvbikpDQogICAgICAgICAg
ICAgaWYgcGVyc29uW2JpdF0gPT0gJzEnXQ0KICAgIHJldHVybiAnICsgJy5q
b2luKHNxcnRzKQ0KDQoNCmRlZiBtYWluKCk6DQogICAgcG9wdWxhdGlvbiA9
IFttYWtlUmFuZG9tQmluYXJ5U3RyaW5nKDUwKSBmb3IgaSBpbiByYW5nZSgx
MCldDQogICAgYWxnb3JpdGhtID0gR2VuZXRpY0FsZ29yaXRobShpbml0aWFs
X3BvcHVsYXRpb249cG9wdWxhdGlvbiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpdG5lc3NfZnVuY3Rpb249Zml0bmVzc0Z1bmN0aW9u
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NvdmVy
X2Z1bmN0aW9uPXN0cmluZ0Nyb3Nzb3ZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG11dGF0aW9uX2Z1bmN0aW9uPW1ha2VCaW5hcnlT
dHJpbmdNdXRhdG9yKDAuMDQyKSkNCiAgICBiZXN0X2Nob2ljZSA9ICcwJyAq
IDUwDQogICAgZm9yIGkgaW4gcmFuZ2UoNTAwKToNCiAgICAgICAgYWxnb3Jp
dGhtLnNpbXVsYXRlKCkNCiAgICAgICAgYmVzdF9jaG9pY2UgPSBjaG9vc2VC
ZXN0KGFsZ29yaXRobS5nZXRQb3B1bGF0aW9uKCkgKyBbYmVzdF9jaG9pY2Vd
KQ0KICAgICAgICBwcmludCAiSXRlcmF0aW9uICVkIiAlIGkNCiAgICAgICAg
cHJpbnQgIk91ciBiZXN0IGNob2ljZSAoJXMpIiAlIGJlc3RfY2hvaWNlDQog
ICAgICAgIHByaW50ICJoYXMgYSB2YWx1ZSBvZiAlcyIgJSBldmFsdWF0ZVBl
cnNvbihiZXN0X2Nob2ljZSkNCiAgICAgICAgcHJpbnQgIkRpZmZlcmVuY2Ug
YmV0d2VlbiBpdCBhbmQgb3VyIHRhcmdldDogJXMiICUgXA0KICAgICAgICAg
ICAgICBhYnMoZXZhbHVhdGVQZXJzb24oYmVzdF9jaG9pY2UpIC0gcm9vdF9z
dW0vMikNCiAgICBwcmludCAiT2ssIGRvbmUgY29tcHV0aW5nLiAgT3VyIGJl
c3QgY2hvaWNlLCINCiAgICBwcmludCBkZXNjcmliZVBlcnNvbihiZXN0X2No
b2ljZSkNCiAgICBwcmludCAiaXMgVEhJUyBjbG9zZSB0byBvdXIgdGFyZ2V0
OiIsIChhYnMoZXZhbHVhdGVQZXJzb24oYmVzdF9jaG9pY2UpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBy
b290X3N1bS8yKSkNCg0KDQppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0K
ICAgIG1haW4oKQ0K
--545289610-1136917903-998018985=:19828--