<?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>37453</bug_id>
          
          <creation_ts>2010-04-12 10:53:32 -0700</creation_ts>
          <short_desc>Auto-generate V8 bindings for Canvas.* overloads</short_desc>
          <delta_ts>2010-04-19 11:18:45 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37373</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211659</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-12 10:53:32 -0700</bug_when>
    <thetext>Auto-generate V8 bindings for Canvas.* overloads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211670</commentid>
    <comment_count>1</comment_count>
      <attachid>53178</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-12 11:09:33 -0700</bug_when>
    <thetext>Created attachment 53178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211672</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-12 11:14:54 -0700</bug_when>
    <thetext>Attachment 53178 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/1586398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211675</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-12 11:19:37 -0700</bug_when>
    <thetext>Attachment 53178 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1669299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211680</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-12 11:30:59 -0700</bug_when>
    <thetext>Attachment 53178 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1692152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211686</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-12 11:42:29 -0700</bug_when>
    <thetext>Attachment 53178 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1610428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213114</commentid>
    <comment_count>6</comment_count>
      <attachid>53490</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-15 17:00:09 -0700</bug_when>
    <thetext>Created attachment 53490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213115</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-15 17:01:16 -0700</bug_when>
    <thetext>Attachment 53490 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/test/V8TestObj.cpp:308:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213118</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-15 17:05:53 -0700</bug_when>
    <thetext>Attachment 53490 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1651436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213120</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-15 17:07:36 -0700</bug_when>
    <thetext>Attachment 53490 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/1650421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213123</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-15 17:08:51 -0700</bug_when>
    <thetext>Attachment 53490 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1686275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213292</commentid>
    <comment_count>11</comment_count>
      <attachid>53537</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-16 10:49:07 -0700</bug_when>
    <thetext>Created attachment 53537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213293</commentid>
    <comment_count>12</comment_count>
      <attachid>53537</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-16 10:49:58 -0700</bug_when>
    <thetext>Comment on attachment 53537
Patch

Its working! Please cq+ if ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213295</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 10:54:24 -0700</bug_when>
    <thetext>Attachment 53537 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/test/V8TestObj.cpp:308:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/bindings/v8/test/V8TestObj.cpp:436:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213657</commentid>
    <comment_count>14</comment_count>
      <attachid>53537</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-17 13:26:16 -0700</bug_when>
    <thetext>Comment on attachment 53537
Patch

Woah!  This change is awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213661</commentid>
    <comment_count>15</comment_count>
      <attachid>53537</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-17 13:43:39 -0700</bug_when>
    <thetext>Comment on attachment 53537
Patch

Clearing flags on attachment: 53537

Committed r57787: &lt;http://trac.webkit.org/changeset/57787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213662</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-17 13:43:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213664</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-17 14:05:37 -0700</bug_when>
    <thetext>OMG.  How does JSC get this too? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214115</commentid>
    <comment_count>18</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-19 11:18:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; OMG.  How does JSC get this too? :)

I&apos;m still ironing out the quirks of the V8 overloads generation by testing it on more use cases (e.g. WebGL). Once done, I&apos;ll implement also in JSC.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53178</attachid>
            <date>2010-04-12 11:09:33 -0700</date>
            <delta_ts>2010-04-15 17:00:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37453-20100412110932.patch</filename>
            <type>text/plain</type>
            <size>24566</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWM2NTdhYi4uNDE3MDk2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0xMiAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdXRvLWdlbmVyYXRlIFY4IGJpbmRpbmdzIGZvciBjYW52YXMuKiBv
dmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM3NDUzCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwOiBEZWxldGVkIGN1c3RvbSBjb2RlIHRoYXQgaXMgbm93IGF1dG8t
Z2VuZXJhdGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IEFkZGVkIG1pc3NpbmcgOS1hcmd1bWVudHMgb3ZlcmxvYWRzIGZvciBkcmF3SW1hZ2Uu
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6IAorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IE92ZXJsb2Fk
ZWQgbWV0aG9kcyByZWRlZmluZWQgYW5kIG5vdCBDdXN0b20gdW5kZXIgVjguCisKIDIwMTAtMDQt
MDkgIFlhYXIgU2Nobml0bWFuICA8eWFhckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXgg
ZTEwY2U2NC4uMjZmYzYyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtOTgs
MzYyICs5OCw0IEBAIHZvaWQgVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZUFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgaW1wbC0+c2V0RmlsbFN0
eWxlKHRvQ2FudmFzU3R5bGUodmFsdWUpKTsKIH0KIAotLy8gVE9ETzogU2V0U3Ryb2tlQ29sb3Ig
YW5kIFNldEZpbGxDb2xvciBhcmUgc2ltaWxhciBleGNlcHQgZnVuY3Rpb24gbmFtZXMsCi0vLyBj
b25zb2xpZGF0ZSB0aGVtIGludG8gb25lLgotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELnNldFN0cm9rZUNvbG9yKCkiKTsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0gICAgc3dpdGNoIChhcmdzLkxlbmd0aCgpKSB7Ci0gICAgY2FzZSAxOgotICAgICAgICBp
ZiAoYXJnc1swXS0+SXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHRvRmxvYXQoYXJnc1swXSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIDI6Ci0gICAgICAgIGlmIChhcmdzWzBdLT5Jc1N0cmluZygpKQotICAgICAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCB0
b0Zsb2F0KGFyZ3NbMV0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IodG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodG9G
bG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9h
dChhcmdzWzNdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNToKLSAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IodG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9G
bG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFY4UHJveHk6OnRocm93RXJyb3IoVjhQ
cm94eTo6U3ludGF4RXJyb3IsICJzZXRTdHJva2VDb2xvcjogSW52YWxpZCBudW1iZXIgb2YgYXJn
dW1lbnRzIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEZpbGxDb2xvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0g
ICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNldEZpbGxDb2xvcigp
Iik7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHN3aXRjaCAoYXJn
cy5MZW5ndGgoKSkgewotICAgIGNhc2UgMToKLSAgICAgICAgaWYgKGFyZ3NbMF0tPklzU3RyaW5n
KCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cih0b0Zsb2F0KGFyZ3NbMF0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAg
ICBpZiAoYXJnc1swXS0+SXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSkpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodG9GbG9hdChhcmdzWzBd
KSwgdG9GbG9hdChhcmdzWzFdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sx
XSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIDU6Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0b0Zsb2F0KGFyZ3Nb
MF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10p
LCB0b0Zsb2F0KGFyZ3NbNF0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJvciwgInNldEZpbGxDb2xv
cjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3RDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5zdHJva2VSZWN0KCkiKTsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gNSkKLSAgICAgICAgY29udGV4dC0+c3Ryb2tl
UmVjdCh0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0p
LCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pKTsKLSAgICBlbHNlIGlmIChhcmdz
Lkxlbmd0aCgpID09IDQpCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QodG9GbG9hdChhcmdz
WzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNd
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihJTkRFWF9T
SVpFX0VSUik7Ci0gICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwotICAg
IH0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELnNldFNoYWRvdygpIik7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBj
b250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotCi0gICAgc3dpdGNoIChhcmdzLkxlbmd0aCgpKSB7Ci0gICAgY2FzZSAzOgotICAgICAg
ICBjb250ZXh0LT5zZXRTaGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwg
dG9GbG9hdChhcmdzWzJdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgICAg
aWYgKGFyZ3NbM10tPklzU3RyaW5nKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3co
dG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbM10pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4
dC0+c2V0U2hhZG93KHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQo
YXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDU6
Ci0gICAgICAgIGlmIChhcmdzWzNdLT5Jc1N0cmluZygpKQotICAgICAgICAgICAgY29udGV4dC0+
c2V0U2hhZG93KHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJn
c1syXSksIHRvV2ViQ29yZVN0cmluZyhhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyh0b0Zsb2F0KGFyZ3NbMF0p
LCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0
b0Zsb2F0KGFyZ3NbNF0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA3OgotICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9G
bG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSwgdG9GbG9h
dChhcmdzWzVdKSwgdG9GbG9hdChhcmdzWzZdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
ODoKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQo
YXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJn
c1s0XSksIHRvRmxvYXQoYXJnc1s1XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQoYXJnc1s3
XSkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBWOFByb3h5Ojp0aHJv
d0Vycm9yKFY4UHJveHk6OlN5bnRheEVycm9yLCAic2V0U2hhZG93OiBJbnZhbGlkIG51bWJlciBv
ZiBhcmd1bWVudHMiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3SW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQot
ewotICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2Uo
KSIpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzBdOwotCi0gICAgaWYgKFY4SFRNTEltYWdlRWxlbWVu
dDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gVjhIVE1MSW1hZ2VFbGVtZW50
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZykpOwotICAgICAgICBz
d2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChh
cmdzWzJdKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgdG9GbG9hdChhcmdzWzFdKSwgdG9G
bG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSwgZWMpOwot
ICAgICAgICAgICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAgICAgICAgICBWOFByb3h5OjpzZXRE
T01FeGNlcHRpb24oZWMpOwotICAgICAgICAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRl
cmNlcHRvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgOToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIAotICAg
ICAgICAgICAgICAgIEZsb2F0UmVjdCh0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0p
LCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pKSwgCi0gICAgICAgICAgICAgICAg
RmxvYXRSZWN0KHRvRmxvYXQoYXJnc1s1XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQoYXJn
c1s3XSksIHRvRmxvYXQoYXJnc1s4XSkpLAotICAgICAgICAgICAgICAgIGVjKTsKLSAgICAgICAg
ICAgIGlmIChlYyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKGVjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImRyYXdJbWFnZTogSW52YWxpZCBudW1iZXIg
b2YgYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAgLy8gSFRNTENhbnZhc0VsZW1l
bnQKLSAgICBpZiAoVjhIVE1MQ2FudmFzRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhc0VsZW1lbnQgPSBWOEhUTUxDYW52YXNFbGVtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KGFyZykpOwotICAgICAgICBzd2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsK
LSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGNhbnZhc0Vs
ZW1lbnQsIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShj
YW52YXNFbGVtZW50LCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0
KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pLCBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgIT0g
MCkgewotICAgICAgICAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA5OgotICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0
KHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRv
RmxvYXQoYXJnc1s0XSkpLAotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCh0b0Zsb2F0KGFyZ3Nb
NV0pLCB0b0Zsb2F0KGFyZ3NbNl0pLCB0b0Zsb2F0KGFyZ3NbN10pLCB0b0Zsb2F0KGFyZ3NbOF0p
KSwKLSAgICAgICAgICAgICAgICBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAg
ICAgICAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJkcmF3SW1hZ2U6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwotICAgIH0KLQotI2lmIEVOQUJMRShWSURFTykKLSAgICAvLyBIVE1MVmlkZW9FbGVtZW50Ci0g
ICAgaWYgKFY4SFRNTFZpZGVvRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVt
ZW50ID0gVjhIVE1MVmlkZW9FbGVtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZykpOwotICAgICAgICBzd2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsKLSAgICAgICAg
Y2FzZSAzOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHZpZGVvRWxlbWVudCwgdG9G
bG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSA1OgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHZpZGVvRWxlbWVu
dCwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwg
dG9GbG9hdChhcmdzWzRdKSwgZWMpOwotICAgICAgICAgICAgaWYgKGVjICE9IDApIHsKLSAgICAg
ICAgICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwotICAgICAgICAgICAgICAg
IHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJ
bWFnZSh2aWRlb0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0KHRvRmxvYXQoYXJn
c1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0
XSkpLAotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCh0b0Zsb2F0KGFyZ3NbNV0pLCB0b0Zsb2F0
KGFyZ3NbNl0pLCB0b0Zsb2F0KGFyZ3NbN10pLCB0b0Zsb2F0KGFyZ3NbOF0pKSwKLSAgICAgICAg
ICAgICAgICBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAgICAgICAgICAgICAg
IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5v
dEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJkcmF3
SW1hZ2U6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9y
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSKTsK
LSAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLX0KLQotCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZUZyb21SZWN0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRP
TS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlRnJvbVJlY3QoKSIpOwotICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmcgPSBhcmdzWzBdOwotCi0gICAgaWYgKFY4SFRNTEltYWdlRWxlbWVudDo6SGFzSW5zdGFu
Y2UoYXJnKSkgewotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBWOEhU
TUxJbWFnZUVsZW1lbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
KSk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUZyb21SZWN0KGltYWdlRWxlbWVudCwgIHRv
RmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxv
YXQoYXJnc1s0XSksIHRvRmxvYXQoYXJnc1s1XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQo
YXJnc1s3XSksIHRvRmxvYXQoYXJnc1s4XSksIHRvV2ViQ29yZVN0cmluZyhhcmdzWzldKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9y
LCAiZHJhd0ltYWdlRnJvbVJlY3Q6IEludmFsaWQgdHlwZSBvZiBhcmd1bWVudHMiKTsKLQotICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNyZWF0ZVBhdHRlcm4oKSIpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCog
Y29udGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzBdOwotCi0gICAg
aWYgKFY4SFRNTEltYWdlRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAgICAgICBIVE1M
SW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBWOEhUTUxJbWFnZUVsZW1lbnQ6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnKSk7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgICAgICBSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybiA9IGNvbnRl
eHQtPmNyZWF0ZVBhdHRlcm4oaW1hZ2VFbGVtZW50LCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENo
ZWNrKGFyZ3NbMV0pLCBlYyk7Ci0gICAgICAgIGlmIChlYyAhPSAwKSB7Ci0gICAgICAgICAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwotICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRvVjgocGF0dGVy
bi5yZWxlYXNlKCkpOwotICAgIH0KLQotICAgIGlmIChWOEhUTUxDYW52YXNFbGVtZW50OjpIYXNJ
bnN0YW5jZShhcmcpKSB7Ci0gICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50
ID0gVjhIVE1MQ2FudmFzRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmcpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0
cjxDYW52YXNQYXR0ZXJuPiBwYXR0ZXJuID0gY29udGV4dC0+Y3JlYXRlUGF0dGVybihjYW52YXNF
bGVtZW50LCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZ3NbMV0pLCBlYyk7Ci0gICAg
ICAgIGlmIChlYyAhPSAwKSB7Ci0gICAgICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOwotICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRvVjgocGF0dGVybi5yZWxlYXNlKCkpOwotICAgIH0KLQot
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUik7Ci0gICAgcmV0
dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5maWxsVGV4dCgpIik7Ci0KLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0KLSAgICAvLyBUd28gZm9ybXM6Ci0gICAgLy8gKiBmaWxsVGV4dCh0ZXh0LCB4LCB5KQot
ICAgIC8vICogZmlsbFRleHQodGV4dCwgeCwgeSwgbWF4V2lkdGgpCi0gICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAzIHx8IGFyZ3MuTGVuZ3RoKCkgPiA0KSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRleHQgPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSk7Ci0gICAgZmxvYXQgeCA9IHRvRmxvYXQoYXJnc1sxXSk7Ci0gICAgZmxvYXQgeSA9IHRv
RmxvYXQoYXJnc1syXSk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSA0KSB7Ci0gICAgICAg
IGZsb2F0IG1heFdpZHRoID0gdG9GbG9hdChhcmdzWzNdKTsKLSAgICAgICAgY29udGV4dC0+Zmls
bFRleHQodGV4dCwgeCwgeSwgbWF4V2lkdGgpOwotICAgIH0gZWxzZQotICAgICAgICBjb250ZXh0
LT5maWxsVGV4dCh0ZXh0LCB4LCB5KTsKLQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19
Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ry
b2tlVGV4dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NU
QVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnN0cm9rZVRleHQoKSIpOwotICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIC8vIFR3byBmb3JtczoKLSAgICAv
LyAqIHN0cm9rZVRleHQodGV4dCwgeCwgeSkKLSAgICAvLyAqIHN0cm9rZVRleHQodGV4dCwgeCwg
eSwgbWF4V2lkdGgpCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzIHx8IGFyZ3MuTGVuZ3RoKCkg
PiA0KSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAg
ICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgfQotCi0gICAgU3Ry
aW5nIHRleHQgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7Ci0gICAgZmxvYXQgeCA9IHRvRmxv
YXQoYXJnc1sxXSk7Ci0gICAgZmxvYXQgeSA9IHRvRmxvYXQoYXJnc1syXSk7Ci0KLSAgICBpZiAo
YXJncy5MZW5ndGgoKSA9PSA0KSB7Ci0gICAgICAgIGZsb2F0IG1heFdpZHRoID0gdG9GbG9hdChh
cmdzWzNdKTsKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlVGV4dCh0ZXh0LCB4LCB5LCBtYXhXaWR0
aCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVRleHQodGV4dCwgeCwgeSk7
Ci0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgpIik7Ci0KLSAgICAvLyBUd28gZnJvbXM6Ci0gICAg
Ly8gKiBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhLCB4LCB5KQotICAgIC8vICogcHV0SW1hZ2VEYXRh
KEltYWdlRGF0YSwgeCwgeSwgZGlydHlYLCBkaXJ0eVksIGRpcnR5V2lkdGgsIGRpcnR5SGVpZ2h0
KQotICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDMgJiYgYXJncy5MZW5ndGgoKSAhPSA3KSB7Ci0g
ICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0
dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgfQotCi0gICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgSW1hZ2VEYXRhKiBpbWFnZURhdGEgPSAwOwotCi0g
ICAgLy8gTmVlZCB0byBjaGVjayB0aGF0IHRoZSBhcmd1bWVudCBpcyBvZiB0aGUgY29ycmVjdCB0
eXBlLCBzaW5jZQotICAgIC8vIHRvTmF0aXZlKCkgZXhwZWN0cyBpdCB0byBiZSBjb3JyZWN0LiBJ
ZiB0aGUgYXJndW1lbnQgd2FzIGluY29ycmVjdAotICAgIC8vIHdlIGxlYXZlIGl0IG51bGwsIGFu
ZCBwdXRJbWFnZURhdGEoKSB3aWxsIHRocm93IHRoZSBjb3JyZWN0IGV4Y2VwdGlvbgotICAgIC8v
IChUWVBFX01JU01BVENIX0VSUikuCi0gICAgaWYgKFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZU
eXBlKGFyZ3NbMF0sICZWOEltYWdlRGF0YTo6aW5mbykpCi0gICAgICAgIGltYWdlRGF0YSA9IFY4
SW1hZ2VEYXRhOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0p
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PT0gNykKLSAgICAgICAgY29udGV4dC0+cHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdG9GbG9hdChh
cmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdz
WzRdKSwgdG9GbG9hdChhcmdzWzVdKSwgdG9GbG9hdChhcmdzWzZdKSwgZWMpOwotICAgIGVsc2UK
LSAgICAgICAgY29udGV4dC0+cHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdG9GbG9hdChhcmdzWzFd
KSwgdG9GbG9hdChhcmdzWzJdKSwgZWMpOwotCi0gICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAg
VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRC
eUludGVyY2VwdG9yKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDAzNjgyNjEuLjAzMmJiYTAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTk3
MCw2ICs5NzAsMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShI
VE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwKICAgICBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdCgw
LCAwLCBzLndpZHRoKCksIHMuaGVpZ2h0KCkpLCBGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdo
dCksIGVjKTsKIH0KIAordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShI
VE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwKKyAgICBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3
LCBmbG9hdCBzaCwKKyAgICBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qoc3gs
IHN5LCBzdywgc2gpLCBGbG9hdFJlY3QoZHgsIGR5LCBkdywgZGgpLCBlYyk7Cit9CisKIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAog
ICAgIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpAQCAtMTAyMiw2ICsxMDI5LDEzIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cywKICAgICBkcmF3SW1hZ2UoY2FudmFzLCBGbG9hdFJlY3QoMCwgMCwgY2FudmFzLT53aWR0aCgp
LCBjYW52YXMtPmhlaWdodCgpKSwgRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBlYyk7
CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZh
c0VsZW1lbnQqIGNhbnZhcywKKyAgICBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9h
dCBzaCwKKyAgICBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgZHJhd0ltYWdlKGNhbnZhcywgRmxvYXRSZWN0KHN4LCBzeSwg
c3csIHNoKSwgRmxvYXRSZWN0KGR4LCBkeSwgZHcsIGRoKSwgZWMpOworfQorCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2VD
YW52YXMsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpAQCAtMTA3Nyw2ICsxMDkxLDEzIEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW8sCiAgICAgZHJhd0ltYWdlKHZpZGVvLCBGbG9hdFJlY3QoMCwgMCwgcy53aWR0aCgpLCBzLmhl
aWdodCgpKSwgRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBlYyk7CiB9CiAKK3ZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW8sCisgICAgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gsCisgICAgZmxv
YXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGRyYXdJbWFnZSh2aWRlbywgRmxvYXRSZWN0KHN4LCBzeSwgc3csIHNoKSwgRmxvYXRS
ZWN0KGR4LCBkeSwgZHcsIGRoKSwgZWMpOworfQorCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA3ZWJkNDg5Li41Yjkz
YzkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKQEAgLTE1NiwxMyArMTU2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSk7CiAgICAg
ICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQg
ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3
LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCosIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiwgZmxv
YXQgeCwgZmxvYXQgeSk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50
KiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCosIGZsb2F0
IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZs
b2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIGRyYXdJbWFn
ZShIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBFeGNlcHRpb25Db2RlJik7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
ICAgICB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSk7
CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAg
IHZvaWQgZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZs
b2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBF
eGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IGY5M2E3NTIuLjg5MThmNmEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysg
Yi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKQEAgLTgy
LDggKzgyLDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZv
bnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dEFsaWduOwogICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHRleHRCYXNlbGluZTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBmaWxs
VGV4dCgvKiA0ICovKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VUZXh0KC8qIDQgKi8p
OworCisgICAgICAgIHZvaWQgZmlsbFRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGluIGZsb2F0IHgs
IGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gbWF4V2lkdGgpOworICAgICAgICB2b2lkIHN0cm9r
ZVRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIFtPcHRp
b25hbF0gbWF4V2lkdGgpOwogICAgICAgICBUZXh0TWV0cmljcyBtZWFzdXJlVGV4dChpbiBET01T
dHJpbmcgdGV4dCk7CiAKICAgICAgICAgLy8gb3RoZXIKQEAgLTk4LDYgKzk5LDUzIEBAIG1vZHVs
ZSBodG1sIHsKIAogICAgICAgICB2b2lkIGNsZWFyU2hhZG93KCk7CiAKKyNpZiBkZWZpbmVkKFY4
X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKKyAgICAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihpbiBE
T01TdHJpbmcgY29sb3IsIGluIFtPcHRpb25hbF0gZmxvYXQgYWxwaGEpOworICAgICAgICB2b2lk
IHNldFN0cm9rZUNvbG9yKGluIGZsb2F0IGdyYXlMZXZlbCwgaW4gW09wdGlvbmFsXSBmbG9hdCBh
bHBoYSk7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoaW4gZmxvYXQgciwgaW4gZmxvYXQg
ZywgaW4gZmxvYXQgYiwgaW4gZmxvYXQgYSk7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3Io
aW4gZmxvYXQgYywgaW4gZmxvYXQgbSwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgaywgaW4gZmxvYXQg
YSk7CisKKyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoaW4gRE9NU3RyaW5nIGNvbG9yLCBpbiBb
T3B0aW9uYWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoaW4gZmxv
YXQgZ3JheUxldmVsLCBpbiBbT3B0aW9uYWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBz
ZXRGaWxsQ29sb3IoaW4gZmxvYXQgciwgaW4gZmxvYXQgZywgaW4gZmxvYXQgYiwgaW4gZmxvYXQg
YSk7CisgICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGluIGZsb2F0IGMsIGluIGZsb2F0IG0sIGlu
IGZsb2F0IHksIGluIGZsb2F0IGssIGluIGZsb2F0IGEpOworCisgICAgICAgIHZvaWQgc3Ryb2tl
UmVjdChpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB3aWR0aCwgaW4gZmxvYXQgaGVp
Z2h0LCBpbiBbT3B0aW9uYWxdIGxpbmVXaWR0aCk7CisKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2Uo
aW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CisgICAg
ICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIGZsb2F0IHgs
IGluIGZsb2F0IHksIGluIGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQpCisgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxW
aWRlb0VsZW1lbnQgaW1hZ2UsIGluIGZsb2F0IHN4LCBpbiBmbG9hdCBzeSwgaW4gZmxvYXQgc3cs
IGluIGZsb2F0IHNoLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHksIGluIGZsb2F0IGR3LCBpbiBm
bG9hdCBkaCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsgICAgICAgICAgICAK
KyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoaW4gSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCBpbiBm
bG9hdCB4LCBpbiBmbG9hdCB5KTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoaW4gSFRNTENhbnZh
c0VsZW1lbnQgY2FudmFzLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB3aWR0aCwg
aW4gZmxvYXQgaGVpZ2h0KQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
ICAgICB2b2lkIGRyYXdJbWFnZShpbiBIVE1MVmlkZW9FbGVtZW50IGNhbnZhcywgaW4gZmxvYXQg
c3gsIGluIGZsb2F0IHN5LCBpbiBmbG9hdCBzdywgaW4gZmxvYXQgc2gsIGluIGZsb2F0IGR4LCBp
biBmbG9hdCBkeSwgaW4gZmxvYXQgZHcsIGluIGZsb2F0IGRoKQorICAgICAgICAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOyAgICAgICAgICAgIAorI2lmIEVOQUJMRShWSURFTykKKyAgICAgICAg
dm9pZCBkcmF3SW1hZ2UoaW4gSFRNTFZpZGVvRWxlbWVudCB2aWRlbywgaW4gZmxvYXQgeCwgaW4g
ZmxvYXQgeSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxWaWRlb0VsZW1lbnQgdmlk
ZW8sIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBoZWln
aHQpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgZHJh
d0ltYWdlKGluIEhUTUxWaWRlb0VsZW1lbnQgdmlkZW8sIGluIGZsb2F0IHN4LCBpbiBmbG9hdCBz
eSwgaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHksIGlu
IGZsb2F0IGR3LCBpbiBmbG9hdCBkaCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsgICAgICAgICAgICAKKyNlbmRpZgorICAgICAgICB2b2lkIGRyYXdJbWFnZUZyb21SZWN0KGlu
IEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gZmxvYXQgc3gsIGluIGZsb2F0IHN5LCBpbiBmbG9hdCBzdywgaW4gZmxvYXQgc2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gZmxvYXQgZHgsIGluIGZsb2F0IGR5LCBpbiBm
bG9hdCBkdywgaW4gZmxvYXQgZGgsIGluIERPTVN0cmluZyBjb21wb3NpdGVPcGVyYXRpb24pOwor
CisgICAgICAgIHZvaWQgc2V0U2hhZG93KGluIGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQs
IGluIGZsb2F0IGJsdXIsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGNvbG9yLCBpbiBbT3B0aW9u
YWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBzZXRTaGFkb3coaW4gZmxvYXQgd2lkdGgs
IGluIGZsb2F0IGhlaWdodCwgaW4gZmxvYXQgYmx1ciwgaW4gZmxvYXQgZ3JheUxldmVsLCBpbiBb
T3B0aW9uYWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBzZXRTaGFkb3coaW4gZmxvYXQg
d2lkdGgsIGluIGZsb2F0IGhlaWdodCwgaW4gZmxvYXQgYmx1ciwgaW4gZmxvYXQgciwgaW4gZmxv
YXQgZywgaW4gZmxvYXQgYiwgaW4gZmxvYXQgYSk7CisgICAgICAgIHZvaWQgc2V0U2hhZG93KGlu
IGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQsIGluIGZsb2F0IGJsdXIsIGluIGZsb2F0IGMs
IGluIGZsb2F0IG0sIGluIGZsb2F0IHksIGluIGZsb2F0IGssIGluIGZsb2F0IGEpOworCisgICAg
ICAgIENhbnZhc1BhdHRlcm4gY3JlYXRlUGF0dGVybihpbiBIVE1MSW1hZ2VFbGVtZW50IGltYWdl
LCBpbiBET01TdHJpbmcgcmVwZXRpdGlvblR5cGUpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIENhbnZhc1BhdHRlcm4gY3JlYXRlUGF0dGVybihpbiBIVE1MQ2Fu
dmFzRWxlbWVudCBjYW52YXMsIGluIERPTVN0cmluZyByZXBldGl0aW9uVHlwZSkKKyAgICAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBwdXRJbWFnZURhdGEoaW4g
SW1hZ2VEYXRhIGltYWdlZGF0YSwgaW4gZmxvYXQgZHgsIGluIGZsb2F0IGR5LCBbT3B0aW9uYWxd
IGluIGZsb2F0IGRpcnR5WCwgaW4gZmxvYXQgZGlydHlZLCBpbiBmbG9hdCBkaXJ0eVdpZHRoLCBp
biBmbG9hdCBkaXJ0eUhlaWdodCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwor
I2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSAnZWxzZScgb25jZSBKU0Mgc3VwcG9ydHMg
b3ZlcmxvYWRzIHRvby4KICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRTdHJva2VDb2xvcigvKiAx
ICAqLyk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgc2V0RmlsbENvbG9yKC8qIDEgKi8pOwogICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHN0cm9rZVJlY3QoLyogNCAqLyk7CkBAIC0xMDUsNyArMTUzLDkg
QEAgbW9kdWxlIGh0bWwgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGRyYXdJbWFnZUZyb21SZWN0
KC8qIDEwICovKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRTaGFkb3coLyogMyAqLyk7CiAg
ICAgICAgIFtDdXN0b21dIHZvaWQgY3JlYXRlUGF0dGVybigvKiAyICovKTsKLSAgICAgICAgCisg
ICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIEltYWdlRGF0YSBpbWFnZWRh
dGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBkaXJ0eVgsIGluIGZsb2F0
IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGlydHlIZWlnaHRdICovKTsK
KyNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKICAgICAgICAgYXR0cmlidXRlIFtDdXN0
b21dIGN1c3RvbSBzdHJva2VTdHlsZTsKICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIGN1c3Rv
bSBmaWxsU3R5bGU7CiAgICAgICAgIApAQCAtMTE0LDcgKzE2NCw2IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgSW1hZ2VEYXRhIGdl
dEltYWdlRGF0YShpbiBmbG9hdCBzeCwgaW4gZmxvYXQgc3ksIGluIGZsb2F0IHN3LCBpbiBmbG9h
dCBzaCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBbQ3VzdG9t
XSB2b2lkIHB1dEltYWdlRGF0YSgvKiBpbiBJbWFnZURhdGEgaW1hZ2VkYXRhLCBpbiBmbG9hdCBk
eCwgaW4gZmxvYXQgZHkgWywgaW4gZmxvYXQgZGlydHlYLCBpbiBmbG9hdCBkaXJ0eVksIGluIGZs
b2F0IGRpcnR5V2lkdGgsIGluIGZsb2F0IGRpcnR5SGVpZ2h0XSAqLyk7CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53490</attachid>
            <date>2010-04-15 17:00:09 -0700</date>
            <delta_ts>2010-04-16 10:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37453-20100415170008.patch</filename>
            <type>text/plain</type>
            <size>27659</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzI1MGRmNS4uMDRlNWNmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNC0xMiAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdXRvLWdlbmVyYXRlIFY4IGJpbmRpbmdzIGZvciBjYW52YXMuKiBv
dmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM3NDUzCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwOiBEZWxldGVkIGN1c3RvbSBjb2RlIHRoYXQgaXMgbm93IGF1dG8t
Z2VuZXJhdGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OiBNaW5vciBidWcgZml4LgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdJbWFnZSk6IEFkZGVkIG1pc3NpbmcgOS1hcmd1bWVudHMgb3ZlcmxvYWRzIGZvciBkcmF3
SW1hZ2UuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6
IAorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IE92
ZXJsb2FkZWQgbWV0aG9kcyBkZWZpbmVkIChWOCBvbmx5KS4KKwogMjAxMC0wNC0xNSAgTmlrb2xh
cyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBCZXRoIERha2luLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggOGVjMTE1ZC4uNDE2Njg3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiAgICAgICAgICMgT25seSBET01TdHJpbmcgb3Igd3JhcHBl
ciB0eXBlcyBhcmUgY2hlY2tlZC4KICAgICAgICAgIyBGb3IgRE9NU3RyaW5nLCBOdWxsIG9yIFVu
ZGVmaW5lZCBhcmUgYWNjZXB0ZWQgdG9vLCBhcyB0aGVzZSBhcmUKICAgICAgICAgIyB1c3VhbGx5
IGFjY2VwdGFibGUgdmFsdWVzIGZvciBhIERPTVN0cmluZyBhcmd1bWVudC4KLSAgICAgICAgcHVz
aChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5Jc051bGwoKSB8fCAke3ZhbHVlfS5Jc1VuZGVm
aW5lZCgpIHx8ICR7dmFsdWV9LklzU3RyaW5nKCkpIikgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3Ry
aW5nVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0t
PklzTnVsbCgpIHx8ICR7dmFsdWV9LT5Jc1VuZGVmaW5lZCgpIHx8ICR7dmFsdWV9LT5Jc1N0cmlu
ZygpKSIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwogICAgICAgICBw
dXNoKEBhbmRFeHByZXNzaW9uLCAiVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUpIikgaWYg
SXNXcmFwcGVyVHlwZSgkdHlwZSk7CiAKICAgICAgICAgJHBhcmFtZXRlckluZGV4Kys7CkBAIC0x
MDc3LDYgKzEwNzcsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjawog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykgewogICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4kbmFt
ZVwiKTsKIEVORAorCiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQgKEB7JGZ1bmN0aW9uLT57b3Zl
cmxvYWRzfX0pIHsKICAgICAgICAgbXkgJHBhcmFtZXRlcnNDaGVjayA9IEdlbmVyYXRlRnVuY3Rp
b25QYXJhbWV0ZXJzQ2hlY2soJG92ZXJsb2FkKTsKICAgICAgICAgaWYgKCRvdmVybG9hZC0+e292
ZXJsb2FkSW5kZXh9ID09IDEpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCBl
MTBjZTY0Li4yNmZjNjI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC05OCwz
NjIgKzk4LDQgQEAgdm9pZCBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlQWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBpbXBsLT5zZXRGaWxsU3R5
bGUodG9DYW52YXNTdHlsZSh2YWx1ZSkpOwogfQogCi0vLyBUT0RPOiBTZXRTdHJva2VDb2xvciBh
bmQgU2V0RmlsbENvbG9yIGFyZSBzaW1pbGFyIGV4Y2VwdCBmdW5jdGlvbiBuYW1lcywKLS8vIGNv
bnNvbGlkYXRlIHRoZW0gaW50byBvbmUuCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuc2V0U3Ryb2tlQ29sb3IoKSIpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29u
dGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICBzd2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsKLSAgICBjYXNlIDE6Ci0gICAgICAgIGlm
IChhcmdzWzBdLT5Jc1N0cmluZygpKQotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodG9GbG9hdChhcmdzWzBdKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKGFyZ3NbMF0tPklzU3RyaW5nKCkpCi0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRv
RmxvYXQoYXJnc1sxXSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcih0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcih0b0Zs
b2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0
KGFyZ3NbM10pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA1OgotICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcih0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zs
b2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFBy
b3h5OjpTeW50YXhFcnJvciwgInNldFN0cm9rZUNvbG9yOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1
bWVudHMiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0RmlsbENvbG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2V0RmlsbENvbG9yKCki
KTsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgc3dpdGNoIChhcmdz
Lkxlbmd0aCgpKSB7Ci0gICAgY2FzZSAxOgotICAgICAgICBpZiAoYXJnc1swXS0+SXNTdHJpbmco
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSkpOwotICAgICAgICBlbHNlIAotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KHRvRmxvYXQoYXJnc1swXSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAg
IGlmIChhcmdzWzBdLT5Jc1N0cmluZygpKQotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0b0Zsb2F0KGFyZ3NbMF0p
LCB0b0Zsb2F0KGFyZ3NbMV0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFd
KSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgNToKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRvRmxvYXQoYXJnc1sw
XSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSks
IHRvRmxvYXQoYXJnc1s0XSkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRheEVycm9yLCAic2V0RmlsbENvbG9y
OiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlUmVjdENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELnN0cm9rZVJlY3QoKSIpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29u
dGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSA1KQotICAgICAgICBjb250ZXh0LT5zdHJva2VS
ZWN0KHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSks
IHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0XSkpOwotICAgIGVsc2UgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPT0gNCkKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdCh0b0Zsb2F0KGFyZ3Nb
MF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10p
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKElOREVYX1NJ
WkVfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAg
fQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuc2V0U2hhZG93KCkiKTsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0KLSAgICBzd2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsKLSAgICBjYXNlIDM6Ci0gICAgICAg
IGNvbnRleHQtPnNldFNoYWRvdyh0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0
b0Zsb2F0KGFyZ3NbMl0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAgICBp
ZiAoYXJnc1szXS0+SXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyh0
b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b1dl
YkNvcmVTdHJpbmcoYXJnc1szXSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0
LT5zZXRTaGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChh
cmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNToK
LSAgICAgICAgaWYgKGFyZ3NbM10tPklzU3RyaW5nKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdz
WzJdKSwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHRvRmxvYXQoYXJnc1swXSks
IHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRv
RmxvYXQoYXJnc1s0XSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDc6Ci0gICAgICAgIGNv
bnRleHQtPnNldFNoYWRvdyh0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zs
b2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pLCB0b0Zsb2F0
KGFyZ3NbNV0pLCB0b0Zsb2F0KGFyZ3NbNl0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA4
OgotICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChh
cmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdz
WzRdKSwgdG9GbG9hdChhcmdzWzVdKSwgdG9GbG9hdChhcmdzWzZdKSwgdG9GbG9hdChhcmdzWzdd
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFY4UHJveHk6OnRocm93
RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IsICJzZXRTaGFkb3c6IEludmFsaWQgbnVtYmVyIG9m
IGFyZ3VtZW50cyIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdJbWFnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17
Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZSgp
Iik7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZyA9IGFyZ3NbMF07Ci0KLSAgICBpZiAoVjhIVE1MSW1hZ2VFbGVtZW50
OjpIYXNJbnN0YW5jZShhcmcpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
ICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBWOEhUTUxJbWFnZUVsZW1lbnQ6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnKSk7Ci0gICAgICAgIHN3
aXRjaCAoYXJncy5MZW5ndGgoKSkgewotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFy
Z3NbMl0pKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAg
ICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zs
b2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pLCBlYyk7Ci0g
ICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAgICAgICAgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSA5OgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgCi0gICAg
ICAgICAgICAgICAgRmxvYXRSZWN0KHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSks
IHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0XSkpLCAKLSAgICAgICAgICAgICAgICBG
bG9hdFJlY3QodG9GbG9hdChhcmdzWzVdKSwgdG9GbG9hdChhcmdzWzZdKSwgdG9GbG9hdChhcmdz
WzddKSwgdG9GbG9hdChhcmdzWzhdKSksCi0gICAgICAgICAgICAgICAgZWMpOwotICAgICAgICAg
ICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAgICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRp
b24oZWMpOwotICAgICAgICAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiZHJhd0ltYWdlOiBJbnZhbGlkIG51bWJlciBv
ZiBhcmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICAvLyBIVE1MQ2FudmFzRWxlbWVu
dAotICAgIGlmIChWOEhUTUxDYW52YXNFbGVtZW50OjpIYXNJbnN0YW5jZShhcmcpKSB7Ci0gICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzRWxlbWVudCA9IFY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnKSk7Ci0gICAgICAgIHN3aXRjaCAoYXJncy5MZW5ndGgoKSkgewot
ICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoY2FudmFzRWxl
bWVudCwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGNh
bnZhc0VsZW1lbnQsIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQo
YXJnc1szXSksIHRvRmxvYXQoYXJnc1s0XSksIGVjKTsKLSAgICAgICAgICAgIGlmIChlYyAhPSAw
KSB7Ci0gICAgICAgICAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDk6Ci0gICAgICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwKLSAgICAgICAgICAgICAgICBGbG9hdFJlY3Qo
dG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9G
bG9hdChhcmdzWzRdKSksCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0KHRvRmxvYXQoYXJnc1s1
XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQoYXJnc1s3XSksIHRvRmxvYXQoYXJnc1s4XSkp
LAotICAgICAgICAgICAgICAgIGVjKTsKLSAgICAgICAgICAgIGlmIChlYyAhPSAwKSB7Ci0gICAg
ICAgICAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoImRyYXdJbWFnZTogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIiwgVjhQcm94eTo6
U3ludGF4RXJyb3IpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Ci0gICAgfQotCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIC8vIEhUTUxWaWRlb0VsZW1lbnQKLSAg
ICBpZiAoVjhIVE1MVmlkZW9FbGVtZW50OjpIYXNJbnN0YW5jZShhcmcpKSB7Ci0gICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1l
bnQgPSBWOEhUTUxWaWRlb0VsZW1lbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnKSk7Ci0gICAgICAgIHN3aXRjaCAoYXJncy5MZW5ndGgoKSkgewotICAgICAgICBj
YXNlIDM6Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW9FbGVtZW50LCB0b0Zs
b2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW9FbGVtZW50
LCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0
b0Zsb2F0KGFyZ3NbNF0pLCBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAgICAg
ICAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSA5OgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKHZpZGVvRWxlbWVudCwKLSAgICAgICAgICAgICAgICBGbG9hdFJlY3QodG9GbG9hdChhcmdz
WzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRd
KSksCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0KHRvRmxvYXQoYXJnc1s1XSksIHRvRmxvYXQo
YXJnc1s2XSksIHRvRmxvYXQoYXJnc1s3XSksIHRvRmxvYXQoYXJnc1s4XSkpLAotICAgICAgICAg
ICAgICAgIGVjKTsKLSAgICAgICAgICAgIGlmIChlYyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAg
VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm90
SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImRyYXdJ
bWFnZTogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3Ip
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIpOwot
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwotfQotCi0KLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlRnJvbVJlY3RD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9N
LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2VGcm9tUmVjdCgpIik7Ci0gICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFyZyA9IGFyZ3NbMF07Ci0KLSAgICBpZiAoVjhIVE1MSW1hZ2VFbGVtZW50OjpIYXNJbnN0YW5j
ZShhcmcpKSB7Ci0gICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IFY4SFRN
TEltYWdlRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcp
KTsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlRnJvbVJlY3QoaW1hZ2VFbGVtZW50LCAgdG9G
bG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9h
dChhcmdzWzRdKSwgdG9GbG9hdChhcmdzWzVdKSwgdG9GbG9hdChhcmdzWzZdKSwgdG9GbG9hdChh
cmdzWzddKSwgdG9GbG9hdChhcmdzWzhdKSwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbOV0pKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3Is
ICJkcmF3SW1hZ2VGcm9tUmVjdDogSW52YWxpZCB0eXBlIG9mIGFyZ3VtZW50cyIpOwotCi0gICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3JlYXRlUGF0dGVybigpIik7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBj
b250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZyA9IGFyZ3NbMF07Ci0KLSAgICBp
ZiAoVjhIVE1MSW1hZ2VFbGVtZW50OjpIYXNJbnN0YW5jZShhcmcpKSB7Ci0gICAgICAgIEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IFY4SFRNTEltYWdlRWxlbWVudDo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiBwYXR0ZXJuID0gY29udGV4
dC0+Y3JlYXRlUGF0dGVybihpbWFnZUVsZW1lbnQsIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hl
Y2soYXJnc1sxXSksIGVjKTsKLSAgICAgICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICByZXR1cm4gbm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdG9WOChwYXR0ZXJu
LnJlbGVhc2UoKSk7Ci0gICAgfQotCi0gICAgaWYgKFY4SFRNTENhbnZhc0VsZW1lbnQ6Okhhc0lu
c3RhbmNlKGFyZykpIHsKLSAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhc0VsZW1lbnQg
PSBWOEhUTUxDYW52YXNFbGVtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZykpOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgUmVmUHRy
PENhbnZhc1BhdHRlcm4+IHBhdHRlcm4gPSBjb250ZXh0LT5jcmVhdGVQYXR0ZXJuKGNhbnZhc0Vs
ZW1lbnQsIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1sxXSksIGVjKTsKLSAgICAg
ICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihl
Yyk7Ci0gICAgICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdG9WOChwYXR0ZXJuLnJlbGVhc2UoKSk7Ci0gICAgfQotCi0g
ICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsVGV4dENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmZpbGxUZXh0KCkiKTsKLQotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29u
dGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLQotICAgIC8vIFR3byBmb3JtczoKLSAgICAvLyAqIGZpbGxUZXh0KHRleHQsIHgsIHkpCi0g
ICAgLy8gKiBmaWxsVGV4dCh0ZXh0LCB4LCB5LCBtYXhXaWR0aCkKLSAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDMgfHwgYXJncy5MZW5ndGgoKSA+IDQpIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKFNZTlRBWF9FUlIpOwotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJj
ZXB0b3IoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdGV4dCA9IHRvV2ViQ29yZVN0cmluZyhhcmdz
WzBdKTsKLSAgICBmbG9hdCB4ID0gdG9GbG9hdChhcmdzWzFdKTsKLSAgICBmbG9hdCB5ID0gdG9G
bG9hdChhcmdzWzJdKTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDQpIHsKLSAgICAgICAg
ZmxvYXQgbWF4V2lkdGggPSB0b0Zsb2F0KGFyZ3NbM10pOwotICAgICAgICBjb250ZXh0LT5maWxs
VGV4dCh0ZXh0LCB4LCB5LCBtYXhXaWR0aCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNvbnRleHQt
PmZpbGxUZXh0KHRleHQsIHgsIHkpOwotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0K
LQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJv
a2VUZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RB
VFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc3Ryb2tlVGV4dCgpIik7Ci0gICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgLy8gVHdvIGZvcm1zOgotICAgIC8v
ICogc3Ryb2tlVGV4dCh0ZXh0LCB4LCB5KQotICAgIC8vICogc3Ryb2tlVGV4dCh0ZXh0LCB4LCB5
LCBtYXhXaWR0aCkKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDMgfHwgYXJncy5MZW5ndGgoKSA+
IDQpIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOwotICAg
ICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICB9Ci0KLSAgICBTdHJp
bmcgdGV4dCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKLSAgICBmbG9hdCB4ID0gdG9GbG9h
dChhcmdzWzFdKTsKLSAgICBmbG9hdCB5ID0gdG9GbG9hdChhcmdzWzJdKTsKLQotICAgIGlmIChh
cmdzLkxlbmd0aCgpID09IDQpIHsKLSAgICAgICAgZmxvYXQgbWF4V2lkdGggPSB0b0Zsb2F0KGFy
Z3NbM10pOwotICAgICAgICBjb250ZXh0LT5zdHJva2VUZXh0KHRleHQsIHgsIHksIG1heFdpZHRo
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlVGV4dCh0ZXh0LCB4LCB5KTsK
LQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQucHV0SW1hZ2VEYXRhKCkiKTsKLQotICAgIC8vIFR3byBmcm9tczoKLSAgICAv
LyAqIHB1dEltYWdlRGF0YShJbWFnZURhdGEsIHgsIHkpCi0gICAgLy8gKiBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhLCB4LCB5LCBkaXJ0eVgsIGRpcnR5WSwgZGlydHlXaWR0aCwgZGlydHlIZWlnaHQp
Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMyAmJiBhcmdzLkxlbmd0aCgpICE9IDcpIHsKLSAg
ICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOwotICAgICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICB9Ci0KLSAgICBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0KLSAgICBJbWFnZURhdGEqIGltYWdlRGF0YSA9IDA7Ci0KLSAg
ICAvLyBOZWVkIHRvIGNoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IGlzIG9mIHRoZSBjb3JyZWN0IHR5
cGUsIHNpbmNlCi0gICAgLy8gdG9OYXRpdmUoKSBleHBlY3RzIGl0IHRvIGJlIGNvcnJlY3QuIElm
IHRoZSBhcmd1bWVudCB3YXMgaW5jb3JyZWN0Ci0gICAgLy8gd2UgbGVhdmUgaXQgbnVsbCwgYW5k
IHB1dEltYWdlRGF0YSgpIHdpbGwgdGhyb3cgdGhlIGNvcnJlY3QgZXhjZXB0aW9uCi0gICAgLy8g
KFRZUEVfTUlTTUFUQ0hfRVJSKS4KLSAgICBpZiAoVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5
cGUoYXJnc1swXSwgJlY4SW1hZ2VEYXRhOjppbmZvKSkKLSAgICAgICAgaW1hZ2VEYXRhID0gVjhJ
bWFnZURhdGE6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA9
PSA3KQotICAgICAgICBjb250ZXh0LT5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0b0Zsb2F0KGFy
Z3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3Nb
NF0pLCB0b0Zsb2F0KGFyZ3NbNV0pLCB0b0Zsb2F0KGFyZ3NbNl0pLCBlYyk7Ci0gICAgZWxzZQot
ICAgICAgICBjb250ZXh0LT5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0b0Zsb2F0KGFyZ3NbMV0p
LCB0b0Zsb2F0KGFyZ3NbMl0pLCBlYyk7Ci0KLSAgICBpZiAoZWMgIT0gMCkgewotICAgICAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L3Rlc3QvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9WOFRlc3RPYmou
Y3BwCmluZGV4IDhmODNmYzUuLmNjYWFhMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvdGVzdC9WOFRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9WOFRl
c3RPYmouY3BwCkBAIC0zMDUsMTEgKzMwNSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2Q0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2RDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5v
dmVybG9hZGVkTWV0aG9kIik7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDIgJiYgVjhUZXN0
T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSAmJiAoYXJnc1sxXS5Jc051bGwoKSB8fCBhcmdzWzFd
LklzVW5kZWZpbmVkKCkgfHwgYXJnc1sxXS5Jc1N0cmluZygpKSkpIHsKKyAgICBpZiAoKGFyZ3Mu
TGVuZ3RoKCkgPT0gMiAmJiBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pICYmIChhcmdz
WzFdLT5Jc051bGwoKSB8fCBhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMV0tPklzU3Ry
aW5nKCkpKSkgewogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayhhcmdz
KTsKICAgICB9IGVsc2UgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZShhcmdzWzBdKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiBWOFRlc3RPYmo6Okhh
c0luc3RhbmNlKGFyZ3NbMF0pKSkgewogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDJD
YWxsYmFjayhhcmdzKTsKLSAgICB9IGVsc2UgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFy
Z3NbMF0uSXNOdWxsKCkgfHwgYXJnc1swXS5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMF0uSXNTdHJp
bmcoKSkpKSB7CisgICAgfSBlbHNlIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBd
LT5Jc051bGwoKSB8fCBhcmdzWzBdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMF0tPklzU3RyaW5n
KCkpKSkgewogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDNDYWxsYmFjayhhcmdzKTsK
ICAgICB9IGVsc2UgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMSkgewogICAgICAgICByZXR1cm4gb3Zl
cmxvYWRlZE1ldGhvZDRDYWxsYmFjayhhcmdzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAwMzY4MjYxLi4wMzJiYmEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBA
IC05NzAsNiArOTcwLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsCiAgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJl
Y3QoMCwgMCwgcy53aWR0aCgpLCBzLmhlaWdodCgpKSwgRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBlYyk7CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsCisgICAgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9h
dCBzdywgZmxvYXQgc2gsCisgICAgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQg
ZGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0
KHN4LCBzeSwgc3csIHNoKSwgRmxvYXRSZWN0KGR4LCBkeSwgZHcsIGRoKSwgZWMpOworfQorCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQq
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwKICAgICBFeGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTEwMjIsNiArMTAyOSwxMyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiBj
YW52YXMsCiAgICAgZHJhd0ltYWdlKGNhbnZhcywgRmxvYXRSZWN0KDAsIDAsIGNhbnZhcy0+d2lk
dGgoKSwgY2FudmFzLT5oZWlnaHQoKSksIEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwg
ZWMpOwogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMsCisgICAgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywg
ZmxvYXQgc2gsCisgICAgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGRyYXdJbWFnZShjYW52YXMsIEZsb2F0UmVjdChzeCwg
c3ksIHN3LCBzaCksIEZsb2F0UmVjdChkeCwgZHksIGR3LCBkaCksIGVjKTsKK30KKwogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogc291
cmNlQ2FudmFzLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTEwNzcsNiArMTA5MSwxMyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvLAogICAgIGRyYXdJbWFnZSh2aWRlbywgRmxvYXRSZWN0KDAsIDAsIHMud2lkdGgoKSwg
cy5oZWlnaHQoKSksIEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZWMpOwogfQogCit2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvLAorICAgIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLAorICAg
IGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBkcmF3SW1hZ2UodmlkZW8sIEZsb2F0UmVjdChzeCwgc3ksIHN3LCBzaCksIEZs
b2F0UmVjdChkeCwgZHksIGR3LCBkaCksIGVjKTsKK30KKwogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggN2ViZDQ4OS4u
NWI5M2M5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCkBAIC0xNTYsMTMgKzE1NiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCosIGZsb2F0IHgsIGZsb2F0IHkpOwog
ICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2
b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9h
dCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQq
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCos
IGZsb2F0IHgsIGZsb2F0IHkpOwogICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MQ2FudmFzRWxl
bWVudCosIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqLCBm
bG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5
LCBmbG9hdCBkdywgZmxvYXQgZGgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBkcmF3
SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJMRShWSURFTykK
ICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIGZsb2F0IHgsIGZsb2F0
IHkpOwogICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOworICAg
ICAgICB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5
LCBmbG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0
IGRoLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxWaWRlb0Vs
ZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAppbmRleCBmOTNhNzUyLi44NGU5OTZhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwK
KysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBA
IC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKIG1vZHVsZSBodG1sIHsKQEAg
LTgyLDggKzgyLDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGZvbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdGV4dEFsaWduOwogICAgICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHRleHRCYXNlbGluZTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBm
aWxsVGV4dCgvKiA0ICovKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VUZXh0KC8qIDQg
Ki8pOworCisgICAgICAgIHZvaWQgZmlsbFRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGluIGZsb2F0
IHgsIGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gZmxvYXQgbWF4V2lkdGgpOworICAgICAgICB2
b2lkIHN0cm9rZVRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGluIGZsb2F0IHgsIGluIGZsb2F0IHks
IGluIFtPcHRpb25hbF0gZmxvYXQgbWF4V2lkdGgpOwogICAgICAgICBUZXh0TWV0cmljcyBtZWFz
dXJlVGV4dChpbiBET01TdHJpbmcgdGV4dCk7CiAKICAgICAgICAgLy8gb3RoZXIKQEAgLTk4LDYg
Kzk5LDUzIEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICB2b2lkIGNsZWFyU2hhZG93KCk7CiAK
KyNpZiBkZWZpbmVkKFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKKyAgICAgICAgdm9pZCBzZXRT
dHJva2VDb2xvcihpbiBET01TdHJpbmcgY29sb3IsIGluIFtPcHRpb25hbF0gZmxvYXQgYWxwaGEp
OworICAgICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGluIGZsb2F0IGdyYXlMZXZlbCwgaW4gW09w
dGlvbmFsXSBmbG9hdCBhbHBoYSk7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoaW4gZmxv
YXQgciwgaW4gZmxvYXQgZywgaW4gZmxvYXQgYiwgaW4gZmxvYXQgYSk7CisgICAgICAgIHZvaWQg
c2V0U3Ryb2tlQ29sb3IoaW4gZmxvYXQgYywgaW4gZmxvYXQgbSwgaW4gZmxvYXQgeSwgaW4gZmxv
YXQgaywgaW4gZmxvYXQgYSk7CisKKyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoaW4gRE9NU3Ry
aW5nIGNvbG9yLCBpbiBbT3B0aW9uYWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBzZXRG
aWxsQ29sb3IoaW4gZmxvYXQgZ3JheUxldmVsLCBpbiBbT3B0aW9uYWxdIGZsb2F0IGFscGhhKTsK
KyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoaW4gZmxvYXQgciwgaW4gZmxvYXQgZywgaW4gZmxv
YXQgYiwgaW4gZmxvYXQgYSk7CisgICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGluIGZsb2F0IGMs
IGluIGZsb2F0IG0sIGluIGZsb2F0IHksIGluIGZsb2F0IGssIGluIGZsb2F0IGEpOworCisgICAg
ICAgIHZvaWQgc3Ryb2tlUmVjdChpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB3aWR0
aCwgaW4gZmxvYXQgaGVpZ2h0LCBpbiBbT3B0aW9uYWxdIGZsb2F0IGxpbmVXaWR0aCk7CisKKyAg
ICAgICAgdm9pZCBkcmF3SW1hZ2UoaW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgaW4gZmxvYXQg
eCwgaW4gZmxvYXQgeSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxJbWFnZUVsZW1l
bnQgaW1hZ2UsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHdpZHRoLCBpbiBmbG9h
dCBoZWlnaHQpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZv
aWQgZHJhd0ltYWdlKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIGZsb2F0IHN4LCBpbiBm
bG9hdCBzeSwgaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQg
ZHksIGluIGZsb2F0IGR3LCBpbiBmbG9hdCBkaCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoaW4gSFRNTENhbnZhc0VsZW1lbnQgY2Fu
dmFzLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoaW4g
SFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9h
dCB3aWR0aCwgaW4gZmxvYXQgaGVpZ2h0KQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgICAgICB2b2lkIGRyYXdJbWFnZShpbiBIVE1MQ2FudmFzRWxlbWVudCBjYW52YXMs
IGluIGZsb2F0IHN4LCBpbiBmbG9hdCBzeSwgaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoLCBpbiBm
bG9hdCBkeCwgaW4gZmxvYXQgZHksIGluIGZsb2F0IGR3LCBpbiBmbG9hdCBkaCkKKyAgICAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9WSURFTykgJiYg
RU5BQkxFX1ZJREVPCisgICAgICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxWaWRlb0VsZW1lbnQg
dmlkZW8sIGluIGZsb2F0IHgsIGluIGZsb2F0IHkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShp
biBIVE1MVmlkZW9FbGVtZW50IHZpZGVvLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9h
dCB3aWR0aCwgaW4gZmxvYXQgaGVpZ2h0KQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgICAgICB2b2lkIGRyYXdJbWFnZShpbiBIVE1MVmlkZW9FbGVtZW50IHZpZGVvLCBp
biBmbG9hdCBzeCwgaW4gZmxvYXQgc3ksIGluIGZsb2F0IHN3LCBpbiBmbG9hdCBzaCwgaW4gZmxv
YXQgZHgsIGluIGZsb2F0IGR5LCBpbiBmbG9hdCBkdywgaW4gZmxvYXQgZGgpCisgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VG
cm9tUmVjdChpbiBIVE1MSW1hZ2VFbGVtZW50IGltYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIGZsb2F0IHN4LCBpbiBmbG9hdCBzeSwgaW4gZmxvYXQgc3csIGluIGZsb2F0
IHNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGZsb2F0IGR4LCBpbiBmbG9h
dCBkeSwgaW4gZmxvYXQgZHcsIGluIGZsb2F0IGRoLCBpbiBET01TdHJpbmcgY29tcG9zaXRlT3Bl
cmF0aW9uKTsKKworICAgICAgICB2b2lkIHNldFNoYWRvdyhpbiBmbG9hdCB3aWR0aCwgaW4gZmxv
YXQgaGVpZ2h0LCBpbiBmbG9hdCBibHVyLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBjb2xvciwg
aW4gW09wdGlvbmFsXSBmbG9hdCBhbHBoYSk7CisgICAgICAgIHZvaWQgc2V0U2hhZG93KGluIGZs
b2F0IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQsIGluIGZsb2F0IGJsdXIsIGluIGZsb2F0IGdyYXlM
ZXZlbCwgaW4gW09wdGlvbmFsXSBmbG9hdCBhbHBoYSk7CisgICAgICAgIHZvaWQgc2V0U2hhZG93
KGluIGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQsIGluIGZsb2F0IGJsdXIsIGluIGZsb2F0
IHIsIGluIGZsb2F0IGcsIGluIGZsb2F0IGIsIGluIGZsb2F0IGEpOworICAgICAgICB2b2lkIHNl
dFNoYWRvdyhpbiBmbG9hdCB3aWR0aCwgaW4gZmxvYXQgaGVpZ2h0LCBpbiBmbG9hdCBibHVyLCBp
biBmbG9hdCBjLCBpbiBmbG9hdCBtLCBpbiBmbG9hdCB5LCBpbiBmbG9hdCBrLCBpbiBmbG9hdCBh
KTsKKworICAgICAgICBDYW52YXNQYXR0ZXJuIGNyZWF0ZVBhdHRlcm4oaW4gSFRNTEltYWdlRWxl
bWVudCBpbWFnZSwgaW4gRE9NU3RyaW5nIHJlcGV0aXRpb25UeXBlKQorICAgICAgICAgICAgcmFp
c2VzIChET01FeGNlcHRpb24pOworICAgICAgICBDYW52YXNQYXR0ZXJuIGNyZWF0ZVBhdHRlcm4o
aW4gSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCBpbiBET01TdHJpbmcgcmVwZXRpdGlvblR5cGUp
CisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgcHV0SW1h
Z2VEYXRhKGluIEltYWdlRGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSwg
W09wdGlvbmFsXSBpbiBmbG9hdCBkaXJ0eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGly
dHlXaWR0aCwgaW4gZmxvYXQgZGlydHlIZWlnaHQpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKyNlbHNlCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgJ2Vsc2UnIG9uY2UgSlND
IHN1cHBvcnRzIG92ZXJsb2FkcyB0b28uCiAgICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U3Ryb2tl
Q29sb3IoLyogMSAgKi8pOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldEZpbGxDb2xvcigvKiAx
ICovKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VSZWN0KC8qIDQgKi8pOwpAQCAtMTA1
LDE2ICsxNTMsMTcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGRyYXdJ
bWFnZUZyb21SZWN0KC8qIDEwICovKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRTaGFkb3co
LyogMyAqLyk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgY3JlYXRlUGF0dGVybigvKiAyICovKTsK
LSAgICAgICAgCisgICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIEltYWdl
RGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBkaXJ0
eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGlydHlI
ZWlnaHRdICovKTsKKyNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKICAgICAgICAgYXR0
cmlidXRlIFtDdXN0b21dIGN1c3RvbSBzdHJva2VTdHlsZTsKICAgICAgICAgYXR0cmlidXRlIFtD
dXN0b21dIGN1c3RvbSBmaWxsU3R5bGU7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIHBpeGVsIG1h
bmlwdWxhdGlvbgogICAgICAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKGluIGZsb2F0IHN3
LCBpbiBmbG9hdCBzaCkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0YShpbiBmbG9hdCBzeCwgaW4gZmxvYXQgc3ksIGluIGZs
b2F0IHN3LCBpbiBmbG9hdCBzaCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwot
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHB1dEltYWdlRGF0YSgvKiBpbiBJbWFnZURhdGEgaW1hZ2Vk
YXRhLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHkgWywgaW4gZmxvYXQgZGlydHlYLCBpbiBmbG9h
dCBkaXJ0eVksIGluIGZsb2F0IGRpcnR5V2lkdGgsIGluIGZsb2F0IGRpcnR5SGVpZ2h0XSAqLyk7
CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53537</attachid>
            <date>2010-04-16 10:49:07 -0700</date>
            <delta_ts>2010-04-17 13:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37453-20100416104906.patch</filename>
            <type>text/plain</type>
            <size>30398</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzI1MGRmNS4uYzliY2MwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNC0xNiAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdXRvLWdlbmVyYXRlIFY4IGJpbmRpbmdzIGZvciBjYW52YXMuKiBv
dmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM3NDUzCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwOiBEZWxldGVkIGN1c3RvbSBjb2RlIHRoYXQgaXMgbm93IGF1dG8t
Z2VuZXJhdGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OiBOb3QgZ2VuZXJhdGluZyBjdXN0b20gc2lnbmF0dXJlcyBmb3Igb3ZlcmxvYWRlZCBtZXRob2Rz
IGFuZCBhY2NlcHRpbmcgT2JqZWN0IGFzIGEgc3RyaW5nIGlucHV0LgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6IEFkZGVkIG1pc3NpbmcgOS1hcmd1
bWVudHMgb3ZlcmxvYWRzIGZvciBkcmF3SW1hZ2UuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmg6IAorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGw6IE92ZXJsb2FkZWQgbWV0aG9kcyBkZWZpbmVkIChWOCBvbmx5
KS4KKwogMjAxMC0wNC0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggOGVjMTE1ZC4uMGQzNTU2YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xMDMyLDkgKzEw
MzIsMTAgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbgogICAgICAgICBt
eSAkdHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOwogCiAgICAgICAgICMg
T25seSBET01TdHJpbmcgb3Igd3JhcHBlciB0eXBlcyBhcmUgY2hlY2tlZC4KLSAgICAgICAgIyBG
b3IgRE9NU3RyaW5nLCBOdWxsIG9yIFVuZGVmaW5lZCBhcmUgYWNjZXB0ZWQgdG9vLCBhcyB0aGVz
ZSBhcmUKLSAgICAgICAgIyB1c3VhbGx5IGFjY2VwdGFibGUgdmFsdWVzIGZvciBhIERPTVN0cmlu
ZyBhcmd1bWVudC4KLSAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5Jc051
bGwoKSB8fCAke3ZhbHVlfS5Jc1VuZGVmaW5lZCgpIHx8ICR7dmFsdWV9LklzU3RyaW5nKCkpIikg
aWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CisgICAgICAgICMgRm9yIERP
TVN0cmluZywgTnVsbCwgVW5kZWZpbmVkIGFuZCBhbnkgT2JqZWN0IGFyZSBhY2NlcHRlZCB0b28s
IGFzCisgICAgICAgICMgdGhlc2UgYXJlIGFjY2VwdGFibGUgdmFsdWVzIGZvciBhIERPTVN0cmlu
ZyBhcmd1bWVudCAoYW55IE9iamVjdCBjYW4KKyAgICAgICAgIyBiZSBjb252ZXJ0ZWQgdG8gYSBz
dHJpbmcgdmlhIC50b1N0cmluZykuCisgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2
YWx1ZX0tPklzTnVsbCgpIHx8ICR7dmFsdWV9LT5Jc1VuZGVmaW5lZCgpIHx8ICR7dmFsdWV9LT5J
c1N0cmluZygpIHx8ICR7dmFsdWV9LT5Jc09iamVjdCgpKSIpIGlmICRjb2RlR2VuZXJhdG9yLT5J
c1N0cmluZ1R5cGUoJHR5cGUpOwogICAgICAgICBwdXNoKEBhbmRFeHByZXNzaW9uLCAiVjgke3R5
cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUpIikgaWYgSXNXcmFwcGVyVHlwZSgkdHlwZSk7CiAKICAg
ICAgICAgJHBhcmFtZXRlckluZGV4Kys7CkBAIC0xMDc3LDYgKzEwNzgsNyBAQCBzdWIgR2VuZXJh
dGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjawogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgewogICAgIElOQ19T
VEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4kbmFtZVwiKTsKIEVORAorCiAgICAgZm9yZWFjaCBt
eSAkb3ZlcmxvYWQgKEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0pIHsKICAgICAgICAgbXkgJHBh
cmFtZXRlcnNDaGVjayA9IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2soJG92ZXJsb2Fk
KTsKICAgICAgICAgaWYgKCRvdmVybG9hZC0+e292ZXJsb2FkSW5kZXh9ID09IDEpIHsKQEAgLTI3
MTMsNiArMjcxNSwxNiBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUKICAgICAgICAgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbSJ9KSB7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICAjIE5vIHNpZ25hdHVyZSBuZWVkZWQgZm9yIG92
ZXJsb2FkZWQgZnVuY3Rpb24KKyAgICBpZiAoQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDEp
IHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVy
IChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgfQorICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRwYXJhbWV0ZXIt
PnR5cGUpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXggZTEwY2U2NC4uMjZm
YzYyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtOTgsMzYyICs5OCw0IEBA
IHZvaWQgVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZUFjY2Vzc29yU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgaW1wbC0+c2V0RmlsbFN0eWxlKHRvQ2FudmFz
U3R5bGUodmFsdWUpKTsKIH0KIAotLy8gVE9ETzogU2V0U3Ryb2tlQ29sb3IgYW5kIFNldEZpbGxD
b2xvciBhcmUgc2ltaWxhciBleGNlcHQgZnVuY3Rpb24gbmFtZXMsCi0vLyBjb25zb2xpZGF0ZSB0
aGVtIGludG8gb25lLgotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTdHJva2VDb2xvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Ci17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNldFN0cm9r
ZUNvbG9yKCkiKTsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgc3dp
dGNoIChhcmdzLkxlbmd0aCgpKSB7Ci0gICAgY2FzZSAxOgotICAgICAgICBpZiAoYXJnc1swXS0+
SXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzBdKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKHRvRmxvYXQoYXJnc1swXSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IDI6Ci0gICAgICAgIGlmIChhcmdzWzBdLT5Jc1N0cmluZygpKQotICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3Nb
MV0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
dG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgNDoKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodG9GbG9hdChhcmdzWzBd
KSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNToKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IodG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJd
KSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4
RXJyb3IsICJzZXRTdHJva2VDb2xvcjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxD
b2xvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRT
KCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNldEZpbGxDb2xvcigpIik7Ci0gICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHN3aXRjaCAoYXJncy5MZW5ndGgoKSkg
ewotICAgIGNhc2UgMToKLSAgICAgICAgaWYgKGFyZ3NbMF0tPklzU3RyaW5nKCkpCi0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKLSAg
ICAgICAgZWxzZSAKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0b0Zsb2F0KGFy
Z3NbMF0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBpZiAoYXJnc1sw
XS0+SXNTdHJpbmcoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChh
cmdzWzFdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQo
YXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDU6
Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0
KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFy
Z3NbNF0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgVjhQcm94eTo6
dGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhFcnJvciwgInNldEZpbGxDb2xvcjogSW52YWxpZCBu
dW1iZXIgb2YgYXJndW1lbnRzIik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zdHJv
a2VSZWN0KCkiKTsKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPT0gNSkKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdCh0b0Zsb2F0
KGFyZ3NbMF0pLCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFy
Z3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pKTsKLSAgICBlbHNlIGlmIChhcmdzLkxlbmd0aCgpID09
IDQpCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QodG9GbG9hdChhcmdzWzBdKSwgdG9GbG9h
dChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihJTkRFWF9TSVpFX0VSUik7Ci0g
ICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwotICAgIH0KLSAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNl
dFNoYWRvdygpIik7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAg
c3dpdGNoIChhcmdzLkxlbmd0aCgpKSB7Ci0gICAgY2FzZSAzOgotICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdz
WzJdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKGFyZ3NbM10t
PklzU3RyaW5nKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3codG9GbG9hdChhcmdz
WzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbM10pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93
KHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRv
RmxvYXQoYXJnc1szXSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDU6Ci0gICAgICAgIGlm
IChhcmdzWzNdLT5Jc1N0cmluZygpKQotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHRv
RmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvV2Vi
Q29yZVN0cmluZyhhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyh0b0Zsb2F0KGFyZ3NbMF0pLCB0b0Zsb2F0KGFy
Z3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0b0Zsb2F0KGFyZ3Nb
NF0pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA3OgotICAgICAgICBjb250ZXh0LT5zZXRT
aGFkb3codG9GbG9hdChhcmdzWzBdKSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJd
KSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSwgdG9GbG9hdChhcmdzWzVdKSwg
dG9GbG9hdChhcmdzWzZdKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgODoKLSAgICAgICAg
Y29udGV4dC0+c2V0U2hhZG93KHRvRmxvYXQoYXJnc1swXSksIHRvRmxvYXQoYXJnc1sxXSksIHRv
RmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0XSksIHRvRmxv
YXQoYXJnc1s1XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQoYXJnc1s3XSkpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJv
eHk6OlN5bnRheEVycm9yLCAic2V0U2hhZG93OiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMi
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
LX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3SW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19T
VEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2UoKSIpOwotICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmcgPSBhcmdzWzBdOwotCi0gICAgaWYgKFY4SFRNTEltYWdlRWxlbWVudDo6SGFzSW5zdGFu
Y2UoYXJnKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgSFRNTElt
YWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gVjhIVE1MSW1hZ2VFbGVtZW50Ojp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZykpOwotICAgICAgICBzd2l0Y2ggKGFyZ3Mu
TGVuZ3RoKCkpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlRWxlbWVudCwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChhcmdzWzJd
KSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSwgZWMpOwotICAgICAgICAgICAg
aWYgKGVjICE9IDApIHsKLSAgICAgICAgICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOwotICAgICAgICAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgOToKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIAotICAgICAgICAgICAgICAg
IEZsb2F0UmVjdCh0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFy
Z3NbM10pLCB0b0Zsb2F0KGFyZ3NbNF0pKSwgCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0KHRv
RmxvYXQoYXJnc1s1XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQoYXJnc1s3XSksIHRvRmxv
YXQoYXJnc1s4XSkpLAotICAgICAgICAgICAgICAgIGVjKTsKLSAgICAgICAgICAgIGlmIChlYyAh
PSAwKSB7Ci0gICAgICAgICAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoImRyYXdJbWFnZTogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRz
IiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAgLy8gSFRNTENhbnZhc0VsZW1lbnQKLSAgICBpZiAo
VjhIVE1MQ2FudmFzRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhc0VsZW1lbnQg
PSBWOEhUTUxDYW52YXNFbGVtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZykpOwotICAgICAgICBzd2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsKLSAgICAgICAgY2Fz
ZSAzOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIHRvRmxv
YXQoYXJnc1sxXSksIHRvRmxvYXQoYXJnc1syXSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgNToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShjYW52YXNFbGVtZW50
LCB0b0Zsb2F0KGFyZ3NbMV0pLCB0b0Zsb2F0KGFyZ3NbMl0pLCB0b0Zsb2F0KGFyZ3NbM10pLCB0
b0Zsb2F0KGFyZ3NbNF0pLCBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAgICAg
ICAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSA5OgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGNhbnZhc0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0KHRvRmxvYXQoYXJn
c1sxXSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0
XSkpLAotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCh0b0Zsb2F0KGFyZ3NbNV0pLCB0b0Zsb2F0
KGFyZ3NbNl0pLCB0b0Zsb2F0KGFyZ3NbN10pLCB0b0Zsb2F0KGFyZ3NbOF0pKSwKLSAgICAgICAg
ICAgICAgICBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAgICAgICAgICAgICAg
IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5v
dEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJkcmF3
SW1hZ2U6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9y
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIH0KLQot
I2lmIEVOQUJMRShWSURFTykKLSAgICAvLyBIVE1MVmlkZW9FbGVtZW50Ci0gICAgaWYgKFY4SFRN
TFZpZGVvRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gVjhIVE1M
VmlkZW9FbGVtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZykp
OwotICAgICAgICBzd2l0Y2ggKGFyZ3MuTGVuZ3RoKCkpIHsKLSAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHZpZGVvRWxlbWVudCwgdG9GbG9hdChhcmdzWzFd
KSwgdG9GbG9hdChhcmdzWzJdKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA1
OgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHZpZGVvRWxlbWVudCwgdG9GbG9hdChh
cmdzWzFdKSwgdG9GbG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdz
WzRdKSwgZWMpOwotICAgICAgICAgICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAgICAgICAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwotICAgICAgICAgICAgICAgIHJldHVybiBub3RI
YW5kbGVkQnlJbnRlcmNlcHRvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZSh2aWRlb0Vs
ZW1lbnQsCi0gICAgICAgICAgICAgICAgRmxvYXRSZWN0KHRvRmxvYXQoYXJnc1sxXSksIHRvRmxv
YXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0XSkpLAotICAgICAg
ICAgICAgICAgIEZsb2F0UmVjdCh0b0Zsb2F0KGFyZ3NbNV0pLCB0b0Zsb2F0KGFyZ3NbNl0pLCB0
b0Zsb2F0KGFyZ3NbN10pLCB0b0Zsb2F0KGFyZ3NbOF0pKSwKLSAgICAgICAgICAgICAgICBlYyk7
Ci0gICAgICAgICAgICBpZiAoZWMgIT0gMCkgewotICAgICAgICAgICAgICAgIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihlYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUlu
dGVyY2VwdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJkcmF3SW1hZ2U6IEludmFs
aWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIH0KLSNlbmRpZgotCi0gICAg
VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICByZXR1cm4g
bm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLX0KLQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZUZyb21SZWN0Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlRnJvbVJlY3QoKSIpOwotICAgIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCogY29udGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdz
WzBdOwotCi0gICAgaWYgKFY4SFRNTEltYWdlRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewot
ICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBWOEhUTUxJbWFnZUVsZW1l
bnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnKSk7Ci0gICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZUZyb21SZWN0KGltYWdlRWxlbWVudCwgIHRvRmxvYXQoYXJnc1sx
XSksIHRvRmxvYXQoYXJnc1syXSksIHRvRmxvYXQoYXJnc1szXSksIHRvRmxvYXQoYXJnc1s0XSks
IHRvRmxvYXQoYXJnc1s1XSksIHRvRmxvYXQoYXJnc1s2XSksIHRvRmxvYXQoYXJnc1s3XSksIHRv
RmxvYXQoYXJnc1s4XSksIHRvV2ViQ29yZVN0cmluZyhhcmdzWzldKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9yLCAiZHJhd0ltYWdl
RnJvbVJlY3Q6IEludmFsaWQgdHlwZSBvZiBhcmd1bWVudHMiKTsKLQotICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNyZWF0
ZVBhdHRlcm4oKSIpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLQotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzBdOwotCi0gICAgaWYgKFY4SFRNTElt
YWdlRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnKSkgewotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50
KiBpbWFnZUVsZW1lbnQgPSBWOEhUTUxJbWFnZUVsZW1lbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoYXJnKSk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICBSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybiA9IGNvbnRleHQtPmNyZWF0ZVBh
dHRlcm4oaW1hZ2VFbGVtZW50LCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZ3NbMV0p
LCBlYyk7Ci0gICAgICAgIGlmIChlYyAhPSAwKSB7Ci0gICAgICAgICAgICBWOFByb3h5OjpzZXRE
T01FeGNlcHRpb24oZWMpOwotICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2Vw
dG9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRvVjgocGF0dGVybi5yZWxlYXNlKCkp
OwotICAgIH0KLQotICAgIGlmIChWOEhUTUxDYW52YXNFbGVtZW50OjpIYXNJbnN0YW5jZShhcmcp
KSB7Ci0gICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50ID0gVjhIVE1MQ2Fu
dmFzRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpKTsK
LSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxDYW52YXNQYXR0
ZXJuPiBwYXR0ZXJuID0gY29udGV4dC0+Y3JlYXRlUGF0dGVybihjYW52YXNFbGVtZW50LCB0b1dl
YkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZ3NbMV0pLCBlYyk7Ci0gICAgICAgIGlmIChlYyAh
PSAwKSB7Ci0gICAgICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwotICAgICAg
ICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRvVjgocGF0dGVybi5yZWxlYXNlKCkpOwotICAgIH0KLQotICAgIFY4UHJveHk6
OnNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUik7Ci0gICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5maWxs
VGV4dCgpIik7Ci0KLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0KLSAgICAv
LyBUd28gZm9ybXM6Ci0gICAgLy8gKiBmaWxsVGV4dCh0ZXh0LCB4LCB5KQotICAgIC8vICogZmls
bFRleHQodGV4dCwgeCwgeSwgbWF4V2lkdGgpCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzIHx8
IGFyZ3MuTGVuZ3RoKCkgPiA0KSB7Ci0gICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihT
WU5UQVhfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0g
ICAgfQotCi0gICAgU3RyaW5nIHRleHQgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7Ci0gICAg
ZmxvYXQgeCA9IHRvRmxvYXQoYXJnc1sxXSk7Ci0gICAgZmxvYXQgeSA9IHRvRmxvYXQoYXJnc1sy
XSk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSA0KSB7Ci0gICAgICAgIGZsb2F0IG1heFdp
ZHRoID0gdG9GbG9hdChhcmdzWzNdKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFRleHQodGV4dCwg
eCwgeSwgbWF4V2lkdGgpOwotICAgIH0gZWxzZQotICAgICAgICBjb250ZXh0LT5maWxsVGV4dCh0
ZXh0LCB4LCB5KTsKLQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELnN0cm9rZVRleHQoKSIpOwotICAgIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCogY29udGV4dCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIC8vIFR3byBmb3JtczoKLSAgICAvLyAqIHN0cm9rZVRl
eHQodGV4dCwgeCwgeSkKLSAgICAvLyAqIHN0cm9rZVRleHQodGV4dCwgeCwgeSwgbWF4V2lkdGgp
Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzIHx8IGFyZ3MuTGVuZ3RoKCkgPiA0KSB7Ci0gICAg
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0dXJu
IG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRleHQgPSB0
b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7Ci0gICAgZmxvYXQgeCA9IHRvRmxvYXQoYXJnc1sxXSk7
Ci0gICAgZmxvYXQgeSA9IHRvRmxvYXQoYXJnc1syXSk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgo
KSA9PSA0KSB7Ci0gICAgICAgIGZsb2F0IG1heFdpZHRoID0gdG9GbG9hdChhcmdzWzNdKTsKLSAg
ICAgICAgY29udGV4dC0+c3Ryb2tlVGV4dCh0ZXh0LCB4LCB5LCBtYXhXaWR0aCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVRleHQodGV4dCwgeCwgeSk7Ci0KLSAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LnB1dEltYWdlRGF0YSgpIik7Ci0KLSAgICAvLyBUd28gZnJvbXM6Ci0gICAgLy8gKiBwdXRJbWFn
ZURhdGEoSW1hZ2VEYXRhLCB4LCB5KQotICAgIC8vICogcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSwg
eCwgeSwgZGlydHlYLCBkaXJ0eVksIGRpcnR5V2lkdGgsIGRpcnR5SGVpZ2h0KQotICAgIGlmIChh
cmdzLkxlbmd0aCgpICE9IDMgJiYgYXJncy5MZW5ndGgoKSAhPSA3KSB7Ci0gICAgICAgIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgfQotCi0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
KiBjb250ZXh0ID0gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotCi0gICAgSW1hZ2VEYXRhKiBpbWFnZURhdGEgPSAwOwotCi0gICAgLy8gTmVlZCB0
byBjaGVjayB0aGF0IHRoZSBhcmd1bWVudCBpcyBvZiB0aGUgY29ycmVjdCB0eXBlLCBzaW5jZQot
ICAgIC8vIHRvTmF0aXZlKCkgZXhwZWN0cyBpdCB0byBiZSBjb3JyZWN0LiBJZiB0aGUgYXJndW1l
bnQgd2FzIGluY29ycmVjdAotICAgIC8vIHdlIGxlYXZlIGl0IG51bGwsIGFuZCBwdXRJbWFnZURh
dGEoKSB3aWxsIHRocm93IHRoZSBjb3JyZWN0IGV4Y2VwdGlvbgotICAgIC8vIChUWVBFX01JU01B
VENIX0VSUikuCi0gICAgaWYgKFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKGFyZ3NbMF0s
ICZWOEltYWdlRGF0YTo6aW5mbykpCi0gICAgICAgIGltYWdlRGF0YSA9IFY4SW1hZ2VEYXRhOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKLQotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gNykKLSAgICAg
ICAgY29udGV4dC0+cHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdG9GbG9hdChhcmdzWzFdKSwgdG9G
bG9hdChhcmdzWzJdKSwgdG9GbG9hdChhcmdzWzNdKSwgdG9GbG9hdChhcmdzWzRdKSwgdG9GbG9h
dChhcmdzWzVdKSwgdG9GbG9hdChhcmdzWzZdKSwgZWMpOwotICAgIGVsc2UKLSAgICAgICAgY29u
dGV4dC0+cHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdG9GbG9hdChhcmdzWzFdKSwgdG9GbG9hdChh
cmdzWzJdKSwgZWMpOwotCi0gICAgaWYgKGVjICE9IDApIHsKLSAgICAgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9y
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Y4VGVz
dE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcAppbmRleCA4
ZjgzZmM1Li40MmEyNWZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhU
ZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcApA
QCAtMzA1LDExICszMDUsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykgewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1l
dGhvZCIpOwotICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAyICYmIFY4VGVzdE9iajo6SGFzSW5z
dGFuY2UoYXJnc1swXSkgJiYgKGFyZ3NbMV0uSXNOdWxsKCkgfHwgYXJnc1sxXS5Jc1VuZGVmaW5l
ZCgpIHx8IGFyZ3NbMV0uSXNTdHJpbmcoKSkpKSB7CisgICAgaWYgKChhcmdzLkxlbmd0aCgpID09
IDIgJiYgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSAmJiAoYXJnc1sxXS0+SXNOdWxs
KCkgfHwgYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8fCBhcmdzWzFdLT5Jc1N0cmluZygpIHx8IGFy
Z3NbMV0tPklzT2JqZWN0KCkpKSkgewogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDFD
YWxsYmFjayhhcmdzKTsKICAgICB9IGVsc2UgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgVjhU
ZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkgewogICAgICAgICByZXR1cm4gb3Zlcmxv
YWRlZE1ldGhvZDJDYWxsYmFjayhhcmdzKTsKLSAgICB9IGVsc2UgaWYgKChhcmdzLkxlbmd0aCgp
ID09IDEgJiYgKGFyZ3NbMF0uSXNOdWxsKCkgfHwgYXJnc1swXS5Jc1VuZGVmaW5lZCgpIHx8IGFy
Z3NbMF0uSXNTdHJpbmcoKSkpKSB7CisgICAgfSBlbHNlIGlmICgoYXJncy5MZW5ndGgoKSA9PSAx
ICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBhcmdzWzBdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3Nb
MF0tPklzU3RyaW5nKCkgfHwgYXJnc1swXS0+SXNPYmplY3QoKSkpKSB7CiAgICAgICAgIHJldHVy
biBvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKGFyZ3MpOwogICAgIH0gZWxzZSBpZiAoYXJncy5M
ZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNr
KGFyZ3MpOwpAQCAtNDMzLDYgKzQzMyw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sg
VGVzdE9ial9jYWxsYmFja3NbXSA9IHsKICAgeyJtZXRob2RXaXRoT3B0aW9uYWxBcmciLCBUZXN0
T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrfSwKICAgeyJtZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxsYmFja30sCiAgIHsibWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgVGVzdE9iakludGVybmFsOjptZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsYmFja30sCisgIHsib3Zl
cmxvYWRlZE1ldGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZENhbGxiYWNr
fSwKIH07CiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkZXNjKQogewpAQCAtNDYxLDEyICs0NjIsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gb2JqTWV0aG9kV2l0aEFyZ3Nfc2lnbmF0dXJl
ID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdzX2FyZ2MsIG9iak1l
dGhvZFdpdGhBcmdzX2FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJvYmpN
ZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5h
bDo6b2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIG9i
ak1ldGhvZFdpdGhBcmdzX3NpZ25hdHVyZSkpOwogCi0gICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
b3ZlcmxvYWRlZE1ldGhvZCcKLSAgICBjb25zdCBpbnQgb3ZlcmxvYWRlZE1ldGhvZF9hcmdjID0g
MjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBvdmVybG9hZGVkTWV0aG9k
X2FyZ3Zbb3ZlcmxvYWRlZE1ldGhvZF9hcmdjXSA9IHsgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0
ZSgpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIH07Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBvdmVybG9hZGVkTWV0aG9kX3NpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBvdmVybG9hZGVkTWV0aG9kX2FyZ2MsIG92ZXJsb2FkZWRNZXRob2RfYXJn
dik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoIm92ZXJsb2FkZWRNZXRob2QiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRo
b2RDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIG92ZXJsb2FkZWRNZXRob2Rfc2ln
bmF0dXJlKSk7Ci0KICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5T
ZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJu
IGRlc2M7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKaW5kZXggMDM2ODI2MS4uMDMyYmJhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTcwLDYgKzk3MCwxMyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlLAogICAgIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KDAsIDAsIHMud2lkdGgoKSwgcy5o
ZWlnaHQoKSksIEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZWMpOwogfQogCit2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlLAorICAgIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLAorICAgIGZs
b2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChzeCwgc3ksIHN3LCBzaCksIEZsb2F0
UmVjdChkeCwgZHksIGR3LCBkaCksIGVjKTsKK30KKwogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CkBAIC0xMDIyLDYgKzEwMjksMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLAogICAgIGRyYXdJbWFnZShj
YW52YXMsIEZsb2F0UmVjdCgwLCAwLCBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkp
LCBGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCksIGVjKTsKIH0KIAordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLAor
ICAgIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLAorICAgIGZsb2F0IGR4
LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBkcmF3SW1hZ2UoY2FudmFzLCBGbG9hdFJlY3Qoc3gsIHN5LCBzdywgc2gpLCBGbG9hdFJlY3Qo
ZHgsIGR5LCBkdywgZGgpLCBlYyk7Cit9CisKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJjZUNhbnZhcywgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CkBAIC0xMDc3LDYgKzEwOTEsMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywKICAgICBkcmF3SW1hZ2Uo
dmlkZW8sIEZsb2F0UmVjdCgwLCAwLCBzLndpZHRoKCksIHMuaGVpZ2h0KCkpLCBGbG9hdFJlY3Qo
eCwgeSwgd2lkdGgsIGhlaWdodCksIGVjKTsKIH0KIAordm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywKKyAgICBmbG9hdCBzeCwg
ZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwKKyAgICBmbG9hdCBkeCwgZmxvYXQgZHksIGZs
b2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZHJhd0ltYWdlKHZp
ZGVvLCBGbG9hdFJlY3Qoc3gsIHN5LCBzdywgc2gpLCBGbG9hdFJlY3QoZHgsIGR5LCBkdywgZGgp
LCBlYyk7Cit9CisKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRN
TFZpZGVvRWxlbWVudCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFeGNlcHRpb25Db2RlJiBlYykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDdlYmQ0ODkuLjViOTNjOTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMTU2LDEzICsxNTYs
MTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxJ
bWFnZUVsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5KTsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2Uo
SFRNTEltYWdlRWxlbWVudCosIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTEltYWdl
RWxlbWVudCosIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBk
eCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAg
ICB2b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAg
dm9pZCBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5KTsKICAg
ICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZv
aWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9h
dCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50
KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEV4
Y2VwdGlvbkNvZGUmKTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIHZvaWQgZHJhd0ltYWdl
KEhUTUxWaWRlb0VsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5KTsKICAgICAgICAgdm9pZCBkcmF3
SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRN
TFZpZGVvRWxlbWVudCosIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBm
bG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEV4Y2VwdGlvbkNvZGUmKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5pZGwKaW5kZXggZjkzYTc1Mi4uYmFhNjg4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtMjAsNyArMjAsNyBAQAogICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCiBtb2R1bGUgaHRtbCB7CkBAIC04Miw4ICs4Miw3IEBAIG1vZHVsZSBo
dG1sIHsKICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmb250OwogICAgICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHRleHRBbGlnbjsKICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXh0
QmFzZWxpbmU7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgZmlsbFRleHQoLyogNCAqLyk7Ci0gICAg
ICAgIFtDdXN0b21dIHZvaWQgc3Ryb2tlVGV4dCgvKiA0ICovKTsKKwogICAgICAgICBUZXh0TWV0
cmljcyBtZWFzdXJlVGV4dChpbiBET01TdHJpbmcgdGV4dCk7CiAKICAgICAgICAgLy8gb3RoZXIK
QEAgLTk4LDYgKzk3LDU4IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICB2b2lkIGNsZWFyU2hh
ZG93KCk7CiAKKyNpZiBkZWZpbmVkKFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKKyAgICAgICAg
dm9pZCBmaWxsVGV4dChpbiBET01TdHJpbmcgdGV4dCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwg
aW4gW09wdGlvbmFsXSBmbG9hdCBtYXhXaWR0aCk7CisgICAgICAgIHZvaWQgc3Ryb2tlVGV4dChp
biBET01TdHJpbmcgdGV4dCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gW09wdGlvbmFsXSBm
bG9hdCBtYXhXaWR0aCk7CisKKyAgICAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihpbiBET01TdHJp
bmcgY29sb3IsIGluIFtPcHRpb25hbF0gZmxvYXQgYWxwaGEpOworICAgICAgICB2b2lkIHNldFN0
cm9rZUNvbG9yKGluIGZsb2F0IGdyYXlMZXZlbCwgaW4gW09wdGlvbmFsXSBmbG9hdCBhbHBoYSk7
CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoaW4gZmxvYXQgciwgaW4gZmxvYXQgZywgaW4g
ZmxvYXQgYiwgaW4gZmxvYXQgYSk7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoaW4gZmxv
YXQgYywgaW4gZmxvYXQgbSwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgaywgaW4gZmxvYXQgYSk7CisK
KyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoaW4gRE9NU3RyaW5nIGNvbG9yLCBpbiBbT3B0aW9u
YWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoaW4gZmxvYXQgZ3Jh
eUxldmVsLCBpbiBbT3B0aW9uYWxdIGZsb2F0IGFscGhhKTsKKyAgICAgICAgdm9pZCBzZXRGaWxs
Q29sb3IoaW4gZmxvYXQgciwgaW4gZmxvYXQgZywgaW4gZmxvYXQgYiwgaW4gZmxvYXQgYSk7Cisg
ICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGluIGZsb2F0IGMsIGluIGZsb2F0IG0sIGluIGZsb2F0
IHksIGluIGZsb2F0IGssIGluIGZsb2F0IGEpOworCisgICAgICAgIHZvaWQgc3Ryb2tlUmVjdChp
biBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB3aWR0aCwgaW4gZmxvYXQgaGVpZ2h0LCBp
biBbT3B0aW9uYWxdIGZsb2F0IGxpbmVXaWR0aCk7CisKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2Uo
aW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CisgICAg
ICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIGZsb2F0IHgs
IGluIGZsb2F0IHksIGluIGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQpCisgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKGluIEhUTUxJ
bWFnZUVsZW1lbnQgaW1hZ2UsIGluIGZsb2F0IHN4LCBpbiBmbG9hdCBzeSwgaW4gZmxvYXQgc3cs
IGluIGZsb2F0IHNoLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHksIGluIGZsb2F0IGR3LCBpbiBm
bG9hdCBkaCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCBkcmF3SW1hZ2UoaW4gSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCBpbiBmbG9hdCB4LCBpbiBm
bG9hdCB5KTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoaW4gSFRNTENhbnZhc0VsZW1lbnQgY2Fu
dmFzLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB3aWR0aCwgaW4gZmxvYXQgaGVp
Z2h0KQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGRy
YXdJbWFnZShpbiBIVE1MQ2FudmFzRWxlbWVudCBjYW52YXMsIGluIGZsb2F0IHN4LCBpbiBmbG9h
dCBzeSwgaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHks
IGluIGZsb2F0IGR3LCBpbiBmbG9hdCBkaCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9WSURFTykgJiYgRU5BQkxFX1ZJREVPCisgICAgICAg
IHZvaWQgZHJhd0ltYWdlKGluIEhUTUxWaWRlb0VsZW1lbnQgdmlkZW8sIGluIGZsb2F0IHgsIGlu
IGZsb2F0IHkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShpbiBIVE1MVmlkZW9FbGVtZW50IHZp
ZGVvLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB3aWR0aCwgaW4gZmxvYXQgaGVp
Z2h0KQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGRy
YXdJbWFnZShpbiBIVE1MVmlkZW9FbGVtZW50IHZpZGVvLCBpbiBmbG9hdCBzeCwgaW4gZmxvYXQg
c3ksIGluIGZsb2F0IHN3LCBpbiBmbG9hdCBzaCwgaW4gZmxvYXQgZHgsIGluIGZsb2F0IGR5LCBp
biBmbG9hdCBkdywgaW4gZmxvYXQgZGgpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisjZW5kaWYKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdChpbiBIVE1MSW1hZ2VF
bGVtZW50IGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGZsb2F0IHN4
LCBpbiBmbG9hdCBzeSwgaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSwgaW4gZmxvYXQgZHcsIGlu
IGZsb2F0IGRoLCBpbiBET01TdHJpbmcgY29tcG9zaXRlT3BlcmF0aW9uKTsKKworICAgICAgICB2
b2lkIHNldFNoYWRvdyhpbiBmbG9hdCB3aWR0aCwgaW4gZmxvYXQgaGVpZ2h0LCBpbiBmbG9hdCBi
bHVyLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBjb2xvciwgaW4gW09wdGlvbmFsXSBmbG9hdCBh
bHBoYSk7CisgICAgICAgIHZvaWQgc2V0U2hhZG93KGluIGZsb2F0IHdpZHRoLCBpbiBmbG9hdCBo
ZWlnaHQsIGluIGZsb2F0IGJsdXIsIGluIGZsb2F0IGdyYXlMZXZlbCwgaW4gW09wdGlvbmFsXSBm
bG9hdCBhbHBoYSk7CisgICAgICAgIHZvaWQgc2V0U2hhZG93KGluIGZsb2F0IHdpZHRoLCBpbiBm
bG9hdCBoZWlnaHQsIGluIGZsb2F0IGJsdXIsIGluIGZsb2F0IHIsIGluIGZsb2F0IGcsIGluIGZs
b2F0IGIsIGluIGZsb2F0IGEpOworICAgICAgICB2b2lkIHNldFNoYWRvdyhpbiBmbG9hdCB3aWR0
aCwgaW4gZmxvYXQgaGVpZ2h0LCBpbiBmbG9hdCBibHVyLCBpbiBmbG9hdCBjLCBpbiBmbG9hdCBt
LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCBrLCBpbiBmbG9hdCBhKTsKKworICAgICAgICBDYW52YXNQ
YXR0ZXJuIGNyZWF0ZVBhdHRlcm4oaW4gSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCBpbiBbQ29u
dmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyByZXBldGl0aW9uVHlwZSkKKyAgICAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgQ2FudmFzUGF0dGVybiBjcmVhdGVQ
YXR0ZXJuKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb25UeXBlKQorICAgICAgICAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOworICAgICAgICB2b2lkIHB1dEltYWdlRGF0YShpbiBJbWFnZURhdGEgaW1hZ2Vk
YXRhLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHksIGluIFtPcHRpb25hbF0gZmxvYXQgZGlydHlY
LCBpbiBmbG9hdCBkaXJ0eVksIGluIGZsb2F0IGRpcnR5V2lkdGgsIGluIGZsb2F0IGRpcnR5SGVp
Z2h0KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZWxzZQorICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlICdlbHNlJyBvbmNlIEpTQyBzdXBwb3J0cyBvdmVybG9hZHMgdG9vLgor
ICAgICAgICBbQ3VzdG9tXSB2b2lkIGZpbGxUZXh0KC8qIDQgKi8pOworICAgICAgICBbQ3VzdG9t
XSB2b2lkIHN0cm9rZVRleHQoLyogNCAqLyk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U3Ry
b2tlQ29sb3IoLyogMSAgKi8pOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldEZpbGxDb2xvcigv
KiAxICovKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VSZWN0KC8qIDQgKi8pOwpAQCAt
MTA1LDE2ICsxNTYsMTcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGRy
YXdJbWFnZUZyb21SZWN0KC8qIDEwICovKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRTaGFk
b3coLyogMyAqLyk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgY3JlYXRlUGF0dGVybigvKiAyICov
KTsKLSAgICAgICAgCisgICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIElt
YWdlRGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBk
aXJ0eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGly
dHlIZWlnaHRdICovKTsKKyNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKICAgICAgICAg
YXR0cmlidXRlIFtDdXN0b21dIGN1c3RvbSBzdHJva2VTdHlsZTsKICAgICAgICAgYXR0cmlidXRl
IFtDdXN0b21dIGN1c3RvbSBmaWxsU3R5bGU7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIHBpeGVs
IG1hbmlwdWxhdGlvbgogICAgICAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKGluIGZsb2F0
IHN3LCBpbiBmbG9hdCBzaCkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0YShpbiBmbG9hdCBzeCwgaW4gZmxvYXQgc3ksIGlu
IGZsb2F0IHN3LCBpbiBmbG9hdCBzaCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHB1dEltYWdlRGF0YSgvKiBpbiBJbWFnZURhdGEgaW1h
Z2VkYXRhLCBpbiBmbG9hdCBkeCwgaW4gZmxvYXQgZHkgWywgaW4gZmxvYXQgZGlydHlYLCBpbiBm
bG9hdCBkaXJ0eVksIGluIGZsb2F0IGRpcnR5V2lkdGgsIGluIGZsb2F0IGRpcnR5SGVpZ2h0XSAq
Lyk7CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>