<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>187977</bug_id>
          
          <creation_ts>2018-07-24 16:24:49 -0700</creation_ts>
          <short_desc>Remove support for the double type from WHLSL</short_desc>
          <delta_ts>2018-07-24 17:22:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Denney">tdenney</reporter>
          <assigned_to name="Thomas Denney">tdenney</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444875</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-07-24 16:24:49 -0700</bug_when>
    <thetext>Remove support for the double type from WHLSL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444877</commentid>
    <comment_count>1</comment_count>
      <attachid>345723</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-07-24 16:30:26 -0700</bug_when>
    <thetext>Created attachment 345723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444884</commentid>
    <comment_count>2</comment_count>
      <attachid>345723</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-07-24 16:36:30 -0700</bug_when>
    <thetext>Comment on attachment 345723
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=345723&amp;action=review

&gt; Tools/WebGPUShadingLanguageRI/Test.js:3617
&gt; +    // checkFloat(program, callFunction(program, &quot;foo8&quot;, [], []), 7.5);

???</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444885</commentid>
    <comment_count>3</comment_count>
      <attachid>345726</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-07-24 16:41:05 -0700</bug_when>
    <thetext>Created attachment 345726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444900</commentid>
    <comment_count>4</comment_count>
      <attachid>345726</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-24 17:21:25 -0700</bug_when>
    <thetext>Comment on attachment 345726
Patch

Clearing flags on attachment: 345726

Committed r234182: &lt;https://trac.webkit.org/changeset/234182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444901</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-24 17:21:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444902</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-24 17:22:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/42563416&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345723</attachid>
            <date>2018-07-24 16:30:26 -0700</date>
            <delta_ts>2018-07-24 16:41:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187977-20180724163026.patch</filename>
            <type>text/plain</type>
            <size>39077</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWI0YTg5NTRlYmQ3MTE1MDk2ZTAwMjM1MDgwM2QxZDBi
NDZlMDIzNS4uMjhkOTM2NTcyMjg1NDRlYmYwYjgyY2RlYmY5YWVkOGI3MDVhNmU4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE4LTA3LTI0ICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIHRoZSBkb3VibGUgdHlwZSBmcm9tIFdITFNMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0FsbC5qczogUmVtb3ZlZCBEb3VibGVMaXRlcmFsLmpzIGFuZCBEb3VibGVM
aXRlcmFsVHlwZS5qcyBpbmNsdWRlLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0RvdWJsZUxpdGVyYWwuanM6IFJlbW92ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRG91YmxlTGl0ZXJhbFR5cGUuanM6IFJlbW92ZWQuCisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczogUmVtb3ZlZCBkb3VibGUgYXJpdGhtZXRpYyBm
dW5jdGlvbnMuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6Cisg
ICAgICAgIChwYXJzZVRlcm0pOiBSZW1vdmVkIHBhcnNpbmcgb2YgZG91YmxlIGxpdGVyYWxzLgor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6IFJlbW92ZWQgRG91
YmxlTGl0ZXJhbC5qcyBhbmQgRG91YmxlTGl0ZXJhbFR5cGUuanMgaW5jbHVkZS4KKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVkNvZGVnZW4uanM6IFJlbW92ZWQgZG91Ymxl
IHR5cGUgbG9naWMuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRM
aWJyYXJ5LmpzOiBSZW1vdmVkIGRvdWJsZSB0eXBlIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6IFJlbW92ZWQgRG91YmxlTGl0ZXJhbC5q
cyBhbmQgRG91YmxlTGl0ZXJhbFR5cGUuanMgaW5jbHVkZS4KKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOiBSZW1vdmVkIHRlc3RzIHRoYXQgdGVzdCBkb3VibGVzIG9y
IHBvcnRlZCB0aGVtIHRvIHVzZSBmbG9hdHMuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvaW5kZXguaHRtbDogUmVtb3ZlZCBEb3VibGVMaXRlcmFsLmpzIGFuZCBEb3VibGVMaXRl
cmFsVHlwZS5qcyBpbmNsdWRlLgorCiAyMDE4LTA3LTI0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzQxMjEu
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggMzBhMGIwOTk2NTVjYjUwYjky
YWNkMTZkYjc0NTFlNWIzOTdiZTMzMi4uMTVkZDdjY2FiOTQ2OTJhMzJhY2QyN2I5ZGFjOTZjOGE4
ZjU1ZDY1OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtNjQsOCArNjQs
NiBAQCBsb2FkKCJDb252ZXJ0UHRyVG9BcnJheVJlZkV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkRl
cmVmZXJlbmNlRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiRG9XaGlsZUxvb3AuanMiKTsKIGxvYWQo
IkRvdEV4cHJlc3Npb24uanMiKTsKLWxvYWQoIkRvdWJsZUxpdGVyYWwuanMiKTsKLWxvYWQoIkRv
dWJsZUxpdGVyYWxUeXBlLmpzIik7CiBsb2FkKCJFQXJyYXlSZWYuanMiKTsKIGxvYWQoIkVCdWZm
ZXIuanMiKTsKIGxvYWQoIkVCdWZmZXJCdWlsZGVyLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Eb3VibGVMaXRlcmFsLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRG91YmxlTGl0ZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2ZkOTgxMzA2ZWI5ZTBiMzRmM2ZhNTVkYTRhZjljMDc2NDcwZmRlMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Eb3VibGVMaXRlcmFsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotInVzZSBzdHJp
Y3QiOwotCi1sZXQgRG91YmxlTGl0ZXJhbCA9IGNyZWF0ZUxpdGVyYWwoewotICAgIGxpdGVyYWxD
bGFzc05hbWU6ICJEb3VibGVMaXRlcmFsIiwKLSAgICBwcmVmZXJyZWRUeXBlTmFtZTogImRvdWJs
ZSIsCi0gICAgCi0gICAgbmVnQ29uc3RleHByKG9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgSW50TGl0ZXJhbChvcmlnaW4sIC10aGlzLnZhbHVlKTsKLSAgICB9LAotICAgIAotICAg
IGNyZWF0ZVR5cGUob3JpZ2luLCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRG91
YmxlTGl0ZXJhbFR5cGUob3JpZ2luLCB2YWx1ZSk7Ci0gICAgfQotfSk7Ci0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0RvdWJsZUxpdGVyYWxUeXBlLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRG91YmxlTGl0ZXJhbFR5cGUuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NDJmYjVjMTA1MDQ5ZTMxMGY2OWYxZWE2MGI4NzNiMDJl
OWE2YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRG91YmxlTGl0ZXJhbFR5cGUuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0idXNlIHN0cmljdCI7Ci0KLWxldCBEb3VibGVMaXRlcmFsVHlwZSA9IGNyZWF0
ZUxpdGVyYWxUeXBlKHsKLSAgICBwcmVmZXJyZWRUeXBlTmFtZTogImRvdWJsZSIsCi0gICAgCi0g
ICAgdmVyaWZ5QXNBcmd1bWVudCh1bmlmaWNhdGlvbkNvbnRleHQpCi0gICAgewotICAgICAgICBs
ZXQgcmVhbFRoaXMgPSB1bmlmaWNhdGlvbkNvbnRleHQuZmluZCh0aGlzKTsKLSAgICAgICAgaWYg
KCFyZWFsVGhpcy5pc0Zsb2F0aW5nKQotICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IGZhbHNl
LCByZWFzb246ICJDYW5ub3QgdXNlIGRvdWJsZSBsaXRlcmFsIHdpdGggbm9uLWZsb2F0aW5nIHR5
cGUgIiArIHJlYWxUaGlzfTsKLSAgICAgICAgaWYgKCFyZWFsVGhpcy5jYW5SZXByZXNlbnQodGhp
cy52YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4ge3Jlc3VsdDogZmFsc2UsIHJlYXNvbjogIkZs
b2F0IGxpdGVyYWwgIiArIHRoaXMudmFsdWUgKyAiIGRvZXMgbm90IGZpdCBpbiB0eXBlICIgKyBy
ZWFsVGhpc307Ci0gICAgICAgIHJldHVybiB7cmVzdWx0OiB0cnVlfTsKLSAgICB9Ci19KTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IDQzMDAzYWE3
ZTFmZDljNWIxN2IwNTlkNTNjMjcyNDIwYTdlN2VkNjIuLmZkODY4M2Q2OTk5NTM1ZjM3ZDg1ODg0
YTgxZjFlYTA0MWZlMmY2MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50
cmluc2ljcy5qcwpAQCAtMTM5LDIzICsxMzksNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1
ZTsKICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFs
dWUgPT4gdmFsdWU7CiAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21GbG9hdExp
dGVyYWwgPSB2YWx1ZSA9PiBNYXRoLmZyb3VuZCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5mb3JtYXRWYWx1ZUZyb21Eb3VibGVMaXRlcmFsID0gdmFsdWUgPT4gTWF0aC5mcm91bmQodmFs
dWUpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAg
ICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdDY0PD4iLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5kb3VibGUgPSB0eXBlOwotICAgICAgICAgICAgICAgIHR5cGUu
aXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBl
LmlzTnVtYmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZh
bHVlID0+IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9
IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAg
ICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwotICAg
ICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2
YWx1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9
IHZhbHVlID0+IHZhbHVlOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tRG91
YmxlTGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAg
dGhpcy5fbWFwLnNldCgKQEAgLTE4NSwxMiArMTY4LDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJv
eCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAotICAg
ICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IGludDMy
KGRvdWJsZSkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8
IDApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IHVpbnQzMihpbnQzMikiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CkBAIC0yMDksMTIgKzE4Niw2IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3go
dmFsdWUubG9hZFZhbHVlKCkgPj4+IDApOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAotICAg
ICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IHVpbnQz
Mihkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkg
Pj4+IDApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IHVpbnQ4KGludDMyKSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKQEAgLTIzMywxOCArMjA0LDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJv
eCh2YWx1ZS5sb2FkVmFsdWUoKSAmIDB4ZmYpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAot
ICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IHVp
bnQ4KGRvdWJsZSkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUo
KSAmIDB4ZmYpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICB0aGlzLl9tYXAu
c2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IGZsb2F0KGRvdWJsZSkiLAotICAg
ICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbdmFsdWVdKSA9PiBFUHRyLmJveChNYXRoLmZyb3VuZCh2YWx1ZS5sb2FkVmFsdWUoKSkpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IGZsb2F0KGludDMyKSIsCiAgICAgICAgICAgICBmdW5j
ID0+IHsKQEAgLTI2MywzMCArMjIyLDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveChNYXRoLmZy
b3VuZCh2YWx1ZS5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAotICAg
ICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IGRvdWJs
ZShmbG9hdCkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAg
ICAgICAgICAibmF0aXZlIG9wZXJhdG9yPD4gZG91YmxlKGludDMyKSIsCi0gICAgICAgICAgICBm
dW5jID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0p
ID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8
PiBkb3VibGUodWludDMyKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRW
YWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNl
dCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiBkb3VibGUodWludDgpIiwKLSAgICAg
ICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBp
bnQgb3BlcmF0b3IrPD4oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC0zMDgs
MTMgKzI0Myw2IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgICAgICBFUHRy
LmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAg
ICAgICAgICJuYXRpdmUgZG91YmxlIG9wZXJhdG9yKzw+KGRvdWJsZSxkb3VibGUpIiwKLSAgICAg
ICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W2xlZnQsIHJpZ2h0XSkgPT4KLSAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2Fk
VmFsdWUoKSArIHJpZ2h0LmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9y
LTw+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtMzM2LDEzICsyNjQsNiBA
QCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5m
cm91bmQobGVmdC5sb2FkVmFsdWUoKSAtIHJpZ2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0
aXZlIGRvdWJsZSBvcGVyYXRvci08Pihkb3VibGUsZG91YmxlKSIsCi0gICAgICAgICAgICBmdW5j
ID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdo
dF0pID0+Ci0gICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgLSBy
aWdodC5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcio8PihpbnQsaW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAgLTM2NCwxMyArMjg1LDYgQEAgY2xhc3MgSW50
cmluc2ljcyB7CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KE1hdGguZnJvdW5kKGxlZnQu
bG9hZFZhbHVlKCkgKiByaWdodC5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBkb3VibGUg
b3BlcmF0b3IqPD4oZG91YmxlLGRvdWJsZSkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgotICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZh
bHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IvPD4oaW50LGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CkBAIC00NzQsMTMgKzM4OCw2IEBAIGNsYXNzIEludHJpbnNpY3Mgewog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgp
IC8gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKLSAgICAg
ICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgZG91YmxlIG9wZXJhdG9yLzw+
KGRvdWJsZSxkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KLSAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSAvIHJpZ2h0LmxvYWRWYWx1ZSgpKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09PD4oaW50LGludCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CkBAIC01MDksMTMgKzQxNiw2IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAg
ICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAg
ICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09PD4oZG91YmxlLGRvdWJsZSkiLAotICAg
ICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgotICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0Lmxv
YWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVy
YXRvcjw8PihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAgLTUzNywxMyArNDM3
LDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxl
ZnQubG9hZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I8PD4oZG91YmxlLGRvdWJsZSkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgotICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZh
bHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD08PihpbnQsaW50KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKQEAgLTU2NSwxMyArNDU4LDYgQEAgY2xhc3MgSW50cmluc2ljcyB7
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAotICAgICAgICB0aGlzLl9t
YXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD08Pihkb3VibGUsZG91
YmxlKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmltcGxl
bWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+Ci0gICAgICAgICAgICAgICAgICAgIEVQdHIu
Ym94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBib29sIG9wZXJhdG9yPjw+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAt
NTkzLDEzICs0NzksNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJu
YXRpdmUgYm9vbCBvcGVyYXRvcj48Pihkb3VibGUsZG91YmxlKSIsCi0gICAgICAgICAgICBmdW5j
ID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdo
dF0pID0+Ci0gICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiBy
aWdodC5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PTw+KGludCxp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtNjIxLDEzICs1MDAsNiBAQCBjbGFzcyBJ
bnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSA+PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAg
ICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PTw+
KGRvdWJsZSxkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KLSAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUoKSk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgCiAgICAgICAgIGZvciAobGV0IGFkZHJlc3NTcGFjZSBv
ZiBhZGRyZXNzU3BhY2VzKSB7CiAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgICAgIGBuYXRpdmUgVCogJHthZGRyZXNzU3BhY2V9IG9wZXJhdG9yJltdPFQ+KFRbXSAke2Fk
ZHJlc3NTcGFjZX0sdWludClgLApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpp
bmRleCAxNDc1NzQ3OGQ4ODE2YjQwOWQ5NTJiNGY5MDM4ZTI1ZWJlYjVlODY5Li42ZDJiNDMxNjE1
NjAxYWI5ZGQzZDA5MzhmYmZiMzg1ZWUyYTRkYWYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9QYXJzZS5qcwpAQCAtMjAxLDE5ICsyMDEsMTIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgSW50TGl0ZXJhbCh0b2tlbiwgaW50VmVyc2lvbik7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRva2VuLCBpbnRWZXJzaW9uID4+PiAwKTsKICAg
ICAgICAgfQotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiZG91YmxlTGl0ZXJh
bCIpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGVMaXRlcmFsKHRva2VuLCArdG9rZW4u
dGV4dCk7CiAgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJmbG9hdExpdGVyYWwi
KSkgewogICAgICAgICAgICAgbGV0IHRleHQgPSB0b2tlbi50ZXh0OwotICAgICAgICAgICAgbGV0
IGQgPSB0b2tlbi50ZXh0LmVuZHNXaXRoKCJkIik7CiAgICAgICAgICAgICBsZXQgZiA9IHRva2Vu
LnRleHQuZW5kc1dpdGgoImYiKTsKLSAgICAgICAgICAgIGlmIChkICYmIGYpCi0gICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJMaXRlcmFsIGNhbm5vdCBiZSBib3RoIGEgZG91YmxlIGxp
dGVyYWwgYW5kIGEgZmxvYXQgbGl0ZXJhbC4iKTsKLSAgICAgICAgICAgIGlmIChkIHx8IGYpCisg
ICAgICAgICAgICBpZiAoZikKICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmco
MCwgdGV4dC5sZW5ndGggLSAxKTsKICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQo
dGV4dCk7Ci0gICAgICAgICAgICBpZiAoZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERv
dWJsZUxpdGVyYWwodG9rZW4sIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRM
aXRlcmFsKHRva2VuLCBNYXRoLmZyb3VuZCh2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh0b2tlbiA9IHRyeUNvbnN1bWUoInRydWUiLCAiZmFsc2UiKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TUElSVi5odG1sCmluZGV4IGQxNzNmN2U3MjUxZWE5ODVhNmY5YjU2NTM0ZmRh
NDU4ZmQyMTYwZjEuLjg5ZjE2NTBlNzk3Y2MzN2QxYzQ4NWQ0ODRiZDA2NDIxN2U2ZDJkODYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbApAQCAtNDYsOCArNDYsNiBA
QCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IkNvbnZlcnRQdHJUb0FycmF5UmVmRXhwcmVzc2lvbi5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRvV2hpbGVMb29wLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IkRvdWJsZUxpdGVyYWwuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJEb3Vi
bGVMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRlcmVmZXJlbmNl
RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkVBcnJheVJlZi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkVCdWZmZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlZDb2RlZ2VuLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlZDb2RlZ2VuLmpzCmluZGV4IDBiNTRjYTlh
NGZjNDA4ZGFlMTE2OGUzYTdhMGM4MmQ1ZTg3YzdmOWMuLmI0ZjUwODU5YTg3YWZiNjBlNTRiMzYw
YzYwNTljNGFhYzhjMjNiY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1NQSVJWQ29kZWdlbi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
UElSVkNvZGVnZW4uanMKQEAgLTIxNCwxNCArMjE0LDYgQEAgZnVuY3Rpb24gZ2VuZXJhdGVTUElS
VihzcGlydiwgcHJvZ3JhbSkKICAgICAgICAgICAgICAgICB2YWx1ZXMgPSB1aW50VmlldzsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgcHJv
Z3JhbS5pbnRyaW5zaWNzLmRvdWJsZTogewotICAgICAgICAgICAgICAgIGxldCBhcnJheUJ1ZmZl
ciA9IG5ldyBBcnJheUJ1ZmZlcihNYXRoLm1heChVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVO
VCwgRmxvYXQ2NEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UKSk7Ci0gICAgICAgICAgICAgICAgbGV0
IGRvdWJsZVZpZXcgPSBuZXcgRmxvYXQ2NEFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAg
ICAgICBsZXQgdWludFZpZXcgPSBuZXcgVWludDMyQXJyYXkoYXJyYXlCdWZmZXIpOwotICAgICAg
ICAgICAgICAgIGRvdWJsZVZpZXdbMF0gPSBub2RlLnZhbHVlOwotICAgICAgICAgICAgICAgIHZh
bHVlcyA9IHVpbnRWaWV3OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVu
cmVjb2duaXplZCBsaXRlcmFsLiIpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IDFlZGRkMWEwMzQyOTYw
ZDRkOTVjODIxZTQ4ZDM0ZDc3YWU5NzE3MWMuLjUyZjNlMjY1ZDYyY2ExMzEzZDY1ZDNhZDM4MWE3
MmIzODY4YWNlY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKQEAgLTQwLDM2ICs0MCwyNSBAQCB0eXBlZGVmIGludCA9IGludDMyOwog
dHlwZWRlZiB1aW50ID0gdWludDMyOwogCiBuYXRpdmUgdHlwZWRlZiBmbG9hdDMyOwotbmF0aXZl
IHR5cGVkZWYgZmxvYXQ2NDsKIHR5cGVkZWYgZmxvYXQgPSBmbG9hdDMyOwotdHlwZWRlZiBkb3Vi
bGUgPSBmbG9hdDY0OwogCiBuYXRpdmUgb3BlcmF0b3IgaW50MzIodWludDMyKTsKIG5hdGl2ZSBv
cGVyYXRvciBpbnQzMih1aW50OCk7CiBuYXRpdmUgb3BlcmF0b3IgaW50MzIoZmxvYXQpOwotbmF0
aXZlIG9wZXJhdG9yIGludDMyKGRvdWJsZSk7CiBuYXRpdmUgb3BlcmF0b3IgdWludDMyKGludDMy
KTsKIG5hdGl2ZSBvcGVyYXRvciB1aW50MzIodWludDgpOwogbmF0aXZlIG9wZXJhdG9yIHVpbnQz
MihmbG9hdCk7Ci1uYXRpdmUgb3BlcmF0b3IgdWludDMyKGRvdWJsZSk7CiBuYXRpdmUgb3BlcmF0
b3IgdWludDgoaW50MzIpOwogbmF0aXZlIG9wZXJhdG9yIHVpbnQ4KHVpbnQzMik7CiBuYXRpdmUg
b3BlcmF0b3IgdWludDgoZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQ4KGRvdWJsZSk7CiBu
YXRpdmUgb3BlcmF0b3IgZmxvYXQoaW50MzIpOwogbmF0aXZlIG9wZXJhdG9yIGZsb2F0KHVpbnQz
Mik7CiBuYXRpdmUgb3BlcmF0b3IgZmxvYXQodWludDgpOwotbmF0aXZlIG9wZXJhdG9yIGZsb2F0
KGRvdWJsZSk7Ci1uYXRpdmUgb3BlcmF0b3IgZG91YmxlKGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRv
ciBkb3VibGUoaW50MzIpOwotbmF0aXZlIG9wZXJhdG9yIGRvdWJsZSh1aW50MzIpOwotbmF0aXZl
IG9wZXJhdG9yIGRvdWJsZSh1aW50OCk7CiAKIG5hdGl2ZSBpbnQgb3BlcmF0b3IrKGludCwgaW50
KTsKIG5hdGl2ZSB1aW50IG9wZXJhdG9yKyh1aW50LCB1aW50KTsKIHVpbnQ4IG9wZXJhdG9yKyh1
aW50OCBhLCB1aW50OCBiKSB7IHJldHVybiB1aW50OCh1aW50KGEpICsgdWludChiKSk7IH0KIG5h
dGl2ZSBmbG9hdCBvcGVyYXRvcisoZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBkb3VibGUgb3BlcmF0
b3IrKGRvdWJsZSwgZG91YmxlKTsKIGludCBvcGVyYXRvcisrKGludCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgKyAxOyB9CiB1aW50IG9wZXJhdG9yKysodWludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
KyAxOyB9CiB1aW50OCBvcGVyYXRvcisrKHVpbnQ4IHZhbHVlKSB7IHJldHVybiB2YWx1ZSArIDE7
IH0KQEAgLTc3LDcgKzY2LDYgQEAgbmF0aXZlIGludCBvcGVyYXRvci0oaW50LCBpbnQpOwogbmF0
aXZlIHVpbnQgb3BlcmF0b3ItKHVpbnQsIHVpbnQpOwogdWludDggb3BlcmF0b3ItKHVpbnQ4IGEs
IHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkgLSB1aW50KGIpKTsgfQogbmF0aXZlIGZs
b2F0IG9wZXJhdG9yLShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGRvdWJsZSBvcGVyYXRvci0oZG91
YmxlLCBkb3VibGUpOwogaW50IG9wZXJhdG9yLS0oaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSAt
IDE7IH0KIHVpbnQgb3BlcmF0b3ItLSh1aW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSAtIDE7IH0K
IHVpbnQ4IG9wZXJhdG9yLS0odWludDggdmFsdWUpIHsgcmV0dXJuIHZhbHVlIC0gMTsgfQpAQCAt
ODUsNyArNzMsNiBAQCBuYXRpdmUgaW50IG9wZXJhdG9yKihpbnQsIGludCk7CiBuYXRpdmUgdWlu
dCBvcGVyYXRvcioodWludCwgdWludCk7CiB1aW50OCBvcGVyYXRvcioodWludDggYSwgdWludDgg
YikgeyByZXR1cm4gdWludDgodWludChhKSAqIHVpbnQoYikpOyB9CiBuYXRpdmUgZmxvYXQgb3Bl
cmF0b3IqKGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgZG91YmxlIG9wZXJhdG9yKihkb3VibGUsIGRv
dWJsZSk7CiBuYXRpdmUgaW50IG9wZXJhdG9yLyhpbnQsIGludCk7CiBuYXRpdmUgdWludCBvcGVy
YXRvci8odWludCwgdWludCk7CiB1aW50OCBvcGVyYXRvci8odWludDggYSwgdWludDggYikgeyBy
ZXR1cm4gdWludDgodWludChhKSAvIHVpbnQoYikpOyB9CkBAIC0xMDgsMzMgKzk1LDI3IEBAIHVp
bnQ4IG9wZXJhdG9yfih1aW50OCB2YWx1ZSkgeyByZXR1cm4gdWludDgofnVpbnQodmFsdWUpKTsg
fQogdWludDggb3BlcmF0b3I8PCh1aW50OCBhLCB1aW50IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQo
YSkgPDwgKGIgJiA3KSk7IH0KIHVpbnQ4IG9wZXJhdG9yPj4odWludDggYSwgdWludCBiKSB7IHJl
dHVybiB1aW50OCh1aW50KGEpID4+IChiICYgNykpOyB9CiBuYXRpdmUgZmxvYXQgb3BlcmF0b3Iv
KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgZG91YmxlIG9wZXJhdG9yLyhkb3VibGUsIGRvdWJsZSk7
CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9y
PT0odWludCwgdWludCk7CiBib29sIG9wZXJhdG9yPT0odWludDggYSwgdWludDggYikgeyByZXR1
cm4gdWludChhKSA9PSB1aW50KGIpOyB9CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJv
b2wpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wg
b3BlcmF0b3I9PShkb3VibGUsIGRvdWJsZSk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcjwoaW50LCBp
bnQpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I8KHVpbnQsIHVpbnQpOwogYm9vbCBvcGVyYXRvcjwo
dWludDggYSwgdWludDggYikgeyByZXR1cm4gdWludChhKSA8IHVpbnQoYik7IH0KIG5hdGl2ZSBi
b29sIG9wZXJhdG9yPChmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I8KGRvdWJs
ZSwgZG91YmxlKTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOwogbmF0aXZlIGJv
b2wgb3BlcmF0b3I8PSh1aW50LCB1aW50KTsKIGJvb2wgb3BlcmF0b3I8PSh1aW50OCBhLCB1aW50
OCBiKSB7IHJldHVybiB1aW50KGEpIDw9IHVpbnQoYik7IH0KIG5hdGl2ZSBib29sIG9wZXJhdG9y
PD0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPD0oZG91YmxlLCBkb3VibGUp
OwogbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9y
Pih1aW50LCB1aW50KTsKIGJvb2wgb3BlcmF0b3I+KHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0dXJu
IHVpbnQoYSkgPiB1aW50KGIpOyB9CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj4oZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPihkb3VibGUsIGRvdWJsZSk7CiBuYXRpdmUgYm9vbCBv
cGVyYXRvcj49KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPj0odWludCwgdWludCk7
CiBib29sIG9wZXJhdG9yPj0odWludDggYSwgdWludDggYikgeyByZXR1cm4gdWludChhKSA+PSB1
aW50KGIpOyB9CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj49KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUg
Ym9vbCBvcGVyYXRvcj49KGRvdWJsZSwgZG91YmxlKTsKIAogYm9vbCBvcGVyYXRvciYoYm9vbCBh
LCBib29sIGIpCiB7CkBAIC0xOTYsNyArMTc3LDYgQEAgc3RydWN0IHZlYzI8VD4gewogdHlwZWRl
ZiBpbnQyID0gdmVjMjxpbnQ+OwogdHlwZWRlZiB1aW50MiA9IHZlYzI8dWludD47CiB0eXBlZGVm
IGZsb2F0MiA9IHZlYzI8ZmxvYXQ+OwotdHlwZWRlZiBkb3VibGUyID0gdmVjMjxkb3VibGU+Owog
CiBvcGVyYXRvcjxUPiB2ZWMyPFQ+KFQgeCwgVCB5KQogewpAQCAtMjI5LDcgKzIwOSw2IEBAIHN0
cnVjdCB2ZWMzPFQ+IHsKIHR5cGVkZWYgaW50MyA9IHZlYzM8aW50PjsKIHR5cGVkZWYgdWludDMg
PSB2ZWMzPHVpbnQ+OwogdHlwZWRlZiBmbG9hdDMgPSB2ZWMzPGZsb2F0PjsKLXR5cGVkZWYgZG91
YmxlMyA9IHZlYzM8ZG91YmxlPjsKIAogb3BlcmF0b3I8VD4gdmVjMzxUPihUIHgsIFQgeSwgVCB6
KQogewpAQCAtMjg0LDcgKzI2Myw2IEBAIHN0cnVjdCB2ZWM0PFQ+IHsKIHR5cGVkZWYgaW50NCA9
IHZlYzQ8aW50PjsKIHR5cGVkZWYgdWludDQgPSB2ZWM0PHVpbnQ+OwogdHlwZWRlZiBmbG9hdDQg
PSB2ZWM0PGZsb2F0PjsKLXR5cGVkZWYgZG91YmxlNCA9IHZlYzQ8ZG91YmxlPjsKIAogb3BlcmF0
b3I8VD4gdmVjNDxUPihUIHgsIFQgeSwgVCB6LCBUIHcpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggMzIwZmJhOTlkNTVjOTQ3Y2Q0ZmQwMzg1Y2FhYmI4ZTlk
ZGFmOWU5My4uYmNhZGQ1Nzc1ZGZkNTZiMDAzYjE1MjU2YzY3ODQzNWVmMzM3NzZjYyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtNDAsOCArNDAsNiBAQAogPHNj
cmlwdCBzcmM9IkNvbnZlcnRQdHJUb0FycmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iRG9XaGlsZUxvb3AuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkRvdEV4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IkRvdWJsZUxpdGVyYWwuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9IkRvdWJsZUxpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IkVBcnJheVJlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBhY2Q2ODA0YTE1
NGU2ODUwYWI2NzYyMWY2ZjQyZjU5M2QwNzA3YWJhLi5jZTMyMGU2NTg1YTNkODIwNzkxZTM5Nzcw
MDE2ZjUxOWUzYWYyOTI3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAg
LTc4LDExICs3OCw2IEBAIGZ1bmN0aW9uIG1ha2VGbG9hdChwcm9ncmFtLCB2YWx1ZSkKICAgICBy
ZXR1cm4gVHlwZWRWYWx1ZS5ib3gocHJvZ3JhbS5pbnRyaW5zaWNzLmZsb2F0LCB2YWx1ZSk7CiB9
CiAKLWZ1bmN0aW9uIG1ha2VEb3VibGUocHJvZ3JhbSwgdmFsdWUpCi17Ci0gICAgcmV0dXJuIFR5
cGVkVmFsdWUuYm94KHByb2dyYW0uaW50cmluc2ljcy5kb3VibGUsIHZhbHVlKTsKLX0KLQogZnVu
Y3Rpb24gbWFrZUVudW0ocHJvZ3JhbSwgZW51bU5hbWUsIHZhbHVlKQogewogICAgIGxldCBlbnVt
VHlwZSA9IHByb2dyYW0udHlwZXMuZ2V0KGVudW1OYW1lKTsKQEAgLTE0OSwxNCArMTQ0LDYgQEAg
ZnVuY3Rpb24gY2hlY2tGbG9hdChwcm9ncmFtLCByZXN1bHQsIGV4cGVjdGVkKQogICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIldyb25nIHJlc3VsdDogIiArIHJlc3VsdC52YWx1ZSArICIgKGV4cGVj
dGVkICIgKyBleHBlY3RlZCArICIpIik7CiB9CiAKLWZ1bmN0aW9uIGNoZWNrRG91YmxlKHByb2dy
YW0sIHJlc3VsdCwgZXhwZWN0ZWQpCi17Ci0gICAgaWYgKCFyZXN1bHQudHlwZS5lcXVhbHMocHJv
Z3JhbS5pbnRyaW5zaWNzLmRvdWJsZSkpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiV3Jvbmcg
cmVzdWx0IHR5cGU6ICIgKyByZXN1bHQudHlwZSk7Ci0gICAgaWYgKHJlc3VsdC52YWx1ZSAhPSBl
eHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQ6ICIgKyByZXN1
bHQudmFsdWUgKyAiIChleHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiKSIpOwotfQotCiBmdW5jdGlv
biBjaGVja0xleGVyVG9rZW4ocmVzdWx0LCBleHBlY3RlZEluZGV4LCBleHBlY3RlZEtpbmQsIGV4
cGVjdGVkVGV4dCkKIHsKICAgICBpZiAocmVzdWx0Ll9pbmRleCAhPSBleHBlY3RlZEluZGV4KQpA
QCAtNTkxLDcgKzU3OCw3IEBAIHRlc3RzLmJhZEFkZCA9IGZ1bmN0aW9uKCkKIAogdGVzdHMubGV4
ZXJLZXl3b3JkID0gZnVuY3Rpb24oKQogewotICAgIGxldCByZXN1bHQgPSBkb0xleCgiaWRlbnQg
Zm9yIHdoaWxlIDEyMyAxMjN1IHsgfSB7YXNkIGFzZHsgMWEzIDEuMiArIDMuNCArIDEuICsgLjIg
MS4yZCAwLmQgLjNkICYmIHx8Iik7CisgICAgbGV0IHJlc3VsdCA9IGRvTGV4KCJpZGVudCBmb3Ig
d2hpbGUgMTIzIDEyM3UgeyB9IHthc2QgYXNkeyAxYTMgMS4yICsgMy40ICsgMS4gKyAuMiAxLjJm
IDAuZiAuM2YgJiYgfHwiKTsKICAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSAyNSkKICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJMZXhlciBlbWl0dGVkIGFuIGluY29ycmVjdCBudW1iZXIgb2YgdG9r
ZW5zIChleHBlY3RlZCAyMyk6ICIgKyByZXN1bHQubGVuZ3RoKTsKICAgICBjaGVja0xleGVyVG9r
ZW4ocmVzdWx0WzBdLCAgMCwgICJpZGVudGlmaWVyIiwgICAgImlkZW50Iik7CkBAIC02MTQsOSAr
NjAxLDkgQEAgdGVzdHMubGV4ZXJLZXl3b3JkID0gZnVuY3Rpb24oKQogICAgIGNoZWNrTGV4ZXJU
b2tlbihyZXN1bHRbMTddLCA1NSwgImZsb2F0TGl0ZXJhbCIsICAiMS4iKTsKICAgICBjaGVja0xl
eGVyVG9rZW4ocmVzdWx0WzE4XSwgNTgsICJwdW5jdHVhdGlvbiIsICAgIisiKTsKICAgICBjaGVj
a0xleGVyVG9rZW4ocmVzdWx0WzE5XSwgNjAsICJmbG9hdExpdGVyYWwiLCAgIi4yIik7Ci0gICAg
Y2hlY2tMZXhlclRva2VuKHJlc3VsdFsyMF0sIDYzLCAiZmxvYXRMaXRlcmFsIiwgICIxLjJkIik7
Ci0gICAgY2hlY2tMZXhlclRva2VuKHJlc3VsdFsyMV0sIDY4LCAiZmxvYXRMaXRlcmFsIiwgICIw
LmQiKTsKLSAgICBjaGVja0xleGVyVG9rZW4ocmVzdWx0WzIyXSwgNzIsICJmbG9hdExpdGVyYWwi
LCAgIi4zZCIpOworICAgIGNoZWNrTGV4ZXJUb2tlbihyZXN1bHRbMjBdLCA2MywgImZsb2F0TGl0
ZXJhbCIsICAiMS4yZiIpOworICAgIGNoZWNrTGV4ZXJUb2tlbihyZXN1bHRbMjFdLCA2OCwgImZs
b2F0TGl0ZXJhbCIsICAiMC5mIik7CisgICAgY2hlY2tMZXhlclRva2VuKHJlc3VsdFsyMl0sIDcy
LCAiZmxvYXRMaXRlcmFsIiwgICIuM2YiKTsKICAgICBjaGVja0xleGVyVG9rZW4ocmVzdWx0WzIz
XSwgNzYsICJwdW5jdHVhdGlvbiIsICAgIiYmIik7CiAgICAgY2hlY2tMZXhlclRva2VuKHJlc3Vs
dFsyNF0sIDc5LCAicHVuY3R1YXRpb24iLCAgICJ8fCIpOwogfQpAQCAtOTQzLDkgKzkzMCw5IEBA
IHRlc3RzLnJldHVybkludExpdGVyYWxVaW50ID0gZnVuY3Rpb24oKQogICAgIGNoZWNrTnVtYmVy
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtdKSwgNDIpOwogfQog
Ci10ZXN0cy5yZXR1cm5JbnRMaXRlcmFsRG91YmxlID0gZnVuY3Rpb24oKQordGVzdHMucmV0dXJu
SW50TGl0ZXJhbEZsb2F0ID0gZnVuY3Rpb24oKQogewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KCJkb3VibGUgZm9vKCkgeyByZXR1cm4gNDI7IH0iKTsKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cCgiZmxvYXQgZm9vKCkgeyByZXR1cm4gNDI7IH0iKTsKICAgICBjaGVja051bWJlcihwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbXSksIDQyKTsKIH0KIApAQCAtOTYz
LDEwICs5NTAsMTAgQEAgdGVzdHMuYmFkSW50TGl0ZXJhbEZvclVpbnQgPSBmdW5jdGlvbigpCiAg
ICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKTsKIH0KIAotdGVzdHMuYmFk
SW50TGl0ZXJhbEZvckRvdWJsZSA9IGZ1bmN0aW9uKCkKK3Rlc3RzLmJhZEludExpdGVyYWxGb3JG
bG9hdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBjaGVja0ZhaWwoCi0gICAgICAgICgpID0+IGRvUHJl
cCgidm9pZCBmb28oKSB7IGRvdWJsZSB4ID0gNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDsgfSIpLAorICAgICAgICAoKSA9PiBkb1ByZXAoInZvaWQgZm9vKCkgeyBmbG9hdCB4
ID0gNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDsgfSIpLAogICAgICAgICAo
ZSkgPT4gZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcik7CiB9CiAKQEAgLTE1MzAsNyArMTUxNyw3
IEBAIHRlc3RzLmludE92ZXJsb2FkUmVzb2x1dGlvbiA9IGZ1bmN0aW9uKCkKICAgICBsZXQgcHJv
Z3JhbSA9IGRvUHJlcChgCiAgICAgICAgIGludCBmb28oaW50KSB7IHJldHVybiAxOyB9CiAgICAg
ICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQotICAgICAgICBpbnQgZm9vKGRvdWJsZSkg
eyByZXR1cm4gMzsgfQorICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVybiAzOyB9CiAgICAg
ICAgIGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9CiAgICAgYCk7CiAgICAgY2hlY2tJbnQo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbXSwgW10pLCAxKTsKQEAgLTE1
MzksNyArMTUyNiw3IEBAIHRlc3RzLmludE92ZXJsb2FkUmVzb2x1dGlvbiA9IGZ1bmN0aW9uKCkK
IHRlc3RzLmludE92ZXJsb2FkUmVzb2x1dGlvblJldmVyc2VPcmRlciA9IGZ1bmN0aW9uKCkKIHsK
ICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28oZG91YmxlKSB7IHJl
dHVybiAzOyB9CisgICAgICAgIGludCBmb28oZmxvYXQpIHsgcmV0dXJuIDM7IH0KICAgICAgICAg
aW50IGZvbyh1aW50KSB7IHJldHVybiAyOyB9CiAgICAgICAgIGludCBmb28oaW50KSB7IHJldHVy
biAxOyB9CiAgICAgICAgIGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9CkBAIC0yNjc0LDcg
KzI2NjEsNyBAQCB0ZXN0cy5zaW1wbGVMZW5ndGggPSBmdW5jdGlvbigpCiAgICAgbGV0IHByb2dy
YW0gPSBkb1ByZXAoYAogICAgICAgICB1aW50IGZvbygpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGRvdWJsZVs3NTRdIGFycmF5OworICAgICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKICAgICAg
ICAgICAgIHJldHVybiAoQGFycmF5KS5sZW5ndGg7CiAgICAgICAgIH0KICAgICBgKTsKQEAgLTI2
ODYsNyArMjY3Myw3IEBAIHRlc3RzLm5vbkFycmF5UmVmQXJyYXlMZW5ndGhTdWNjZWVkID0gZnVu
Y3Rpb24oKQogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgdWludCBmb28oKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGVbNzU0XSBhcnJheTsKKyAgICAgICAgICAgIGZs
b2F0Wzc1NF0gYXJyYXk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXkubGVuZ3RoOwogICAgICAg
ICB9CiAgICAgYCk7CkBAIC0yNzQ4LDcgKzI3MzUsNyBAQCB0ZXN0cy5hc3NpZ25MZW5ndGggPSBm
dW5jdGlvbigpCiAgICAgICAgICgpID0+IGRvUHJlcChgCiAgICAgICAgICAgICB2b2lkIGZvbygp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZG91YmxlWzc1NF0gYXJyYXk7CisgICAg
ICAgICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKICAgICAgICAgICAgICAgICAoQGFycmF5KS5s
ZW5ndGggPSA0MjsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCkBAIC0yNzU5LDEzICsyNzQ2
LDEzIEBAIHRlc3RzLmFzc2lnbkxlbmd0aEhlbHBlciA9IGZ1bmN0aW9uKCkKIHsKICAgICBjaGVj
a0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICB2b2lkIGJhcih0aHJl
YWQgZG91YmxlW10gYXJyYXkpCisgICAgICAgICAgICB2b2lkIGJhcih0aHJlYWQgZmxvYXRbXSBh
cnJheSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhcnJheS5sZW5ndGggPSA0MjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZvaWQgZm9vKCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBkb3VibGVbNzU0XSBhcnJheTsKKyAgICAgICAgICAgICAgICBmbG9hdFs3
NTRdIGFycmF5OwogICAgICAgICAgICAgICAgIGJhcihAYXJyYXkpOwogICAgICAgICAgICAgfQog
ICAgICAgICBgKSwKQEAgLTM1ODgsNyArMzU3NSw3IEBAIHRlc3RzLmZsb2F0TWF0aCA9IGZ1bmN0
aW9uKCkKICAgICAgICAgfQogICAgICAgICBib29sIGZvbzUoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gNDIuNWQgPT0gNDIuNWQ7CisgICAgICAgICAgICByZXR1cm4gNDIuNWYgPT0g
NDIuNWY7CiAgICAgICAgIH0KICAgICAgICAgZmxvYXQgYmFyKGZsb2F0IHgpCiAgICAgICAgIHsK
QEAgLTM2MDIsMTAgKzM1ODksNiBAQCB0ZXN0cy5mbG9hdE1hdGggPSBmdW5jdGlvbigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBiYXIoNy41Zik7CiAgICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vOCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiYXIoNy41ZCk7Ci0g
ICAgICAgIH0KICAgICAgICAgZmxvYXQgZm9vOSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBmbG9hdCg3LjUpOwpAQCAtMzYxNCwyNCArMzU5NywxNSBAQCB0ZXN0cy5mbG9hdE1hdGgg
PSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmbG9hdCg3LjVmKTsK
ICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBmbG9hdCg3LjVkKTsKLSAgICAgICAgfQogICAgICAgICBmbG9hdCBmb28xMigpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmbG9hdCg3KTsKICAgICAgICAgfQogICAgICAg
ICBmbG9hdCBmb28xMygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSB4ID0gNy41ZDsK
KyAgICAgICAgICAgIGZsb2F0IHggPSA3LjVmOwogICAgICAgICAgICAgcmV0dXJuIGZsb2F0KHgp
OwogICAgICAgICB9Ci0gICAgICAgIGRvdWJsZSBmb28xNCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGRvdWJsZSB4ID0gNy41ZjsKLSAgICAgICAgICAgIHJldHVybiBkb3VibGUoeCk7Ci0gICAg
ICAgIH0KICAgICBgKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbXSwgW10pLCB0cnVlKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28yIiwgW10sIFtdKSwgdHJ1ZSk7CkBAIC0zNjQwLDEzICszNjE0
LDEzIEBAIHRlc3RzLmZsb2F0TWF0aCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0Jvb2wocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb281IiwgW10sIFtdKSwgdHJ1ZSk7CiAgICAgY2hl
Y2tGbG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzYiLCBbXSwgW10pLCA3
LjUpOwogICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb283
IiwgW10sIFtdKSwgNy41KTsKLSAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vOCIsIFtdLCBbXSksIDcuNSk7CisgICAgLy8gY2hlY2tGbG9hdChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzgiLCBbXSwgW10pLCA3LjUpOwogICAgIGNoZWNr
RmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb285IiwgW10sIFtdKSwgNy41
KTsKICAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTAi
LCBbXSwgW10pLCA3LjUpOwotICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28xMSIsIFtdLCBbXSksIDcuNSk7CisgICAgLy8gY2hlY2tGbG9hdChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzExIiwgW10sIFtdKSwgNy41KTsKICAgICBjaGVj
a0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTIiLCBbXSwgW10pLCA3
KTsKICAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTMi
LCBbXSwgW10pLCA3LjUpOwotICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vMTQiLCBbXSwgW10pLCA3LjUpOworICAgIC8vIGNoZWNrRG91YmxlKHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTQiLCBbXSwgW10pLCA3LjUpOwogICAgIGNo
ZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKICAgICAgICAgICAgIGludCBiYXIoaW50
IHgpCkBAIC0zNjY3LDcgKzM2NDEsNyBAQCB0ZXN0cy5mbG9hdE1hdGggPSBmdW5jdGlvbigpCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgZm9vKCkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBiYXIoNC5kKTsKKyAgICAgICAgICAgICAgICBiYXIoNC5mKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgYCksCiAgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJv
cik7CkBAIC0zNzAzLDcgKzM2NzcsNyBAQCB0ZXN0cy5mbG9hdE1hdGggPSBmdW5jdGlvbigpCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgZm9vKCkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBiYXIoNC5kKTsKKyAgICAgICAgICAgICAgICBiYXIoNC5mKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgYCksCiAgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJv
cik7CkBAIC0zNzE5LDQwICszNjkzLDYgQEAgdGVzdHMuZmxvYXRNYXRoID0gZnVuY3Rpb24oKQog
ICAgICAgICAgICAgfQogICAgICAgICBgKSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBX
VHlwZUVycm9yKTsKLSAgICBjaGVja0ZhaWwoCi0gICAgICAgICgpID0+IGRvUHJlcChgCi0gICAg
ICAgICAgICBmbG9hdCBiYXIoZmxvYXQgeCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZm9vKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBiYXIoMTY3NzcyMTcuZCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwot
ICAgIGNoZWNrRmFpbCgKLSAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIGZsb2F0
IGJhcihmbG9hdCB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZmxvYXQgZm9vKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBkb3VibGUgeCA9IDcuOwotICAgICAgICAgICAgICAgIHJldHVybiBiYXIo
eCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0YW5j
ZW9mIFdUeXBlRXJyb3IpOwotICAgIGNoZWNrRmFpbCgKLSAgICAgICAgKCkgPT4gZG9QcmVwKGAK
LSAgICAgICAgICAgIGZsb2F0IGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZG91YmxlIHggPSA3LjsKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiB9
CiAKIHRlc3RzLmdlbmVyaWNDYXN0SW5mZXIgPSBmdW5jdGlvbigpCkBAIC00MTI5LDQ0ICs0MDY5
LDYgQEAgdGVzdHMuYnVpbHRpblZlY3RvcnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBmbG9h
dDMgYyA9IGZsb2F0MygzLiwgNC4sIDYuKTsKICAgICAgICAgICAgIHJldHVybiBiID09IGM7CiAg
ICAgICAgIH0KLSAgICAgICAgZG91YmxlIGZvb2QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
b3VibGUyIGEgPSBkb3VibGUyKDMuLCA0Lik7Ci0gICAgICAgICAgICByZXR1cm4gYVswXTsKLSAg
ICAgICAgfQotICAgICAgICBkb3VibGUgZm9vZDIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
b3VibGUyIGEgPSBkb3VibGUyKDMuLCA0Lik7Ci0gICAgICAgICAgICBkb3VibGUzIGIgPSBkb3Vi
bGUzKGEsIDUuKTsKLSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAg
IGRvdWJsZSBmb29kMygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZTMgYSA9IGRvdWJs
ZTMoMy4sIDQuLCA1Lik7Ci0gICAgICAgICAgICBkb3VibGU0IGIgPSBkb3VibGU0KDYuLCBhKTsK
LSAgICAgICAgICAgIHJldHVybiBiWzFdOwotICAgICAgICB9Ci0gICAgICAgIGRvdWJsZSBmb29k
NCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZTIgYSA9IGRvdWJsZTIoMy4sIDQuKTsK
LSAgICAgICAgICAgIGRvdWJsZTIgYiA9IGRvdWJsZTIoNS4sIDYuKTsKLSAgICAgICAgICAgIGRv
dWJsZTQgYyA9IGRvdWJsZTQoYSwgYik7Ci0gICAgICAgICAgICByZXR1cm4gY1syXTsKLSAgICAg
ICAgfQotICAgICAgICBib29sIGZvb2Q1KCkKLSAgICAgICAgewotICAgICAgICAgICAgZG91Ymxl
NCBhID0gZG91YmxlNCgzLiwgNC4sIDUuLCA2Lik7Ci0gICAgICAgICAgICBkb3VibGUyIGIgPSBk
b3VibGUyKDQuLCA1Lik7Ci0gICAgICAgICAgICBkb3VibGU0IGMgPSBkb3VibGU0KDMuLCBiLCA2
Lik7Ci0gICAgICAgICAgICByZXR1cm4gYSA9PSBjOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wg
Zm9vZDYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUyIGEgPSBkb3VibGUyKDQuLCA1
Lik7Ci0gICAgICAgICAgICBkb3VibGUzIGIgPSBkb3VibGUzKDMuLCBhKTsKLSAgICAgICAgICAg
IGRvdWJsZTMgYyA9IGRvdWJsZTMoMy4sIDQuLCA2Lik7Ci0gICAgICAgICAgICByZXR1cm4gYiA9
PSBjOwotICAgICAgICB9CiAgICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW10pLCAzKTsKICAgICBjaGVja0ludChwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSwgW10pLCA0KTsKQEAgLTQxODYsMTIgKzQw
ODgsNiBAQCB0ZXN0cy5idWlsdGluVmVjdG9ycyA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0Zsb2F0
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZjQiLCBbXSwgW10pLCA1KTsKICAg
ICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNSIsIFtdLCBb
XSksIHRydWUpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvb2Y2IiwgW10sIFtdKSwgZmFsc2UpOwotICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vZCIsIFtdLCBbXSksIDMpOwotICAgIGNoZWNrRG91YmxlKHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDIiLCBbXSwgW10pLCA0KTsKLSAgICBj
aGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2QzIiwgW10sIFtd
KSwgMyk7Ci0gICAgY2hlY2tEb3VibGUocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b29kNCIsIFtdLCBbXSksIDUpOwotICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvb2Q1IiwgW10sIFtdKSwgdHJ1ZSk7Ci0gICAgY2hlY2tCb29sKHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDYiLCBbXSwgW10pLCBmYWxzZSk7CiB9CiAKIHRl
c3RzLmluc3RhbnRpYXRlU3RydWN0SW5TdHJ1Y3QgPSBmdW5jdGlvbigpCkBAIC00OTU0LDE4ICs0
ODUwLDE4IEBAIHRlc3RzLnNpbXBsZVN3aXRjaCA9IGZ1bmN0aW9uKCkKIAogdGVzdHMuZXhoYXVz
dGl2ZVVpbnQ4U3dpdGNoID0gZnVuY3Rpb24oKQogewotICAgIGxldCB0ZXh0ID0gImRvdWJsZSBm
b28odWludDggeCkgeyBzd2l0Y2ggKHVpbnQ4KHgpKSB7IgorICAgIGxldCB0ZXh0ID0gImZsb2F0
IGZvbyh1aW50OCB4KSB7IHN3aXRjaCAodWludDgoeCkpIHsiCiAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPD0gMHhmZjsgKytpKQogICAgICAgICB0ZXh0ICs9ICJjYXNlICIgKyBpICsgIjogcmV0dXJu
ICIgKyBpICogMS41ICsgIjsiOwogICAgIHRleHQgKz0gIn0gfSI7CiAgICAgbGV0IHByb2dyYW0g
PSBkb1ByZXAodGV4dCk7CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAweGZmOyArK2kpCi0gICAg
ICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10s
IFttYWtlVWludDgocHJvZ3JhbSwgaSldKSwgaSAqIDEuNSk7CisgICAgICAgIGNoZWNrRmxvYXQo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVaW50OChwcm9n
cmFtLCBpKV0pLCBpICogMS41KTsKIH0KIAogdGVzdHMubm90UXVpdGVFeGhhdXN0aXZlVWludDhT
d2l0Y2ggPSBmdW5jdGlvbigpCiB7Ci0gICAgbGV0IHRleHQgPSAiZG91YmxlIGZvbyh1aW50OCB4
KSB7IHN3aXRjaCAodWludDgoeCkpIHsiCisgICAgbGV0IHRleHQgPSAiZmxvYXQgZm9vKHVpbnQ4
IHgpIHsgc3dpdGNoICh1aW50OCh4KSkgeyIKICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZl
OyArK2kpCiAgICAgICAgIHRleHQgKz0gImNhc2UgIiArIGkgKyAiOiByZXR1cm4gIiArIGkgKiAx
LjUgKyAiOyI7CiAgICAgdGV4dCArPSAifSB9IjsKQEAgLTQ5NzQsMTQgKzQ4NzAsMTQgQEAgdGVz
dHMubm90UXVpdGVFeGhhdXN0aXZlVWludDhTd2l0Y2ggPSBmdW5jdGlvbigpCiAKIHRlc3RzLm5v
dFF1aXRlRXhoYXVzdGl2ZVVpbnQ4U3dpdGNoV2l0aERlZmF1bHQgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgbGV0IHRleHQgPSAiZG91YmxlIGZvbyh1aW50OCB4KSB7IHN3aXRjaCAodWludDgoeCkpIHsi
CisgICAgbGV0IHRleHQgPSAiZmxvYXQgZm9vKHVpbnQ4IHgpIHsgc3dpdGNoICh1aW50OCh4KSkg
eyIKICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZlOyArK2kpCiAgICAgICAgIHRleHQgKz0g
ImNhc2UgIiArIGkgKyAiOiByZXR1cm4gIiArIGkgKiAxLjUgKyAiOyI7CiAgICAgdGV4dCArPSAi
ZGVmYXVsdDogcmV0dXJuICIgKyAweGZmICogMS41ICsgIjsiOwogICAgIHRleHQgKz0gIn0gfSI7
CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAodGV4dCk7CiAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAweGZmOyArK2kpCi0gICAgICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgaSldKSwgaSAqIDEuNSk7Cisg
ICAgICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
XSwgW21ha2VVaW50OChwcm9ncmFtLCBpKV0pLCBpICogMS41KTsKIH0KIAogdGVzdHMuc3dpdGNo
RmFsbFRocm91Z2ggPSBmdW5jdGlvbigpCkBAIC01MzEwLDcgKzUyMDYsNyBAQCB0ZXN0cy5zZXR0
ZXJXaXRoTWlzbWF0Y2hlZFR5cGUgPSBmdW5jdGlvbigpCiB7CiAgICAgY2hlY2tGYWlsKAogICAg
ICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgZG91YmxlIG9wZXJhdG9yLmZvbyhpbnQp
CisgICAgICAgICAgICBmbG9hdCBvcGVyYXRvci5mb28oaW50KQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIHJldHVybiA1LjQzOwogICAgICAgICAgICAgfQpAQCAtNTQwMyw5ICs1Mjk5
LDkgQEAgdGVzdHMub3BlcmF0b3JDYXN0V2l0aFR5cGVWYXJpYWJsZUluZmVycmVkRnJvbVJldHVy
blR5cGUgPSBmdW5jdGlvbigpCiAgICAgICAgIHByb3RvY29sIEJhcmFibGUgewogICAgICAgICAg
ICAgdm9pZCBiYXIodGhyZWFkIEJhcmFibGUqLCBpbnQpOwogICAgICAgICB9Ci0gICAgICAgIHZv
aWQgYmFyKHRocmVhZCBkb3VibGUqIHJlc3VsdCwgaW50IHZhbHVlKQorICAgICAgICB2b2lkIGJh
cih0aHJlYWQgZmxvYXQqIHJlc3VsdCwgaW50IHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICAqcmVzdWx0ID0gZG91YmxlKHZhbHVlKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBmbG9hdCh2
YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgb3BlcmF0b3I8VDpCYXJhYmxlPiBUKEZvbyBmb28p
CiAgICAgICAgIHsKQEAgLTU0MTcsNyArNTMxMyw3IEBAIHRlc3RzLm9wZXJhdG9yQ2FzdFdpdGhU
eXBlVmFyaWFibGVJbmZlcnJlZEZyb21SZXR1cm5UeXBlID0gZnVuY3Rpb24oKQogICAgICAgICB7
CiAgICAgICAgICAgICBGb28gZm9vOwogICAgICAgICAgICAgZm9vLnggPSA3NTsKLSAgICAgICAg
ICAgIGRvdWJsZSB4ID0gZG91YmxlKGZvbyk7CisgICAgICAgICAgICBmbG9hdCB4ID0gZmxvYXQo
Zm9vKTsKICAgICAgICAgICAgIHJldHVybiBpbnQoeCAqIDEuNSk7CiAgICAgICAgIH0KICAgICBg
KTsKQEAgLTU0NTYsNyArNTM1Miw3IEBAIHRlc3RzLmluY1dyb25nVHlwZXMgPSBmdW5jdGlvbigp
CiB7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAg
aW50IG9wZXJhdG9yKysoZG91YmxlKSB7IHJldHVybiAzMjsgfQorICAgICAgICAgICAgaW50IG9w
ZXJhdG9yKysoZmxvYXQpIHsgcmV0dXJuIDMyOyB9CiAgICAgICAgIGApLAogICAgICAgICBlID0+
IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KQEAgLTU0NjUsNyArNTM2MSw3IEBAIHRlc3Rz
LmRlY1dyb25nVHlwZXMgPSBmdW5jdGlvbigpCiB7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAo
KSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0oZG91YmxlKSB7IHJldHVy
biAzMjsgfQorICAgICAgICAgICAgaW50IG9wZXJhdG9yLS0oZmxvYXQpIHsgcmV0dXJuIDMyOyB9
CiAgICAgICAgIGApLAogICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0K
QEAgLTYwNTYsNyArNTk1Miw3IEBAIHRlc3RzLmluZGV4U2V0dGVyV2l0aE1pc21hdGNoZWRUeXBl
ID0gZnVuY3Rpb24oKQogewogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAK
LSAgICAgICAgICAgIGRvdWJsZSBvcGVyYXRvcltdKGludCwgdWludCkKKyAgICAgICAgICAgIGZs
b2F0IG9wZXJhdG9yW10oaW50LCB1aW50KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiA1LjQzOwogICAgICAgICAgICAgfQpAQCAtNjI0Nyw3ICs2MTQzLDcgQEAgdGVzdHMu
aW5kZXhBbmRlcldpdGhBcnJheVJlZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgc3RydWN0IEZvbyB7
CiAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgfQotICAgICAgICB0aHJlYWQgaW50KiBvcGVy
YXRvciZbXSh0aHJlYWQgRm9vW10gYXJyYXksIGRvdWJsZSBpbmRleCkKKyAgICAgICAgdGhyZWFk
IGludCogb3BlcmF0b3ImW10odGhyZWFkIEZvb1tdIGFycmF5LCBmbG9hdCBpbmRleCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuICZhcnJheVt1aW50KGluZGV4ICsgMSldLng7CiAgICAg
ICAgIH0KQEAgLTYyNTUsNyArNjE1MSw3IEBAIHRlc3RzLmluZGV4QW5kZXJXaXRoQXJyYXlSZWYg
PSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIEZvbyB4OwogICAgICAgICAgICAg
eC54ID0gMTM7Ci0gICAgICAgICAgICByZXR1cm4gKEB4KVtkb3VibGUoLTEpXTsKKyAgICAgICAg
ICAgIHJldHVybiAoQHgpW2Zsb2F0KC0xKV07CiAgICAgICAgIH0KICAgICBgKTsKICAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbXSksIDEzKTsK
QEAgLTYzNDQsNyArNjI0MCw3IEBAIHRlc3RzLmluZGV4U2V0dGVyV2l0aE1pc21hdGNoZWRUeXBl
SW5Qcm90b2NvbCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRv
UHJlcChgCiAgICAgICAgICAgICBwcm90b2NvbCBGb28gewotICAgICAgICAgICAgICAgIGRvdWJs
ZSBvcGVyYXRvcltdKEZvbywgdWludCk7CisgICAgICAgICAgICAgICAgZmxvYXQgb3BlcmF0b3Jb
XShGb28sIHVpbnQpOwogICAgICAgICAgICAgICAgIEZvbyBvcGVyYXRvcltdPShGb28sIHVpbnQs
IGludCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdHJ1Y3QgQmFyIHsgfQpAQCAtNjU3
NiwxNCArNjQ3MiwxNCBAQCB0ZXN0cy5pbmRleEFuZGVyV2l0aEFycmF5UmVmSW5Qcm90b2NvbCA9
IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIHByb3Rv
Y29sIEZvbyB7Ci0gICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJlYWQgRm9v
W10gYXJyYXksIGRvdWJsZSBpbmRleCk7CisgICAgICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRv
ciZbXSh0aHJlYWQgRm9vW10gYXJyYXksIGZsb2F0IGluZGV4KTsKICAgICAgICAgfQogICAgICAg
ICBpbnQgYmFyPFQ6Rm9vPih0aHJlYWQgVFtdIHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiB4WzEuNV07CiAgICAgICAgIH0KICAgICAgICAgc3RydWN0IEJhciB7IH0KLSAgICAgICAg
dGhyZWFkIGludCogb3BlcmF0b3ImW10odGhyZWFkIEJhcltdLCBkb3VibGUpCisgICAgICAgIHRo
cmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBCYXJbXSwgZmxvYXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGludCByZXN1bHQgPSAxMjM0OwogICAgICAgICAgICAgcmV0dXJuICZyZXN1bHQ7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAppbmRleCAzYTdlOTQ4YmU2
N2QwYjVjMDViYjE5YzJlZjE0MzA5YTExOTczOGU0Li4zMzE4M2I5M2UxMDkwNTlhY2M1OTFmYWUy
YmJkMTU4YWVkZWI1NDFiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9pbmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0
bWwKQEAgLTQwLDggKzQwLDYgQEAKIDxzY3JpcHQgc3JjPSJDb252ZXJ0UHRyVG9BcnJheVJlZkV4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkRvV2hpbGVMb29wLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJEb3RFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJEb3VibGVMaXRlcmFsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJEb3VibGVMaXRl
cmFsVHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRGVyZWZlcmVuY2VFeHByZXNzaW9u
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlSZWYuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkVCdWZmZXIuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345726</attachid>
            <date>2018-07-24 16:41:05 -0700</date>
            <delta_ts>2018-07-24 17:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187977-20180724164105.patch</filename>
            <type>text/plain</type>
            <size>38928</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTc5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODA0MzllMDM5OWY5ODhmYzRlZDFhZDBjNDk2YmNlMzFi
Njk4ZWUyOS4uYjNjMjMzNjU0MjFlYmI4NDU4N2M1MjJmODI5NGMwNmQ5ZDZmZjcxYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE4LTA3LTI0ICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIHRoZSBkb3VibGUgdHlwZSBmcm9tIFdITFNMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0FsbC5qczogUmVtb3ZlZCBEb3VibGVMaXRlcmFsLmpzIGFuZCBEb3Vi
bGVMaXRlcmFsVHlwZS5qcyBpbmNsdWRlLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0RvdWJsZUxpdGVyYWwuanM6IFJlbW92ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRG91YmxlTGl0ZXJhbFR5cGUuanM6IFJlbW92ZWQuCisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczogUmVtb3ZlZCBkb3VibGUgYXJpdGhtZXRp
YyBmdW5jdGlvbnMuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6
CisgICAgICAgIChwYXJzZVRlcm0pOiBSZW1vdmVkIHBhcnNpbmcgb2YgZG91YmxlIGxpdGVyYWxz
LgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6IFJlbW92ZWQg
RG91YmxlTGl0ZXJhbC5qcyBhbmQgRG91YmxlTGl0ZXJhbFR5cGUuanMgaW5jbHVkZS4KKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVkNvZGVnZW4uanM6IFJlbW92ZWQgZG91
YmxlIHR5cGUgbG9naWMuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRh
cmRMaWJyYXJ5LmpzOiBSZW1vdmVkIGRvdWJsZSB0eXBlIGRlY2xhcmF0aW9ucy4KKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6IFJlbW92ZWQgRG91YmxlTGl0ZXJh
bC5qcyBhbmQgRG91YmxlTGl0ZXJhbFR5cGUuanMgaW5jbHVkZS4KKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOiBSZW1vdmVkIHRlc3RzIHRoYXQgdGVzdCBkb3VibGVz
IG9yIHBvcnRlZCB0aGVtIHRvIHVzZSBmbG9hdHMuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbDogUmVtb3ZlZCBEb3VibGVMaXRlcmFsLmpzIGFuZCBEb3VibGVM
aXRlcmFsVHlwZS5qcyBpbmNsdWRlLgorCiAyMDE4LTA3LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlLWNvbnN0cnVjdGluZyBOZXZlckRlc3Ryb3ll
ZCBzaG91bGQgbW92ZSBjb25zdHJ1Y3QgdW5kZXJseWluZyBvYmplY3QgaW5zdGVhZCBvZiBjb3B5
IGNvbnN0cnVjdGluZyBpdApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IDMw
YTBiMDk5NjU1Y2I1MGI5MmFjZDE2ZGI3NDUxZTViMzk3YmUzMzIuLjE1ZGQ3Y2NhYjk0NjkyYTMy
YWNkMjdiOWRhYzk2YzhhOGY1NWQ2NTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwu
anMKQEAgLTY0LDggKzY0LDYgQEAgbG9hZCgiQ29udmVydFB0clRvQXJyYXlSZWZFeHByZXNzaW9u
LmpzIik7CiBsb2FkKCJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkRvV2hpbGVM
b29wLmpzIik7CiBsb2FkKCJEb3RFeHByZXNzaW9uLmpzIik7Ci1sb2FkKCJEb3VibGVMaXRlcmFs
LmpzIik7Ci1sb2FkKCJEb3VibGVMaXRlcmFsVHlwZS5qcyIpOwogbG9hZCgiRUFycmF5UmVmLmpz
Iik7CiBsb2FkKCJFQnVmZmVyLmpzIik7CiBsb2FkKCJFQnVmZmVyQnVpbGRlci5qcyIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRG91YmxlTGl0ZXJhbC5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0RvdWJsZUxpdGVyYWwuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZDk4MTMwNmViOWUwYjM0ZjNmYTU1ZGE0YWY5YzA3NjQ3
MGZkZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRG91YmxlTGl0ZXJhbC5qcworKysgL2Rldi9udWxs
CkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotbGV0IERvdWJsZUxpdGVyYWwgPSBjcmVhdGVMaXRlcmFs
KHsKLSAgICBsaXRlcmFsQ2xhc3NOYW1lOiAiRG91YmxlTGl0ZXJhbCIsCi0gICAgcHJlZmVycmVk
VHlwZU5hbWU6ICJkb3VibGUiLAotICAgIAotICAgIG5lZ0NvbnN0ZXhwcihvcmlnaW4pCi0gICAg
ewotICAgICAgICByZXR1cm4gbmV3IEludExpdGVyYWwob3JpZ2luLCAtdGhpcy52YWx1ZSk7Ci0g
ICAgfSwKLSAgICAKLSAgICBjcmVhdGVUeXBlKG9yaWdpbiwgdmFsdWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gbmV3IERvdWJsZUxpdGVyYWxUeXBlKG9yaWdpbiwgdmFsdWUpOwotICAgIH0KLX0p
OwotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Eb3VibGVMaXRl
cmFsVHlwZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0RvdWJsZUxpdGVyYWxU
eXBlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDQyZmI1YzEwNTA0OWUzMTBm
NjlmMWVhNjBiODczYjAyZTlhNmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0RvdWJsZUxpdGVyYWxU
eXBlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotInVzZSBzdHJpY3QiOwotCi1sZXQgRG91YmxlTGl0
ZXJhbFR5cGUgPSBjcmVhdGVMaXRlcmFsVHlwZSh7Ci0gICAgcHJlZmVycmVkVHlwZU5hbWU6ICJk
b3VibGUiLAotICAgIAotICAgIHZlcmlmeUFzQXJndW1lbnQodW5pZmljYXRpb25Db250ZXh0KQot
ICAgIHsKLSAgICAgICAgbGV0IHJlYWxUaGlzID0gdW5pZmljYXRpb25Db250ZXh0LmZpbmQodGhp
cyk7Ci0gICAgICAgIGlmICghcmVhbFRoaXMuaXNGbG9hdGluZykKLSAgICAgICAgICAgIHJldHVy
biB7cmVzdWx0OiBmYWxzZSwgcmVhc29uOiAiQ2Fubm90IHVzZSBkb3VibGUgbGl0ZXJhbCB3aXRo
IG5vbi1mbG9hdGluZyB0eXBlICIgKyByZWFsVGhpc307Ci0gICAgICAgIGlmICghcmVhbFRoaXMu
Y2FuUmVwcmVzZW50KHRoaXMudmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IGZh
bHNlLCByZWFzb246ICJGbG9hdCBsaXRlcmFsICIgKyB0aGlzLnZhbHVlICsgIiBkb2VzIG5vdCBm
aXQgaW4gdHlwZSAiICsgcmVhbFRoaXN9OwotICAgICAgICByZXR1cm4ge3Jlc3VsdDogdHJ1ZX07
Ci0gICAgfQotfSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9J
bnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5q
cwppbmRleCBiMWQ5MzExZTE4NGQ4M2FmOTVmYjcxNzlkZjY3ZDc5OTBkNDlmZTZlLi45MzNkZmUw
MTEzMDJiMGZiYzgzNDQ5OTRhMWE1YzFmNzdjMDUyYTZmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTEzOSwyMyArMTM5LDYgQEAgY2xhc3MgSW50
cmluc2ljcyB7CiAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFs
ID0gdmFsdWUgPT4gdmFsdWU7CiAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21V
aW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwogICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0
VmFsdWVGcm9tRmxvYXRMaXRlcmFsID0gdmFsdWUgPT4gTWF0aC5mcm91bmQodmFsdWUpOwotICAg
ICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tRG91YmxlTGl0ZXJhbCA9IHZhbHVlID0+
IE1hdGguZnJvdW5kKHZhbHVlKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX21h
cC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgZmxvYXQ2NDw+IiwKLSAgICAgICAg
ICAgIHR5cGUgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuZG91YmxlID0gdHlwZTsKLSAgICAg
ICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBl
LnNpemUgPSAxOwotICAgICAgICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5j
YW5SZXByZXNlbnQgPSB2YWx1ZSA9PiB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxh
dGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAw
KTsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1
ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRl
cmFsID0gdmFsdWUgPT4gdmFsdWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZy
b21GbG9hdExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmZv
cm1hdFZhbHVlRnJvbURvdWJsZUxpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKICAgICAgICAgICAg
IH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCkBAIC0xODUsMTIgKzE2OCw2IEBAIGNsYXNz
IEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Zh
bHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgfCAwKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUg
b3BlcmF0b3I8PiBpbnQzMihkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFs
dWUubG9hZFZhbHVlKCkgfCAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAgICAg
dGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiB1aW50MzIoaW50
MzIpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtMjA5LDEyICsxODYsNiBAQCBjbGFzcyBJ
bnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1
ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUg
b3BlcmF0b3I8PiB1aW50MzIoZG91YmxlKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAg
ICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZh
bHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiB1aW50OChp
bnQzMikiLAogICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC0yMzMsMTggKzIwNCw2IEBAIGNsYXNz
IEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Zh
bHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRp
dmUgb3BlcmF0b3I8PiB1aW50OChkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3go
dmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAg
ICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiBmbG9h
dChkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUu
bG9hZFZhbHVlKCkpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAgICAgdGhpcy5f
bWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3I8PiBmbG9hdChpbnQzMikiLAog
ICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC0yNjMsMzAgKzIyMiw2IEBAIGNsYXNzIEludHJpbnNp
Y3MgewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4g
RVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUg
b3BlcmF0b3I8PiBkb3VibGUoZmxvYXQpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFs
dWUubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICB0aGlz
Ll9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvcjw+IGRvdWJsZShpbnQzMiki
LAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAi
bmF0aXZlIG9wZXJhdG9yPD4gZG91YmxlKHVpbnQzMikiLAotICAgICAgICAgICAgZnVuYyA9PiB7
Ci0gICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRy
LmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCi0gICAg
ICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yPD4gZG91Ymxl
KHVpbnQ4KSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAg
ICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yKzw+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewpAQCAtMzA4LDEzICsyNDMsNiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5mcm91bmQobGVmdC5sb2FkVmFsdWUoKSArIHJpZ2h0
LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIHRoaXMu
X21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIGRvdWJsZSBvcGVyYXRvcis8Pihkb3VibGUs
ZG91YmxlKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsKLSAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+Ci0gICAgICAgICAgICAgICAgICAgIEVQ
dHIuYm94KGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIGludCBvcGVyYXRvci08PihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAg
LTMzNiwxMyArMjY0LDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KE1hdGguZnJvdW5kKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUo
KSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAot
ICAgICAgICAgICAgIm5hdGl2ZSBkb3VibGUgb3BlcmF0b3ItPD4oZG91YmxlLGRvdWJsZSkiLAot
ICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgotICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0
LmxvYWRWYWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3Bl
cmF0b3IqPD4oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC0zNjQsMTMgKzI4
NSw2IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChN
YXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAg
ICJuYXRpdmUgZG91YmxlIG9wZXJhdG9yKjw+KGRvdWJsZSxkb3VibGUpIiwKLSAgICAgICAgICAg
IGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KLSAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSAqIHJpZ2h0LmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yLzw+KGlu
dCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtNDc0LDEzICszODgsNiBAQCBjbGFz
cyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5mcm91bmQo
bGVmdC5sb2FkVmFsdWUoKSAvIHJpZ2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIGRv
dWJsZSBvcGVyYXRvci88Pihkb3VibGUsZG91YmxlKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsK
LSAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
Ci0gICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5s
b2FkVmFsdWUoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PTw+KGludCxpbnQpIiwK
ICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtNTA5LDEzICs0MTYsNiBAQCBjbGFzcyBJbnRyaW5z
aWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSBy
aWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIHRo
aXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PTw+KGRvdWJs
ZSxkb3VibGUpIiwKLSAgICAgICAgICAgIGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KLSAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGJvb2wgb3BlcmF0b3I8PD4oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CkBAIC01MzcsMTMgKzQzNyw2IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAg
ICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAg
ICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPDw+KGRvdWJsZSxkb3VibGUpIiwKLSAgICAgICAgICAg
IGZ1bmMgPT4gewotICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KLSAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9PD4o
aW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC01NjUsMTMgKzQ1OCw2IEBAIGNs
YXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAK
LSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRv
cjw9PD4oZG91YmxlLGRvdWJsZSkiLAotICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgotICAgICAgICAg
ICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj48PihpbnQsaW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKQEAgLTU5MywxMyArNDc5LDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAg
ICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiByaWdodC5sb2FkVmFs
dWUoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIHRoaXMuX21hcC5zZXQo
Ci0gICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PD4oZG91YmxlLGRvdWJsZSkiLAot
ICAgICAgICAgICAgZnVuYyA9PiB7Ci0gICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgotICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0
LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9w
ZXJhdG9yPj08PihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAgLTYyMSwxMyAr
NTAwLDYgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSBi
b29sIG9wZXJhdG9yPj08Pihkb3VibGUsZG91YmxlKSIsCi0gICAgICAgICAgICBmdW5jID0+IHsK
LSAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
Ci0gICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQu
bG9hZFZhbHVlKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAogICAgICAgICBmb3IgKGxl
dCBhZGRyZXNzU3BhY2Ugb2YgYWRkcmVzc1NwYWNlcykgewogICAgICAgICAgICAgdGhpcy5fbWFw
LnNldCgKICAgICAgICAgICAgICAgICBgbmF0aXZlIFQqICR7YWRkcmVzc1NwYWNlfSBvcGVyYXRv
ciZbXTxUPihUW10gJHthZGRyZXNzU3BhY2V9LHVpbnQpYCwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUGFyc2UuanMKaW5kZXggMTQ3NTc0NzhkODgxNmI0MDlkOTUyYjRmOTAzOGUyNWViZWI1
ZTg2OS4uNmQyYjQzMTYxNTYwMWFiOWRkM2QwOTM4ZmJmYjM4NWVlMmE0ZGFmMSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTIwMSwxOSArMjAxLDEyIEBAIGZ1bmN0
aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwg
dGV4dCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEludExpdGVyYWwodG9rZW4sIGludFZl
cnNpb24pOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50TGl0ZXJhbCh0b2tlbiwgaW50VmVy
c2lvbiA+Pj4gMCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZUtp
bmQoImRvdWJsZUxpdGVyYWwiKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgRG91YmxlTGl0ZXJh
bCh0b2tlbiwgK3Rva2VuLnRleHQpOwogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2lu
ZCgiZmxvYXRMaXRlcmFsIikpIHsKICAgICAgICAgICAgIGxldCB0ZXh0ID0gdG9rZW4udGV4dDsK
LSAgICAgICAgICAgIGxldCBkID0gdG9rZW4udGV4dC5lbmRzV2l0aCgiZCIpOwogICAgICAgICAg
ICAgbGV0IGYgPSB0b2tlbi50ZXh0LmVuZHNXaXRoKCJmIik7Ci0gICAgICAgICAgICBpZiAoZCAm
JiBmKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBjYW5ub3QgYmUg
Ym90aCBhIGRvdWJsZSBsaXRlcmFsIGFuZCBhIGZsb2F0IGxpdGVyYWwuIik7Ci0gICAgICAgICAg
ICBpZiAoZCB8fCBmKQorICAgICAgICAgICAgaWYgKGYpCiAgICAgICAgICAgICAgICAgdGV4dCA9
IHRleHQuc3Vic3RyaW5nKDAsIHRleHQubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBwYXJzZUZsb2F0KHRleHQpOwotICAgICAgICAgICAgaWYgKGQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBEb3VibGVMaXRlcmFsKHRva2VuLCB2YWx1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IEZsb2F0TGl0ZXJhbCh0b2tlbiwgTWF0aC5mcm91bmQodmFsdWUpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJ0cnVlIiwgImZhbHNlIikpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCBmYTFmNmE0MGE2NGMy
MjhmYWJhYTc1YTI1YTQ3YTZjZWJkODQxYTk3Li45M2Y2YjliOTMyZDI3MmQ3N2EzZGMzMTY3ZjUy
NWZhNDBhNjFlZDIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
UElSVi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwK
QEAgLTQ3LDggKzQ3LDYgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJDb252ZXJ0UHRyVG9BcnJh
eVJlZkV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJEb1doaWxlTG9v
cC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJEb3VibGVMaXRlcmFsLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iRG91YmxlTGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJFQXJyYXlSZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJW
Q29kZWdlbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWQ29kZWdlbi5q
cwppbmRleCAwYjU0Y2E5YTRmYzQwOGRhZTExNjhlM2E3YTBjODJkNWU4N2M3ZjljLi5iNGY1MDg1
OWE4N2FmYjYwZTU0YjM2MGM2MDU5YzRhYWM4YzIzYmNhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVkNvZGVnZW4uanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU1BJUlZDb2RlZ2VuLmpzCkBAIC0yMTQsMTQgKzIxNCw2IEBAIGZ1bmN0
aW9uIGdlbmVyYXRlU1BJUlYoc3BpcnYsIHByb2dyYW0pCiAgICAgICAgICAgICAgICAgdmFsdWVz
ID0gdWludFZpZXc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBjYXNlIHByb2dyYW0uaW50cmluc2ljcy5kb3VibGU6IHsKLSAgICAgICAgICAgICAg
ICBsZXQgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoTWF0aC5tYXgoVWludDMyQXJyYXku
QllURVNfUEVSX0VMRU1FTlQsIEZsb2F0NjRBcnJheS5CWVRFU19QRVJfRUxFTUVOVCkpOwotICAg
ICAgICAgICAgICAgIGxldCBkb3VibGVWaWV3ID0gbmV3IEZsb2F0NjRBcnJheShhcnJheUJ1ZmZl
cik7Ci0gICAgICAgICAgICAgICAgbGV0IHVpbnRWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGFycmF5
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBkb3VibGVWaWV3WzBdID0gbm9kZS52YWx1ZTsKLSAg
ICAgICAgICAgICAgICB2YWx1ZXMgPSB1aW50VmlldzsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgbGl0ZXJhbC4iKTsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwppbmRl
eCA1ZjljY2JmZjFlMjMxN2U0OGI2ZWI1OWY3YTA3YjExOWFkYmE3NjBjLi4xOTg4NzIzYzM1NDgw
ODFjNjY3ZmFjNzg2MmY0MDI2N2Y5ZjhiODU3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCkBAIC00MCwzNiArNDAsMjUgQEAgdHlwZWRl
ZiBpbnQgPSBpbnQzMjsKIHR5cGVkZWYgdWludCA9IHVpbnQzMjsKIAogbmF0aXZlIHR5cGVkZWYg
ZmxvYXQzMjsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0NjQ7CiB0eXBlZGVmIGZsb2F0ID0gZmxvYXQz
MjsKLXR5cGVkZWYgZG91YmxlID0gZmxvYXQ2NDsKIAogbmF0aXZlIG9wZXJhdG9yIGludDMyKHVp
bnQzMik7CiBuYXRpdmUgb3BlcmF0b3IgaW50MzIodWludDgpOwogbmF0aXZlIG9wZXJhdG9yIGlu
dDMyKGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciBpbnQzMihkb3VibGUpOwogbmF0aXZlIG9wZXJh
dG9yIHVpbnQzMihpbnQzMik7CiBuYXRpdmUgb3BlcmF0b3IgdWludDMyKHVpbnQ4KTsKIG5hdGl2
ZSBvcGVyYXRvciB1aW50MzIoZmxvYXQpOwotbmF0aXZlIG9wZXJhdG9yIHVpbnQzMihkb3VibGUp
OwogbmF0aXZlIG9wZXJhdG9yIHVpbnQ4KGludDMyKTsKIG5hdGl2ZSBvcGVyYXRvciB1aW50OCh1
aW50MzIpOwogbmF0aXZlIG9wZXJhdG9yIHVpbnQ4KGZsb2F0KTsKLW5hdGl2ZSBvcGVyYXRvciB1
aW50OChkb3VibGUpOwogbmF0aXZlIG9wZXJhdG9yIGZsb2F0KGludDMyKTsKIG5hdGl2ZSBvcGVy
YXRvciBmbG9hdCh1aW50MzIpOwogbmF0aXZlIG9wZXJhdG9yIGZsb2F0KHVpbnQ4KTsKLW5hdGl2
ZSBvcGVyYXRvciBmbG9hdChkb3VibGUpOwotbmF0aXZlIG9wZXJhdG9yIGRvdWJsZShmbG9hdCk7
Ci1uYXRpdmUgb3BlcmF0b3IgZG91YmxlKGludDMyKTsKLW5hdGl2ZSBvcGVyYXRvciBkb3VibGUo
dWludDMyKTsKLW5hdGl2ZSBvcGVyYXRvciBkb3VibGUodWludDgpOwogCiBuYXRpdmUgaW50IG9w
ZXJhdG9yKyhpbnQsIGludCk7CiBuYXRpdmUgdWludCBvcGVyYXRvcisodWludCwgdWludCk7CiB1
aW50OCBvcGVyYXRvcisodWludDggYSwgdWludDggYikgeyByZXR1cm4gdWludDgodWludChhKSAr
IHVpbnQoYikpOyB9CiBuYXRpdmUgZmxvYXQgb3BlcmF0b3IrKGZsb2F0LCBmbG9hdCk7Ci1uYXRp
dmUgZG91YmxlIG9wZXJhdG9yKyhkb3VibGUsIGRvdWJsZSk7CiBpbnQgb3BlcmF0b3IrKyhpbnQg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlICsgMTsgfQogdWludCBvcGVyYXRvcisrKHVpbnQgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlICsgMTsgfQogdWludDggb3BlcmF0b3IrKyh1aW50OCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgKyAxOyB9CkBAIC03Nyw3ICs2Niw2IEBAIG5hdGl2ZSBpbnQgb3BlcmF0b3It
KGludCwgaW50KTsKIG5hdGl2ZSB1aW50IG9wZXJhdG9yLSh1aW50LCB1aW50KTsKIHVpbnQ4IG9w
ZXJhdG9yLSh1aW50OCBhLCB1aW50OCBiKSB7IHJldHVybiB1aW50OCh1aW50KGEpIC0gdWludChi
KSk7IH0KIG5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBkb3Vi
bGUgb3BlcmF0b3ItKGRvdWJsZSwgZG91YmxlKTsKIGludCBvcGVyYXRvci0tKGludCB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgLSAxOyB9CiB1aW50IG9wZXJhdG9yLS0odWludCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgLSAxOyB9CiB1aW50OCBvcGVyYXRvci0tKHVpbnQ4IHZhbHVlKSB7IHJldHVybiB2
YWx1ZSAtIDE7IH0KQEAgLTg1LDcgKzczLDYgQEAgbmF0aXZlIGludCBvcGVyYXRvciooaW50LCBp
bnQpOwogbmF0aXZlIHVpbnQgb3BlcmF0b3IqKHVpbnQsIHVpbnQpOwogdWludDggb3BlcmF0b3Iq
KHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkgKiB1aW50KGIpKTsgfQog
bmF0aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGRvdWJsZSBvcGVy
YXRvciooZG91YmxlLCBkb3VibGUpOwogbmF0aXZlIGludCBvcGVyYXRvci8oaW50LCBpbnQpOwog
bmF0aXZlIHVpbnQgb3BlcmF0b3IvKHVpbnQsIHVpbnQpOwogdWludDggb3BlcmF0b3IvKHVpbnQ4
IGEsIHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQ4KHVpbnQoYSkgLyB1aW50KGIpKTsgfQpAQCAtMTA4
LDMzICs5NSwyNyBAQCB1aW50OCBvcGVyYXRvcn4odWludDggdmFsdWUpIHsgcmV0dXJuIHVpbnQ4
KH51aW50KHZhbHVlKSk7IH0KIHVpbnQ4IG9wZXJhdG9yPDwodWludDggYSwgdWludCBiKSB7IHJl
dHVybiB1aW50OCh1aW50KGEpIDw8IChiICYgNykpOyB9CiB1aW50OCBvcGVyYXRvcj4+KHVpbnQ4
IGEsIHVpbnQgYikgeyByZXR1cm4gdWludDgodWludChhKSA+PiAoYiAmIDcpKTsgfQogbmF0aXZl
IGZsb2F0IG9wZXJhdG9yLyhmbG9hdCwgZmxvYXQpOwotbmF0aXZlIGRvdWJsZSBvcGVyYXRvci8o
ZG91YmxlLCBkb3VibGUpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQsIGludCk7CiBuYXRp
dmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsIHVpbnQpOwogYm9vbCBvcGVyYXRvcj09KHVpbnQ4IGEs
IHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQoYSkgPT0gdWludChiKTsgfQogbmF0aXZlIGJvb2wgb3Bl
cmF0b3I9PShib29sLCBib29sKTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0oZmxvYXQsIGZsb2F0
KTsKLW5hdGl2ZSBib29sIG9wZXJhdG9yPT0oZG91YmxlLCBkb3VibGUpOwogbmF0aXZlIGJvb2wg
b3BlcmF0b3I8KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LCB1aW50KTsK
IGJvb2wgb3BlcmF0b3I8KHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0dXJuIHVpbnQoYSkgPCB1aW50
KGIpOyB9CiBuYXRpdmUgYm9vbCBvcGVyYXRvcjwoZmxvYXQsIGZsb2F0KTsKLW5hdGl2ZSBib29s
IG9wZXJhdG9yPChkb3VibGUsIGRvdWJsZSk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGludCwg
aW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPD0odWludCwgdWludCk7CiBib29sIG9wZXJhdG9y
PD0odWludDggYSwgdWludDggYikgeyByZXR1cm4gdWludChhKSA8PSB1aW50KGIpOyB9CiBuYXRp
dmUgYm9vbCBvcGVyYXRvcjw9KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcjw9
KGRvdWJsZSwgZG91YmxlKTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7CiBuYXRp
dmUgYm9vbCBvcGVyYXRvcj4odWludCwgdWludCk7CiBib29sIG9wZXJhdG9yPih1aW50OCBhLCB1
aW50OCBiKSB7IHJldHVybiB1aW50KGEpID4gdWludChiKTsgfQogbmF0aXZlIGJvb2wgb3BlcmF0
b3I+KGZsb2F0LCBmbG9hdCk7Ci1uYXRpdmUgYm9vbCBvcGVyYXRvcj4oZG91YmxlLCBkb3VibGUp
OwogbmF0aXZlIGJvb2wgb3BlcmF0b3I+PShpbnQsIGludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRv
cj49KHVpbnQsIHVpbnQpOwogYm9vbCBvcGVyYXRvcj49KHVpbnQ4IGEsIHVpbnQ4IGIpIHsgcmV0
dXJuIHVpbnQoYSkgPj0gdWludChiKTsgfQogbmF0aXZlIGJvb2wgb3BlcmF0b3I+PShmbG9hdCwg
ZmxvYXQpOwotbmF0aXZlIGJvb2wgb3BlcmF0b3I+PShkb3VibGUsIGRvdWJsZSk7CiAKIGJvb2wg
b3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKQogewpAQCAtMTk2LDcgKzE3Nyw2IEBAIHN0cnVjdCB2
ZWMyPFQ+IHsKIHR5cGVkZWYgaW50MiA9IHZlYzI8aW50PjsKIHR5cGVkZWYgdWludDIgPSB2ZWMy
PHVpbnQ+OwogdHlwZWRlZiBmbG9hdDIgPSB2ZWMyPGZsb2F0PjsKLXR5cGVkZWYgZG91YmxlMiA9
IHZlYzI8ZG91YmxlPjsKIAogb3BlcmF0b3I8VD4gdmVjMjxUPihUIHgsIFQgeSkKIHsKQEAgLTIy
OSw3ICsyMDksNiBAQCBzdHJ1Y3QgdmVjMzxUPiB7CiB0eXBlZGVmIGludDMgPSB2ZWMzPGludD47
CiB0eXBlZGVmIHVpbnQzID0gdmVjMzx1aW50PjsKIHR5cGVkZWYgZmxvYXQzID0gdmVjMzxmbG9h
dD47Ci10eXBlZGVmIGRvdWJsZTMgPSB2ZWMzPGRvdWJsZT47CiAKIG9wZXJhdG9yPFQ+IHZlYzM8
VD4oVCB4LCBUIHksIFQgeikKIHsKQEAgLTI4NCw3ICsyNjMsNiBAQCBzdHJ1Y3QgdmVjNDxUPiB7
CiB0eXBlZGVmIGludDQgPSB2ZWM0PGludD47CiB0eXBlZGVmIHVpbnQ0ID0gdmVjNDx1aW50PjsK
IHR5cGVkZWYgZmxvYXQ0ID0gdmVjNDxmbG9hdD47Ci10eXBlZGVmIGRvdWJsZTQgPSB2ZWM0PGRv
dWJsZT47CiAKIG9wZXJhdG9yPFQ+IHZlYzQ8VD4oVCB4LCBUIHksIFQgeiwgVCB3KQogewpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IDIxYzc3ZjZhMDIxZjU1ZDNi
NDQxZGZiZDY0MjAzOWJmNzM4NTBmZmEuLmE2NDFkMzA0NjQ5M2RhYmMyZDc0NWU3ZDBlYzk2ZDBi
ZGQ0NDFiYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
aHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTQx
LDggKzQxLDYgQEAKIDxzY3JpcHQgc3JjPSJDb252ZXJ0UHRyVG9BcnJheVJlZkV4cHJlc3Npb24u
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkRvV2hpbGVMb29wLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJEb3RFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJEb3Vi
bGVMaXRlcmFsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJEb3VibGVMaXRlcmFsVHlwZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlSZWYuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkVCdWZmZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMK
aW5kZXggMzYxNGVhZDg5NGYyZGM5ZjBmNGM3ZDc1MjM4NWQwZTA5Y2ZjNGYwMi4uMmIwNTY5MDJh
NjZjYzMyZDA0YTFlYTcyMGQyNTFlM2Y3MGNmOTY0OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0LmpzCkBAIC03OCwxMSArNzgsNiBAQCBmdW5jdGlvbiBtYWtlRmxvYXQocHJvZ3Jh
bSwgdmFsdWUpCiAgICAgcmV0dXJuIFR5cGVkVmFsdWUuYm94KHByb2dyYW0uaW50cmluc2ljcy5m
bG9hdCwgdmFsdWUpOwogfQogCi1mdW5jdGlvbiBtYWtlRG91YmxlKHByb2dyYW0sIHZhbHVlKQot
ewotICAgIHJldHVybiBUeXBlZFZhbHVlLmJveChwcm9ncmFtLmludHJpbnNpY3MuZG91YmxlLCB2
YWx1ZSk7Ci19Ci0KIGZ1bmN0aW9uIG1ha2VFbnVtKHByb2dyYW0sIGVudW1OYW1lLCB2YWx1ZSkK
IHsKICAgICBsZXQgZW51bVR5cGUgPSBwcm9ncmFtLnR5cGVzLmdldChlbnVtTmFtZSk7CkBAIC0x
NDksMTQgKzE0NCw2IEBAIGZ1bmN0aW9uIGNoZWNrRmxvYXQocHJvZ3JhbSwgcmVzdWx0LCBleHBl
Y3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQ6ICIgKyByZXN1bHQu
dmFsdWUgKyAiIChleHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiKSIpOwogfQogCi1mdW5jdGlvbiBj
aGVja0RvdWJsZShwcm9ncmFtLCByZXN1bHQsIGV4cGVjdGVkKQotewotICAgIGlmICghcmVzdWx0
LnR5cGUuZXF1YWxzKHByb2dyYW0uaW50cmluc2ljcy5kb3VibGUpKQotICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIldyb25nIHJlc3VsdCB0eXBlOiAiICsgcmVzdWx0LnR5cGUpOwotICAgIGlmIChy
ZXN1bHQudmFsdWUgIT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiV3Jvbmcg
cmVzdWx0OiAiICsgcmVzdWx0LnZhbHVlICsgIiAoZXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiki
KTsKLX0KLQogZnVuY3Rpb24gY2hlY2tMZXhlclRva2VuKHJlc3VsdCwgZXhwZWN0ZWRJbmRleCwg
ZXhwZWN0ZWRLaW5kLCBleHBlY3RlZFRleHQpCiB7CiAgICAgaWYgKHJlc3VsdC5faW5kZXggIT0g
ZXhwZWN0ZWRJbmRleCkKQEAgLTYwOCw3ICs1OTUsNyBAQCB0ZXN0cy5iYWRBZGQgPSBmdW5jdGlv
bigpCiAKIHRlc3RzLmxleGVyS2V5d29yZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBsZXQgcmVzdWx0
ID0gZG9MZXgoImlkZW50IGZvciB3aGlsZSAxMjMgMTIzdSB7IH0ge2FzZCBhc2R7IDFhMyAxLjIg
KyAzLjQgKyAxLiArIC4yIDEuMmQgMC5kIC4zZCAmJiB8fCIpOworICAgIGxldCByZXN1bHQgPSBk
b0xleCgiaWRlbnQgZm9yIHdoaWxlIDEyMyAxMjN1IHsgfSB7YXNkIGFzZHsgMWEzIDEuMiArIDMu
NCArIDEuICsgLjIgMS4yZiAwLmYgLjNmICYmIHx8Iik7CiAgICAgaWYgKHJlc3VsdC5sZW5ndGgg
IT0gMjUpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTGV4ZXIgZW1pdHRlZCBhbiBpbmNvcnJl
Y3QgbnVtYmVyIG9mIHRva2VucyAoZXhwZWN0ZWQgMjMpOiAiICsgcmVzdWx0Lmxlbmd0aCk7CiAg
ICAgY2hlY2tMZXhlclRva2VuKHJlc3VsdFswXSwgIDAsICAiaWRlbnRpZmllciIsICAgICJpZGVu
dCIpOwpAQCAtNjMxLDkgKzYxOCw5IEBAIHRlc3RzLmxleGVyS2V5d29yZCA9IGZ1bmN0aW9uKCkK
ICAgICBjaGVja0xleGVyVG9rZW4ocmVzdWx0WzE3XSwgNTUsICJmbG9hdExpdGVyYWwiLCAgIjEu
Iik7CiAgICAgY2hlY2tMZXhlclRva2VuKHJlc3VsdFsxOF0sIDU4LCAicHVuY3R1YXRpb24iLCAg
ICIrIik7CiAgICAgY2hlY2tMZXhlclRva2VuKHJlc3VsdFsxOV0sIDYwLCAiZmxvYXRMaXRlcmFs
IiwgICIuMiIpOwotICAgIGNoZWNrTGV4ZXJUb2tlbihyZXN1bHRbMjBdLCA2MywgImZsb2F0TGl0
ZXJhbCIsICAiMS4yZCIpOwotICAgIGNoZWNrTGV4ZXJUb2tlbihyZXN1bHRbMjFdLCA2OCwgImZs
b2F0TGl0ZXJhbCIsICAiMC5kIik7Ci0gICAgY2hlY2tMZXhlclRva2VuKHJlc3VsdFsyMl0sIDcy
LCAiZmxvYXRMaXRlcmFsIiwgICIuM2QiKTsKKyAgICBjaGVja0xleGVyVG9rZW4ocmVzdWx0WzIw
XSwgNjMsICJmbG9hdExpdGVyYWwiLCAgIjEuMmYiKTsKKyAgICBjaGVja0xleGVyVG9rZW4ocmVz
dWx0WzIxXSwgNjgsICJmbG9hdExpdGVyYWwiLCAgIjAuZiIpOworICAgIGNoZWNrTGV4ZXJUb2tl
bihyZXN1bHRbMjJdLCA3MiwgImZsb2F0TGl0ZXJhbCIsICAiLjNmIik7CiAgICAgY2hlY2tMZXhl
clRva2VuKHJlc3VsdFsyM10sIDc2LCAicHVuY3R1YXRpb24iLCAgICImJiIpOwogICAgIGNoZWNr
TGV4ZXJUb2tlbihyZXN1bHRbMjRdLCA3OSwgInB1bmN0dWF0aW9uIiwgICAifHwiKTsKIH0KQEAg
LTk2MCw5ICs5NDcsOSBAQCB0ZXN0cy5yZXR1cm5JbnRMaXRlcmFsVWludCA9IGZ1bmN0aW9uKCkK
ICAgICBjaGVja051bWJlcihwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbXSksIDQyKTsKIH0KIAotdGVzdHMucmV0dXJuSW50TGl0ZXJhbERvdWJsZSA9IGZ1bmN0aW9u
KCkKK3Rlc3RzLnJldHVybkludExpdGVyYWxGbG9hdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGRvUHJlcCgiZG91YmxlIGZvbygpIHsgcmV0dXJuIDQyOyB9Iik7CisgICAgbGV0
IHByb2dyYW0gPSBkb1ByZXAoImZsb2F0IGZvbygpIHsgcmV0dXJuIDQyOyB9Iik7CiAgICAgY2hl
Y2tOdW1iZXIocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW10pLCA0
Mik7CiB9CiAKQEAgLTk4MCwxMCArOTY3LDEwIEBAIHRlc3RzLmJhZEludExpdGVyYWxGb3JVaW50
ID0gZnVuY3Rpb24oKQogICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcik7
CiB9CiAKLXRlc3RzLmJhZEludExpdGVyYWxGb3JEb3VibGUgPSBmdW5jdGlvbigpCit0ZXN0cy5i
YWRJbnRMaXRlcmFsRm9yRmxvYXQgPSBmdW5jdGlvbigpCiB7CiAgICAgY2hlY2tGYWlsKAotICAg
ICAgICAoKSA9PiBkb1ByZXAoInZvaWQgZm9vKCkgeyBkb3VibGUgeCA9IDUwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7IH0iKSwKKyAgICAgICAgKCkgPT4gZG9QcmVwKCJ2b2lk
IGZvbygpIHsgZmxvYXQgeCA9IDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7
IH0iKSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpOwogfQogCkBA
IC0xNTQ3LDcgKzE1MzQsNyBAQCB0ZXN0cy5pbnRPdmVybG9hZFJlc29sdXRpb24gPSBmdW5jdGlv
bigpCiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAogICAgICAgICBpbnQgZm9vKGludCkgeyBy
ZXR1cm4gMTsgfQogICAgICAgICBpbnQgZm9vKHVpbnQpIHsgcmV0dXJuIDI7IH0KLSAgICAgICAg
aW50IGZvbyhkb3VibGUpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgaW50IGZvbyhmbG9hdCkgeyBy
ZXR1cm4gMzsgfQogICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQyKTsgfQogICAgIGAp
OwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiYmFyIiwgW10s
IFtdKSwgMSk7CkBAIC0xNTU2LDcgKzE1NDMsNyBAQCB0ZXN0cy5pbnRPdmVybG9hZFJlc29sdXRp
b24gPSBmdW5jdGlvbigpCiB0ZXN0cy5pbnRPdmVybG9hZFJlc29sdXRpb25SZXZlcnNlT3JkZXIg
PSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQg
Zm9vKGRvdWJsZSkgeyByZXR1cm4gMzsgfQorICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVy
biAzOyB9CiAgICAgICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQogICAgICAgICBpbnQg
Zm9vKGludCkgeyByZXR1cm4gMTsgfQogICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQy
KTsgfQpAQCAtMjY5MSw3ICsyNjc4LDcgQEAgdGVzdHMuc2ltcGxlTGVuZ3RoID0gZnVuY3Rpb24o
KQogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgdWludCBmb28oKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBkb3VibGVbNzU0XSBhcnJheTsKKyAgICAgICAgICAgIGZsb2F0Wzc1
NF0gYXJyYXk7CiAgICAgICAgICAgICByZXR1cm4gKEBhcnJheSkubGVuZ3RoOwogICAgICAgICB9
CiAgICAgYCk7CkBAIC0yNzAzLDcgKzI2OTAsNyBAQCB0ZXN0cy5ub25BcnJheVJlZkFycmF5TGVu
Z3RoU3VjY2VlZCA9IGZ1bmN0aW9uKCkKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAg
ICAgIHVpbnQgZm9vKCkKICAgICAgICAgewotICAgICAgICAgICAgZG91YmxlWzc1NF0gYXJyYXk7
CisgICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwogICAgICAgICAgICAgcmV0dXJuIGFycmF5
Lmxlbmd0aDsKICAgICAgICAgfQogICAgIGApOwpAQCAtMjc2NSw3ICsyNzUyLDcgQEAgdGVzdHMu
YXNzaWduTGVuZ3RoID0gZnVuY3Rpb24oKQogICAgICAgICAoKSA9PiBkb1ByZXAoYAogICAgICAg
ICAgICAgdm9pZCBmb28oKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRvdWJsZVs3
NTRdIGFycmF5OworICAgICAgICAgICAgICAgIGZsb2F0Wzc1NF0gYXJyYXk7CiAgICAgICAgICAg
ICAgICAgKEBhcnJheSkubGVuZ3RoID0gNDI7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLApA
QCAtMjc3NiwxMyArMjc2MywxMyBAQCB0ZXN0cy5hc3NpZ25MZW5ndGhIZWxwZXIgPSBmdW5jdGlv
bigpCiB7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAg
ICAgdm9pZCBiYXIodGhyZWFkIGRvdWJsZVtdIGFycmF5KQorICAgICAgICAgICAgdm9pZCBiYXIo
dGhyZWFkIGZsb2F0W10gYXJyYXkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXJy
YXkubGVuZ3RoID0gNDI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2b2lkIGZvbygpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZG91YmxlWzc1NF0gYXJyYXk7CisgICAgICAg
ICAgICAgICAgZmxvYXRbNzU0XSBhcnJheTsKICAgICAgICAgICAgICAgICBiYXIoQGFycmF5KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgYCksCkBAIC0zNjA1LDcgKzM1OTIsNyBAQCB0ZXN0cy5m
bG9hdE1hdGggPSBmdW5jdGlvbigpCiAgICAgICAgIH0KICAgICAgICAgYm9vbCBmb281KCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDQyLjVkID09IDQyLjVkOworICAgICAgICAgICAg
cmV0dXJuIDQyLjVmID09IDQyLjVmOwogICAgICAgICB9CiAgICAgICAgIGZsb2F0IGJhcihmbG9h
dCB4KQogICAgICAgICB7CkBAIC0zNjE5LDEwICszNjA2LDYgQEAgdGVzdHMuZmxvYXRNYXRoID0g
ZnVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYmFyKDcuNWYpOwogICAg
ICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzgoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYmFyKDcuNWQpOwotICAgICAgICB9CiAgICAgICAgIGZsb2F0IGZvbzkoKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gZmxvYXQoNy41KTsKQEAgLTM2MzEsMjQgKzM2MTQsMTUgQEAg
dGVzdHMuZmxvYXRNYXRoID0gZnVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gZmxvYXQoNy41Zik7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTEoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQoNy41ZCk7Ci0gICAgICAgIH0KICAgICAgICAg
ZmxvYXQgZm9vMTIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmxvYXQoNyk7CiAg
ICAgICAgIH0KICAgICAgICAgZmxvYXQgZm9vMTMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBk
b3VibGUgeCA9IDcuNWQ7CisgICAgICAgICAgICBmbG9hdCB4ID0gNy41ZjsKICAgICAgICAgICAg
IHJldHVybiBmbG9hdCh4KTsKICAgICAgICAgfQotICAgICAgICBkb3VibGUgZm9vMTQoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgeCA9IDcuNWY7Ci0gICAgICAgICAgICByZXR1cm4g
ZG91YmxlKHgpOwotICAgICAgICB9CiAgICAgYCk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtdKSwgdHJ1ZSk7CiAgICAgY2hlY2tCb29s
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMiIsIFtdLCBbXSksIHRydWUpOwpA
QCAtMzY1NywxMyArMzYzMSwxMCBAQCB0ZXN0cy5mbG9hdE1hdGggPSBmdW5jdGlvbigpCiAgICAg
Y2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vNSIsIFtdLCBbXSks
IHRydWUpOwogICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b282IiwgW10sIFtdKSwgNy41KTsKICAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vNyIsIFtdLCBbXSksIDcuNSk7Ci0gICAgY2hlY2tGbG9hdChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzgiLCBbXSwgW10pLCA3LjUpOwogICAgIGNoZWNr
RmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb285IiwgW10sIFtdKSwgNy41
KTsKICAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMTAi
LCBbXSwgW10pLCA3LjUpOwotICAgIGNoZWNrRmxvYXQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28xMSIsIFtdLCBbXSksIDcuNSk7CiAgICAgY2hlY2tGbG9hdChwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEyIiwgW10sIFtdKSwgNyk7CiAgICAgY2hlY2tGbG9h
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzEzIiwgW10sIFtdKSwgNy41KTsK
LSAgICBjaGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzE0Iiwg
W10sIFtdKSwgNy41KTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCiAg
ICAgICAgICAgICBpbnQgYmFyKGludCB4KQpAQCAtMzY4NCw3ICszNjU1LDcgQEAgdGVzdHMuZmxv
YXRNYXRoID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IGZvbygp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYmFyKDQuZCk7CisgICAgICAgICAgICAg
ICAgYmFyKDQuZik7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAogICAgICAgICAoZSkgPT4g
ZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwpAQCAtMzcyMCw3ICszNjkxLDcgQEAgdGVzdHMuZmxv
YXRNYXRoID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IGZvbygp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYmFyKDQuZCk7CisgICAgICAgICAgICAg
ICAgYmFyKDQuZik7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAogICAgICAgICAoZSkgPT4g
ZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwpAQCAtMzczNiw0MCArMzcwNyw2IEBAIHRlc3RzLmZs
b2F0TWF0aCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCiAgICAgICAg
IChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Ci0gICAgY2hlY2tGYWlsKAotICAgICAg
ICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgZmxvYXQgYmFyKGZsb2F0IHgpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB2b2lkIGZvbygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYmFyKDE2Nzc3
MjE3LmQpOwotICAgICAgICAgICAgfQotICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5z
dGFuY2VvZiBXVHlwZUVycm9yKTsKLSAgICBjaGVja0ZhaWwoCi0gICAgICAgICgpID0+IGRvUHJl
cChgCi0gICAgICAgICAgICBmbG9hdCBiYXIoZmxvYXQgeCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZsb2F0IGZv
bygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZG91YmxlIHggPSA3LjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gYmFyKHgpOwotICAgICAgICAgICAgfQotICAgICAgICBgKSwKLSAg
ICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKLSAgICBjaGVja0ZhaWwoCi0g
ICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBmbG9hdCBmb28oKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGRvdWJsZSB4ID0gNy47Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOwogfQogCiB0ZXN0cy5nZW5lcmljQ2FzdEluZmVyID0gZnVuY3Rp
b24oKQpAQCAtNDE0Niw0NCArNDA4Myw2IEBAIHRlc3RzLmJ1aWx0aW5WZWN0b3JzID0gZnVuY3Rp
b24oKQogICAgICAgICAgICAgZmxvYXQzIGMgPSBmbG9hdDMoMy4sIDQuLCA2Lik7CiAgICAgICAg
ICAgICByZXR1cm4gYiA9PSBjOwogICAgICAgICB9Ci0gICAgICAgIGRvdWJsZSBmb29kKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZG91YmxlMiBhID0gZG91YmxlMigzLiwgNC4pOwotICAgICAg
ICAgICAgcmV0dXJuIGFbMF07Ci0gICAgICAgIH0KLSAgICAgICAgZG91YmxlIGZvb2QyKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZG91YmxlMiBhID0gZG91YmxlMigzLiwgNC4pOwotICAgICAg
ICAgICAgZG91YmxlMyBiID0gZG91YmxlMyhhLCA1Lik7Ci0gICAgICAgICAgICByZXR1cm4gYlsx
XTsKLSAgICAgICAgfQotICAgICAgICBkb3VibGUgZm9vZDMoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBkb3VibGUzIGEgPSBkb3VibGUzKDMuLCA0LiwgNS4pOwotICAgICAgICAgICAgZG91Ymxl
NCBiID0gZG91YmxlNCg2LiwgYSk7Ci0gICAgICAgICAgICByZXR1cm4gYlsxXTsKLSAgICAgICAg
fQotICAgICAgICBkb3VibGUgZm9vZDQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUy
IGEgPSBkb3VibGUyKDMuLCA0Lik7Ci0gICAgICAgICAgICBkb3VibGUyIGIgPSBkb3VibGUyKDUu
LCA2Lik7Ci0gICAgICAgICAgICBkb3VibGU0IGMgPSBkb3VibGU0KGEsIGIpOwotICAgICAgICAg
ICAgcmV0dXJuIGNbMl07Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBmb29kNSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGRvdWJsZTQgYSA9IGRvdWJsZTQoMy4sIDQuLCA1LiwgNi4pOwotICAg
ICAgICAgICAgZG91YmxlMiBiID0gZG91YmxlMig0LiwgNS4pOwotICAgICAgICAgICAgZG91Ymxl
NCBjID0gZG91YmxlNCgzLiwgYiwgNi4pOwotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYzsKLSAg
ICAgICAgfQotICAgICAgICBib29sIGZvb2Q2KCkKLSAgICAgICAgewotICAgICAgICAgICAgZG91
YmxlMiBhID0gZG91YmxlMig0LiwgNS4pOwotICAgICAgICAgICAgZG91YmxlMyBiID0gZG91Ymxl
MygzLiwgYSk7Ci0gICAgICAgICAgICBkb3VibGUzIGMgPSBkb3VibGUzKDMuLCA0LiwgNi4pOwot
ICAgICAgICAgICAgcmV0dXJuIGIgPT0gYzsKLSAgICAgICAgfQogICAgIGApOwogICAgIGNoZWNr
SW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtdKSwgMyk7CiAg
ICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28yIiwgW10sIFtd
KSwgNCk7CkBAIC00MjAzLDEyICs0MTAyLDYgQEAgdGVzdHMuYnVpbHRpblZlY3RvcnMgPSBmdW5j
dGlvbigpCiAgICAgY2hlY2tGbG9hdChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
b2Y0IiwgW10sIFtdKSwgNSk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vZjUiLCBbXSwgW10pLCB0cnVlKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29mNiIsIFtdLCBbXSksIGZhbHNlKTsKLSAgICBjaGVj
a0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2QiLCBbXSwgW10pLCAz
KTsKLSAgICBjaGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Qy
IiwgW10sIFtdKSwgNCk7Ci0gICAgY2hlY2tEb3VibGUocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb29kMyIsIFtdLCBbXSksIDMpOwotICAgIGNoZWNrRG91YmxlKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vZDQiLCBbXSwgW10pLCA1KTsKLSAgICBjaGVja0Jvb2wo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb29kNSIsIFtdLCBbXSksIHRydWUpOwot
ICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvb2Q2IiwgW10s
IFtdKSwgZmFsc2UpOwogfQogCiB0ZXN0cy5pbnN0YW50aWF0ZVN0cnVjdEluU3RydWN0ID0gZnVu
Y3Rpb24oKQpAQCAtNDk3MSwxOCArNDg2NCwxOCBAQCB0ZXN0cy5zaW1wbGVTd2l0Y2ggPSBmdW5j
dGlvbigpCiAKIHRlc3RzLmV4aGF1c3RpdmVVaW50OFN3aXRjaCA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBsZXQgdGV4dCA9ICJkb3VibGUgZm9vKHVpbnQ4IHgpIHsgc3dpdGNoICh1aW50OCh4KSkgeyIK
KyAgICBsZXQgdGV4dCA9ICJmbG9hdCBmb28odWludDggeCkgeyBzd2l0Y2ggKHVpbnQ4KHgpKSB7
IgogICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmY7ICsraSkKICAgICAgICAgdGV4dCArPSAi
Y2FzZSAiICsgaSArICI6IHJldHVybiAiICsgaSAqIDEuNSArICI7IjsKICAgICB0ZXh0ICs9ICJ9
IH0iOwogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKHRleHQpOwogICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMHhmZjsgKytpKQotICAgICAgICBjaGVja0RvdWJsZShwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZVVpbnQ4KHByb2dyYW0sIGkpXSksIGkgKiAxLjUp
OworICAgICAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgaSldKSwgaSAqIDEuNSk7CiB9CiAKIHRlc3RzLm5v
dFF1aXRlRXhoYXVzdGl2ZVVpbnQ4U3dpdGNoID0gZnVuY3Rpb24oKQogewotICAgIGxldCB0ZXh0
ID0gImRvdWJsZSBmb28odWludDggeCkgeyBzd2l0Y2ggKHVpbnQ4KHgpKSB7IgorICAgIGxldCB0
ZXh0ID0gImZsb2F0IGZvbyh1aW50OCB4KSB7IHN3aXRjaCAodWludDgoeCkpIHsiCiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPD0gMHhmZTsgKytpKQogICAgICAgICB0ZXh0ICs9ICJjYXNlICIgKyBp
ICsgIjogcmV0dXJuICIgKyBpICogMS41ICsgIjsiOwogICAgIHRleHQgKz0gIn0gfSI7CkBAIC00
OTkxLDE0ICs0ODg0LDE0IEBAIHRlc3RzLm5vdFF1aXRlRXhoYXVzdGl2ZVVpbnQ4U3dpdGNoID0g
ZnVuY3Rpb24oKQogCiB0ZXN0cy5ub3RRdWl0ZUV4aGF1c3RpdmVVaW50OFN3aXRjaFdpdGhEZWZh
dWx0ID0gZnVuY3Rpb24oKQogewotICAgIGxldCB0ZXh0ID0gImRvdWJsZSBmb28odWludDggeCkg
eyBzd2l0Y2ggKHVpbnQ4KHgpKSB7IgorICAgIGxldCB0ZXh0ID0gImZsb2F0IGZvbyh1aW50OCB4
KSB7IHN3aXRjaCAodWludDgoeCkpIHsiCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZTsg
KytpKQogICAgICAgICB0ZXh0ICs9ICJjYXNlICIgKyBpICsgIjogcmV0dXJuICIgKyBpICogMS41
ICsgIjsiOwogICAgIHRleHQgKz0gImRlZmF1bHQ6IHJldHVybiAiICsgMHhmZiAqIDEuNSArICI7
IjsKICAgICB0ZXh0ICs9ICJ9IH0iOwogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKHRleHQpOwog
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMHhmZjsgKytpKQotICAgICAgICBjaGVja0RvdWJsZShw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZVVpbnQ4KHByb2dy
YW0sIGkpXSksIGkgKiAxLjUpOworICAgICAgICBjaGVja0Zsb2F0KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVWludDgocHJvZ3JhbSwgaSldKSwgaSAqIDEu
NSk7CiB9CiAKIHRlc3RzLnN3aXRjaEZhbGxUaHJvdWdoID0gZnVuY3Rpb24oKQpAQCAtNTMyNyw3
ICs1MjIwLDcgQEAgdGVzdHMuc2V0dGVyV2l0aE1pc21hdGNoZWRUeXBlID0gZnVuY3Rpb24oKQog
ewogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIGRv
dWJsZSBvcGVyYXRvci5mb28oaW50KQorICAgICAgICAgICAgZmxvYXQgb3BlcmF0b3IuZm9vKGlu
dCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsKICAgICAgICAg
ICAgIH0KQEAgLTU0MjAsOSArNTMxMyw5IEBAIHRlc3RzLm9wZXJhdG9yQ2FzdFdpdGhUeXBlVmFy
aWFibGVJbmZlcnJlZEZyb21SZXR1cm5UeXBlID0gZnVuY3Rpb24oKQogICAgICAgICBwcm90b2Nv
bCBCYXJhYmxlIHsKICAgICAgICAgICAgIHZvaWQgYmFyKHRocmVhZCBCYXJhYmxlKiwgaW50KTsK
ICAgICAgICAgfQotICAgICAgICB2b2lkIGJhcih0aHJlYWQgZG91YmxlKiByZXN1bHQsIGludCB2
YWx1ZSkKKyAgICAgICAgdm9pZCBiYXIodGhyZWFkIGZsb2F0KiByZXN1bHQsIGludCB2YWx1ZSkK
ICAgICAgICAgewotICAgICAgICAgICAgKnJlc3VsdCA9IGRvdWJsZSh2YWx1ZSk7CisgICAgICAg
ICAgICAqcmVzdWx0ID0gZmxvYXQodmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIG9wZXJhdG9y
PFQ6QmFyYWJsZT4gVChGb28gZm9vKQogICAgICAgICB7CkBAIC01NDM0LDcgKzUzMjcsNyBAQCB0
ZXN0cy5vcGVyYXRvckNhc3RXaXRoVHlwZVZhcmlhYmxlSW5mZXJyZWRGcm9tUmV0dXJuVHlwZSA9
IGZ1bmN0aW9uKCkKICAgICAgICAgewogICAgICAgICAgICAgRm9vIGZvbzsKICAgICAgICAgICAg
IGZvby54ID0gNzU7Ci0gICAgICAgICAgICBkb3VibGUgeCA9IGRvdWJsZShmb28pOworICAgICAg
ICAgICAgZmxvYXQgeCA9IGZsb2F0KGZvbyk7CiAgICAgICAgICAgICByZXR1cm4gaW50KHggKiAx
LjUpOwogICAgICAgICB9CiAgICAgYCk7CkBAIC01NDczLDcgKzUzNjYsNyBAQCB0ZXN0cy5pbmNX
cm9uZ1R5cGVzID0gZnVuY3Rpb24oKQogewogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4g
ZG9QcmVwKGAKLSAgICAgICAgICAgIGludCBvcGVyYXRvcisrKGRvdWJsZSkgeyByZXR1cm4gMzI7
IH0KKyAgICAgICAgICAgIGludCBvcGVyYXRvcisrKGZsb2F0KSB7IHJldHVybiAzMjsgfQogICAg
ICAgICBgKSwKICAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiB9CkBAIC01
NDgyLDcgKzUzNzUsNyBAQCB0ZXN0cy5kZWNXcm9uZ1R5cGVzID0gZnVuY3Rpb24oKQogewogICAg
IGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIGludCBvcGVy
YXRvci0tKGRvdWJsZSkgeyByZXR1cm4gMzI7IH0KKyAgICAgICAgICAgIGludCBvcGVyYXRvci0t
KGZsb2F0KSB7IHJldHVybiAzMjsgfQogICAgICAgICBgKSwKICAgICAgICAgZSA9PiBlIGluc3Rh
bmNlb2YgV1R5cGVFcnJvcik7CiB9CkBAIC02MDczLDcgKzU5NjYsNyBAQCB0ZXN0cy5pbmRleFNl
dHRlcldpdGhNaXNtYXRjaGVkVHlwZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBjaGVja0ZhaWwoCiAg
ICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBkb3VibGUgb3BlcmF0b3JbXShpbnQs
IHVpbnQpCisgICAgICAgICAgICBmbG9hdCBvcGVyYXRvcltdKGludCwgdWludCkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gNS40MzsKICAgICAgICAgICAgIH0KQEAgLTYy
NjQsNyArNjE1Nyw3IEBAIHRlc3RzLmluZGV4QW5kZXJXaXRoQXJyYXlSZWYgPSBmdW5jdGlvbigp
CiAgICAgICAgIHN0cnVjdCBGb28gewogICAgICAgICAgICAgaW50IHg7CiAgICAgICAgIH0KLSAg
ICAgICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10odGhyZWFkIEZvb1tdIGFycmF5LCBkb3VibGUg
aW5kZXgpCisgICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBGb29bXSBhcnJh
eSwgZmxvYXQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAmYXJyYXlbdWlu
dChpbmRleCArIDEpXS54OwogICAgICAgICB9CkBAIC02MjcyLDcgKzYxNjUsNyBAQCB0ZXN0cy5p
bmRleEFuZGVyV2l0aEFycmF5UmVmID0gZnVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAg
ICBGb28geDsKICAgICAgICAgICAgIHgueCA9IDEzOwotICAgICAgICAgICAgcmV0dXJuIChAeClb
ZG91YmxlKC0xKV07CisgICAgICAgICAgICByZXR1cm4gKEB4KVtmbG9hdCgtMSldOwogICAgICAg
ICB9CiAgICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbXSwgW10pLCAxMyk7CkBAIC02MzYxLDcgKzYyNTQsNyBAQCB0ZXN0cy5pbmRleFNl
dHRlcldpdGhNaXNtYXRjaGVkVHlwZUluUHJvdG9jb2wgPSBmdW5jdGlvbigpCiAgICAgY2hlY2tG
YWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAogICAgICAgICAgICAgcHJvdG9jb2wgRm9vIHsK
LSAgICAgICAgICAgICAgICBkb3VibGUgb3BlcmF0b3JbXShGb28sIHVpbnQpOworICAgICAgICAg
ICAgICAgIGZsb2F0IG9wZXJhdG9yW10oRm9vLCB1aW50KTsKICAgICAgICAgICAgICAgICBGb28g
b3BlcmF0b3JbXT0oRm9vLCB1aW50LCBpbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
c3RydWN0IEJhciB7IH0KQEAgLTY1OTMsMTQgKzY0ODYsMTQgQEAgdGVzdHMuaW5kZXhBbmRlcldp
dGhBcnJheVJlZkluUHJvdG9jb2wgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBk
b1ByZXAoYAogICAgICAgICBwcm90b2NvbCBGb28gewotICAgICAgICAgICAgdGhyZWFkIGludCog
b3BlcmF0b3ImW10odGhyZWFkIEZvb1tdIGFycmF5LCBkb3VibGUgaW5kZXgpOworICAgICAgICAg
ICAgdGhyZWFkIGludCogb3BlcmF0b3ImW10odGhyZWFkIEZvb1tdIGFycmF5LCBmbG9hdCBpbmRl
eCk7CiAgICAgICAgIH0KICAgICAgICAgaW50IGJhcjxUOkZvbz4odGhyZWFkIFRbXSB4KQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4geFsxLjVdOwogICAgICAgICB9CiAgICAgICAgIHN0
cnVjdCBCYXIgeyB9Ci0gICAgICAgIHRocmVhZCBpbnQqIG9wZXJhdG9yJltdKHRocmVhZCBCYXJb
XSwgZG91YmxlKQorICAgICAgICB0aHJlYWQgaW50KiBvcGVyYXRvciZbXSh0aHJlYWQgQmFyW10s
IGZsb2F0KQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTIzNDsKICAgICAg
ICAgICAgIHJldHVybiAmcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4
Lmh0bWwKaW5kZXggN2E3YzRiNDJmZjMwZTk5Mjg3ZjYxZDE4YTI1NmRjZjgyN2M0MjhkMy4uODA5
NGIxOTM3ODFiNGFhOWIwYzM5MDllOWE5MWQyODE1ZjJiMmFiYSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCkBAIC00MSw4ICs0MSw2IEBACiA8c2NyaXB0IHNyYz0i
Q29udmVydFB0clRvQXJyYXlSZWZFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJEb1doaWxlTG9vcC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iRG91YmxlTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iRG91YmxlTGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkRlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRUFycmF5
UmVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>