<?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>92249</bug_id>
          
          <creation_ts>2012-07-25 07:13:18 -0700</creation_ts>
          <short_desc>Auto-vectorize compiler hint</short_desc>
          <delta_ts>2013-04-16 13:38:06 -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>Web Template Framework</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>noam</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>678012</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-07-25 07:13:18 -0700</bug_when>
    <thetext>GCC has the ability to perform auto-vectorization, but only does so at -O3 or when explicitly told to.

If we add a flag that tells GCC to perform auto-vectorization on specific functions, we can enabled it on those functions alone that would benifit from it, and thereby do not risk the potential binary bloat or performance degradation that can come from using -O3 indiscriminately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678015</commentid>
    <comment_count>1</comment_count>
      <attachid>154346</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-07-25 07:15:08 -0700</bug_when>
    <thetext>Created attachment 154346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678039</commentid>
    <comment_count>2</comment_count>
      <attachid>154346</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 07:51:55 -0700</bug_when>
    <thetext>Comment on attachment 154346
Patch

Attachment 154346 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13343275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678053</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-07-25 08:09:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 154346 [details])
&gt; Attachment 154346 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/13343275

Internal compiler error? Jeebers.. Update your compiler, guys!

I guess I can add a check to only enable this on GCC 4.6 or newer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678100</commentid>
    <comment_count>4</comment_count>
      <attachid>154368</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-07-25 08:41:48 -0700</bug_when>
    <thetext>Created attachment 154368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688038</commentid>
    <comment_count>5</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-06 05:17:03 -0700</bug_when>
    <thetext>I should add that the patches landed for bug #91398 and bug #92123 depends on this patch to take full advantage of their improvements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689540</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 15:59:19 -0700</bug_when>
    <thetext>This seems like a lot of use of this function.  Are each of these a win?  If so, how much?  Just like LIKELY and UNLIKELY, I would expect we&apos;d only want to use this on hot code paths where we new it to be a win.  Otherwise we&apos;re just setting ourselves up for overly constrained/confused compilers in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690037</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-08 01:16:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This seems like a lot of use of this function.  Are each of these a win?  If so, how much?  Just like LIKELY and UNLIKELY, I would expect we&apos;d only want to use this on hot code paths where we new it to be a win.  Otherwise we&apos;re just setting ourselves up for overly constrained/confused compilers in the future.

I thought this was actually very little use at this point, this is only eight places. Two of the places just has many variant versions of the inner function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876723</commentid>
    <comment_count>8</comment_count>
      <attachid>154368</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-16 12:51:33 -0700</bug_when>
    <thetext>Comment on attachment 154368
Patch

Because it disable the inlining, it is not a win-or-neutral situation, you can easily get slower by adding the attribute.

I think it is best to enable it on a case by case basis by backing it with the benchmark numbers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876847</commentid>
    <comment_count>9</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-16 13:38:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 154368 [details])
&gt; Because it disable the inlining, it is not a win-or-neutral situation, you can easily get slower by adding the attribute.
&gt; 
&gt; I think it is best to enable it on a case by case basis by backing it with the benchmark numbers.

Yes. I had some discussion on the gcc mailing list over the issue. The didn&apos;t recommend trying to enable optimization for individual functions. Using PRAGMAs will not work either. At best we could identify files and enable extra optimization on a file by file basis.

Sorry that I forgot to close the bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154346</attachid>
            <date>2012-07-25 07:15:08 -0700</date>
            <delta_ts>2012-07-25 08:41:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92249-20120725161500.patch</filename>
            <type>text/plain</type>
            <size>45388</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFmZjEyNjJjM2NmOGRkMGJiZDJmYzZm
MTAwMzE1ODk1NTM4YjkxM2EuLjczYjU1MDhjMjgyOGI4Zjc0ZTYyODg5NTQ4NmJhZDQ2MDE3OTM5
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDctMjUgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQXV0by12ZWN0b3JpemUgY29t
cGlsZXIgaGludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkyMjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyBhIGZ1bmN0aW9uIGF0dHJpYnV0ZSBmb3IgaGludGluZyB0byB0aGUgY29tcGlsZXIg
dGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgZ29vZCB0YXJnZXQKKyAgICAgICAgZm9yIGF1dG8tdmVj
dG9yaXphdGlvbi4gVGhlIGF0dHJpYnV0ZSBhbHNvIGRpc2FibGVzIGlubGluaW5nLCBiZWNhdXNl
IHRoZSBhdHRyaWJ1dGUgd291bGQKKyAgICAgICAgYmUgbG9zdCBieSBHQ0MgaWYgdGhlIGZ1bmN0
aW9uIHdhcyBpbmxpbmVkIGludG8gb25lIHRoYXQgZG9lc24ndCBoYXZlIHRoZSBzYW1lIGF0dHJp
YnV0ZS4KKworICAgICAgICBBZGRzIHRoZSBhdHRyaWJ1dGUgdG8gU3RyaW5nQ29uY2F0ZW5hdGUg
aGVhZGVycy4gV2hpbGUgV1RGIGlzIHVzdWFsbHkgY29tcGlsZWQgd2l0aCBhdXRvLQorICAgICAg
ICB2ZWN0b3JpemF0aW9uIGVuYWJsZWQsIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiBoZWFkZXJzIHdp
bGwgYmUgY29tcGlsZWQgd2hlcmUgdGhleSBhcmUgdXNlZCwKKyAgICAgICAgYW5kIHRoZSByZXN0
IG9mIFdlYktpdCBkb2VzIG5vdCB1c2UgYXMgYWdncmVzaXZlIGNvbXBpbGVyIGZsYWdzIGFzIFdU
RiBkb2VzLgorCisgICAgICAgICogd3RmL0NvbXBpbGVyLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAgICAgKFdURjo6dHJ5TWFrZVN0cmluZyk6CisKIDIw
MTItMDctMjUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIFRoZXJlIGFyZSBwYXJhbGxlbCBHQyByZWxhdGVkIGNyYXNoZXMgcmVndWxhcmx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODA1YWFlNTE2MTJkYmQ0ZjA3NDhjOTA4MzdmN2UzZmQ5YTUyOGM2Mi4uZGMy
YTA1YjM3ODc3MjZhNGI1OTE4ZjVjODgzN2VjZDU5ZjQxZDI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDI5IEBACiAyMDEyLTA3LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgogCisgICAgICAgIEF1dG8tdmVjdG9yaXplIGNvbXBpbGVyIGhpbnQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjI0OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBVVRPVkVD
VE9SSVpFIGZsYWcgdG8gZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNvbmZpcm1lZCBhcyBiZW5l
Zml0aW5nIGZyb20gYXV0by12ZWN0b3JpemF0aW9uLgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlv
bmFsaXR5LiBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQXBwbHkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUFyaXRobWV0aWNQaXhlbHNVbmNsYW1wZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1h
cHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisKKzIwMTItMDctMjUgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKICAgICAgICAgRml4IGFyaXRobWV0aWMg
Y29tcG9zaXRlIGZpbHRlciBmb3IgYXV0by12ZWN0b3JpemF0aW9uCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjEyMwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCBm
NDBlMTVlNjAxM2Q4NDA4YTZlNWUxMzFkZDEyMjczMGJhNGFhOWRiLi5lYjQ0OWFhNTZjYjhiOGY2
ZTk2NWJmZDAyMjZmMTI4YmI2YTBjMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21w
aWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTI2Niw2ICsyNjYsMTcg
QEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIEFVVE9WRUNUT1JJWkUgKi8KKworI2lmbmRlZiBBVVRP
VkVDVE9SSVpFCisjaWYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBBVVRPVkVDVE9SSVpFIF9fYXR0
cmlidXRlX18oKG5vaW5saW5lLCBvcHRpbWl6ZSgidHJlZS12ZWN0b3JpemUiKSkpCisjZWxzZQor
I2RlZmluZSBBVVRPVkVDVE9SSVpFCisjZW5kaWYKKyNlbmRpZgorCisKIC8qIE9CSkNfQ0xBU1Mg
Ki8KIAogI2lmbmRlZiBPQkpDX0NMQVNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmgKaW5kZXggNDc5ZWQ4Y2EyMGUxNDExNGEyOTkxNjBiNmU1NDhmODU2ZTZhM2NkOC4uYzFk
NzhjYjZlNGFkNWZlMzY5OGI4NGY3MjhkZTExNGNjNTdiN2E5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtMzk3LDcgKzM5Nyw3IEBAIGlubGluZSB2b2lkIHN1
bVdpdGhPdmVyZmxvdyh1bnNpZ25lZCYgdG90YWwsIHVuc2lnbmVkIGFkZGVuZCwgYm9vbCYgb3Zl
cmZsb3cpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMj4KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQorQVVUT1ZFQ1RPUklaRSBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlw
ZTIgc3RyaW5nMikKIHsKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRl
cjEoc3RyaW5nMSk7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIy
KHN0cmluZzIpOwpAQCAtNDM2LDcgKzQzNiw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5
TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5
cGVuYW1lIFN0cmluZ1R5cGUzPgotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5n
KFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0
cmluZzMpCitBVVRPVkVDVE9SSVpFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmlu
ZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBz
dHJpbmczKQogewogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShz
dHJpbmcxKTsKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3Ry
aW5nMik7CkBAIC00ODEsNyArNDgxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtl
U3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFMKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBl
bmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQ+Ci1QYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKK0FVVE9WRUNU
T1JJWkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5
cGU0IHN0cmluZzQpCiB7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0
ZXIxKHN0cmluZzEpOwogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVy
MihzdHJpbmcyKTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRy
eU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgUwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTU+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSkKK0FVVE9WRUNUT1JJWkUgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0
cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmlu
ZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCiB7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5n
VHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOwogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5
cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKQEAgLTU4OSw3ICs1ODksNyBAQCBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIg
c3RyaW5nMiwgUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwg
dHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgotUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUy
IHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmlu
Z1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYpCitBVVRPVkVDVE9SSVpFIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJp
bmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0
LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2KQogewogICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKICAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CkBAIC02NTIsNyArNjUy
LDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlw
ZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdU
eXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1h
a2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5n
VHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwg
U3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKK0FVVE9WRUNUT1JJWkUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEs
IFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0
cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5
cGU3IHN0cmluZzcpCiB7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0
ZXIxKHN0cmluZzEpOwogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVy
MihzdHJpbmcyKTsKQEAgLTcyMSw3ICs3MjEsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRy
eU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgUwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlw
ZW5hbWUgU3RyaW5nVHlwZTg+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3Ry
aW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlw
ZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCkKK0FV
VE9WRUNUT1JJWkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5
cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0
cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmlu
ZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCiB7CiAgICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOwogICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKQEAgLTc5Niw3ICs3
OTYsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBT
dHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0
eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTgsIHR5cGVu
YW1lIFN0cmluZ1R5cGU5PgotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0
cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmlu
ZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2
IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgsIFN0cmlu
Z1R5cGU5IHN0cmluZzkpCitBVVRPVkVDVE9SSVpFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5
TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJp
bmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1
LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBz
dHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5KQogewogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0
cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggMzhiMDg5MjY4ZWZj
MDllYTg4NGI2MjI2OWIwYTljY2E3YjE3YTNkNi4uZGQ5MTAyZjM5ZmM0ODE4OWU1MTY5YWJmYzdl
MmVlNWJjYzc5MDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIG5hbWVzcGFj
ZSB7CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFBpeGVsIHVucGFja2luZyByb3V0aW5lcy4KIAotdm9p
ZCB1bnBhY2tPbmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRP
VkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVp
bnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxz
UGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRv
OChzb3VyY2VbMF0pOwpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JB
MTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
CiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCQTE2QmlnVG9SR0JBOChjb25zdCB1
aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVs
c1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkExNkJpZ1RvUkdC
QTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xv
cjE2QmlnVG84KHNvdXJjZVswXSk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCB1bnBhY2tPbmVS
b3dPZlJHQkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZSR0I4VG9SR0JBOChjb25z
dCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4
ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdCOFRvUkdCQTgo
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAt
Mzk3LDcgKzM5Nyw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0I4VG9SR0JBOChjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpCiAgICAgfQogfQogCi12b2lk
IHVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZF
Q1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChz
b3VyY2VbMF0pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0IxNkxp
dHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpCiAg
ICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdCMTZCaWdUb1JHQkE4KGNv
bnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQg
cGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJp
Z1RvOChzb3VyY2VbMF0pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZS
R0IxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mQkdSOFRvUkdCQTgoY29uc3QgdWlu
dDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkJHUjhUb1JHQkE4KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsyXTsKQEAgLTQzMyw3
ICs0MzMsNyBAQCB2b2lkIHVucGFja09uZVJvd09mQkdSOFRvUkdCQTgoY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaQogICAgIH0KIH0KIAotdm9pZCB1bnBh
Y2tPbmVSb3dPZkFSR0I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lk
IHVucGFja09uZVJvd09mQVJHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0
aW5hdGlvblswXSA9IHNvdXJjZVsxXTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIHVucGFja09u
ZVJvd09mQVJHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24sIHVucwogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkxpdHRsZVRv
UkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZB
UkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25b
MF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOwpAQCAtNDU3LDcgKzQ1Nyw3
IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0CiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJv
d09mQVJHQjE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1
bnBhY2tPbmVSb3dPZkFSR0IxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7CkBAIC00Njks
NyArNDY5LDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkJpZ1RvUkdCQTgoY29uc3QgdWlu
dDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgdW5w
YWNrT25lUm93T2ZBQkdSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9p
ZCB1bnBhY2tPbmVSb3dPZkFCR1I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVz
dGluYXRpb25bMF0gPSBzb3VyY2VbM107CkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCB1bnBhY2tP
bmVSb3dPZkFCR1I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnMKICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTgo
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkJHUkE4VG9S
R0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGNvbnN0IHVpbnQzMl90KiBzb3VyY2UzMiA9IHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oc291cmNlKTsKICAgICB1aW50MzJf
dCogZGVzdGluYXRpb24zMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4oZGVzdGlu
YXRpb24pOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZCR1JBOFRvUkdC
QTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zCiAgICAg
fQogfQogCi12b2lkIHVucGFja09uZVJvd09mQkdSQTE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50
MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkJHUkExNkxpdHRsZVRvUkdC
QTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xv
cjE2TGl0dGxlVG84KHNvdXJjZVsyXSk7CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCB1bnBhY2tP
bmVSb3dPZkJHUkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXQKICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZCR1JBMTZCaWdUb1JH
QkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQkdS
QTE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
Y29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzJdKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lk
IHVucGFja09uZVJvd09mQkdSQTE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1
aW50OF90KiBkZXN0aW5hdGlvbgogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE1
NTUxVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVS
b3dPZlJHQkE1NTUxVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIHVpbnQxNl90IHBh
Y2tlZFZhbHVlID0gc291cmNlWzBdOwpAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgdW5wYWNrT25l
Um93T2ZSR0JBNTU1MVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCQTQ0NDRUb1JHQkE4
KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBp
bnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdCQTQ0
NDRUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgdWludDE2X3QgcGFja2VkVmFsdWUg
PSBzb3VyY2VbMF07CkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE0
NDQ0VG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwK
ICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZSR0I1NjVUb1JHQkE4KGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdCNTY1VG9SR0JBOChjb25z
dCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBp
eGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CiAgICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291cmNlWzBdOwpA
QCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0I1NjVUb1JHQkE4KGNvbnN0
IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1CiAgICAgfQogfQogCi12
b2lkIHVucGFja09uZVJvd09mUjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpF
IHZvaWQgdW5wYWNrT25lUm93T2ZSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAtNTg0LDcgKzU4NCw3IEBAIHZvaWQgdW5wYWNr
T25lUm93T2ZSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUjE2TGl0dGxlVG9S
R0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZlIx
NkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9
IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CkBAIC01OTYsNyArNTk2LDcgQEAg
dm9pZCB1bnBhY2tPbmVSb3dPZlIxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZS
MTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09u
ZVJvd09mUjE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKQEAgLTYwOCw3ICs2MDgsNyBA
QCB2b2lkIHVucGFja09uZVJvd09mUjE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdQogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dP
ZlJBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVS
b3dPZlJBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
c291cmNlWzBdOwpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSQThUb1JH
QkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnCiAg
ICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWlu
dDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQ
ZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZSQTE2TGl0dGxlVG9SR0JB
OChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9y
MTZMaXR0bGVUbzgoc291cmNlWzBdKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lkIHVucGFja09u
ZVJvd09mUkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpbwogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZlJBMTZCaWdUb1JHQkE4
KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBp
bnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkExNkJp
Z1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZl
cnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCB1bnBh
Y2tPbmVSb3dPZlJBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLAogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkFSOFRvUkdCQTgo
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkFSOFRvUkdC
QTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzFdOwpA
QCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZBUjhUb1JHQkE4KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnCiAgICAgfQogfQogCi12
b2lkIHVucGFja09uZVJvd09mQVIxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRP
VkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZBUjE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50
MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgo
c291cmNlWzFdKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIHVucGFja09uZVJvd09mQVIxNkxp
dHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpbwog
ICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkFSMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQVIxNkJpZ1RvUkdCQTgoY29u
c3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2Qmln
VG84KHNvdXJjZVsxXSk7CkBAIC02ODAsNyArNjgwLDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZkFS
MTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9u
LAogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkE4VG9SR0JBOChjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93
KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQThUb1JHQkE4KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJS
b3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IDB4MDsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2
b2lkIHVucGFja09uZVJvd09mQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24sIHVuc2lnbgogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkEx
NkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNr
T25lUm93T2ZBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSAweDA7CkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZkEx
NkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24KICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZBMTZCaWdUb1JHQkE4KGNvbnN0IHVp
bnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxz
UGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQTE2QmlnVG9SR0JBOChj
b25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gMHgwOwpAQCAtNzE2LDcg
KzcxNiw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1CiAgICAgfQogfQogCi12b2lkIHVucGFj
a09uZVJvd09mUkdCQThUb1JHQkEzMkYoY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQg
dW5wYWNrT25lUm93T2ZSR0JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBjb25zdCBm
bG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewpAQCAtNzI5LDcgKzcyOSw3IEBAIHZvaWQg
dW5wYWNrT25lUm93T2ZSR0JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgdW5zCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mQkdSQThU
b1JHQkEzMkYoY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZC
R1JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3Rv
ciA9IDEuMGYgLyAyNTUuMGY7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewpAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZC
R1JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwg
dW5zCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCMzJGVG9SR0JBMzJGKGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJHQjMyRlRvUkdCQTMyRihj
b25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKQEAgLTc1NCw3
ICs3NTQsNyBAQCB2b2lkIHVucGFja09uZVJvd09mUkdCMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaQogICAgIH0KIH0KIAotdm9pZCB1bnBh
Y2tPbmVSb3dPZlIzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVu
cGFja09uZVJvd09mUjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlv
blswXSA9IHNvdXJjZVswXTsKQEAgLTc2Niw3ICs3NjYsNyBAQCB2b2lkIHVucGFja09uZVJvd09m
UjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVu
c2lnbgogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZlJBMzJGVG9SR0JBMzJGKGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJBMzJGVG9SR0JBMzJGKGNv
bnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVs
c1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAtNzc4LDcg
Kzc3OCw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSQTMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnCiAgICAgfQogfQogCi12b2lkIHVucGFj
a09uZVJvd09mQTMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5w
YWNrT25lUm93T2ZBMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gMDsKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIHVucGFja09uZVJvd09mQTMyRlRvUkdC
QTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbgogLy8g
UGl4ZWwgcGFja2luZyByb3V0aW5lcy4KIC8vCiAKLXZvaWQgcGFja09uZVJvd09mUkdCQThUb0E4
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGlu
dCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb0E4
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGlu
dCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXTsKQEAg
LTgwMyw3ICs4MDMsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9BOChjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZAogICAgIH0KIH0KIAotdm9p
ZCBwYWNrT25lUm93T2ZSR0JBOFRvUjgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9p
ZCBwYWNrT25lUm93T2ZSR0JBOFRvUjgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdOwpAQCAtODEyLDcgKzgxMiw3IEBAIHZvaWQgcGFja09uZVJvd09m
UkdCQThUb1I4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SOFByZW11bHRpcGx5
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGlu
dCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1I4
UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
c291cmNlWzNdIC8gMjU1LjBmOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZvaWQgcGFja09uZVJvd09m
UkdCQThUb1I4UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvCiB9CiAKIC8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3QgYmUg
cmVtb3ZlZC4KLXZvaWQgcGFja09uZVJvd09mUkdCQThUb1I4VW5tdWx0aXBseShjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SOFVubXVsdGlwbHko
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3Vy
Y2VbM10gPyBzb3VyY2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTgzNSw3ICs4MzUsNyBAQCB2
b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbgogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JB
OFRvUkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdC
QThUb1JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2Vb
MF07CkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkE4KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmUKICAgICB9CiB9
CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQThUb1JBOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cp
CitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1JBOFByZW11bHRpcGx5KGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1
NS4wZjsKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SQThQcmVt
dWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aQogfQogCiAv
LyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9SQThVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
dWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVD
VE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1JBOFVubXVsdGlwbHkoY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJv
dykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3Vy
Y2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIHBhY2tPbmVS
b3dPZlJHQkE4VG9SQThVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpbwogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCOChjb25z
dCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4
ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4KGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKQEAgLTg4
MSw3ICs4ODEsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbgogICAgIH0KIH0KIAotdm9pZCBw
YWNrT25lUm93T2ZSR0JBOFRvUkdCOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
dWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVD
VE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1JHQjhQcmVtdWx0aXBseShjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7CkBA
IC04OTcsNyArODk3LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCOFByZW11bHRpcGx5
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXQKIH0KIAogLy8gRklYTUU6
IHRoaXMgcm91dGluZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdm9pZCBwYWNrT25l
Um93T2ZSR0JBOFRvUkdCOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUg
dm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAg
ICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3VyY2VbM10g
LyAyNTUuMGYgOiAxLjBmKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJH
QkE4VG9SR0I4VW5tdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aQogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCQThQcmVtdWx0aXBs
eShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBp
bnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9S
R0JBOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKQEAgLTkyOSw3ICs5MjksNyBAQCB2b2lkIHBhY2tPbmVS
b3dPZlJHQkE4VG9SR0JBOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYQogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0
IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBOFVubXVsdGlwbHkoY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBp
eGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCQThV
bm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEu
MGYgLyAoc291cmNlWzNdID8gc291cmNlWzNdIC8gMjU1LjBmIDogMS4wZik7CkBAIC05NDUsNyAr
OTQ1LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCQThVbm11bHRpcGx5KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXQKICAgICB9CiB9CiAKLXZvaWQgcGFja09u
ZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RP
UklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NChjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CiAgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjApIDw8IDgp
CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9y
dDQ0NDQoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGkKICAgICB9CiB9CiAK
LXZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0UHJlbXVsdGlwbHkoY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2ln
bmVkU2hvcnQ0NDQ0UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKQEAgLTk3NCw3ICs5NzQsNyBAQCB2b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NFByZW11bHRpcGx5KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludAogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5
IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNo
b3J0NDQ0NFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFj
a09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0VW5tdWx0aXBseShjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJv
dykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3Vy
Y2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTk5MCw3ICs5OTAsNyBAQCB2b2lkIHBhY2tPbmVS
b3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50MQogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRT
aG9ydDU1NTEoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09m
UkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgKmRlc3Rp
bmF0aW9uID0gKCgoc291cmNlWzBdICYgMHhGOCkgPDwgOCkKQEAgLTEwMDIsNyArMTAwMiw3IEBA
IHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDE2X3QqIGRlc3RpCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJH
QkE4VG9VbnNpZ25lZFNob3J0NTU1MVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
dWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZF
Q1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTU1MVByZW11bHRp
cGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2Vb
M10gLyAyNTUuMGY7CkBAIC0xMDE5LDcgKzEwMTksNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4
VG9VbnNpZ25lZFNob3J0NTU1MVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dAogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92
ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTU1MVVubXVsdGlwbHko
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGlu
dCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vu
c2lnbmVkU2hvcnQ1NTUxVW5tdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3VyY2VbM10gLyAyNTUuMGYgOiAx
LjBmKTsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2ln
bmVkU2hvcnQ1NTUxVW5tdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxCiAgICAg
fQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTY1KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxz
UGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNo
b3J0NTY1KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNl
WzBdICYgMHhGOCkgPDwgOCkKQEAgLTEwNDYsNyArMTA0Niw3IEBAIHZvaWQgcGFja09uZVJvd09m
UkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjUoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCog
ZGVzdGluCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0
NTY1UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09u
ZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjVQcmVtdWx0aXBseShjb25zdCB1aW50OF90KiBz
b3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykK
IHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwpAQCAtMTA2
Miw3ICsxMDYyLDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVBy
ZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDEKIH0KIAogLy8gRklYTUU6IHRo
aXMgcm91dGluZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdm9pZCBwYWNrT25lUm93
T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRP
VkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjVVbm11bHRp
cGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8g
KHNvdXJjZVszXSA/IHNvdXJjZVszXSAvIDI1NS4wZiA6IDEuMGYpOwpAQCAtMTA3Nyw3ICsxMDc3
LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVVubXVsdGlwbHko
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTYKICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJv
d09mUkdCQTMyRlRvUkdCMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25l
Um93T2ZSR0JBMzJGVG9SR0IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0g
PSBzb3VyY2VbMF07CkBAIC0xMDg4LDcgKzEwODgsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkEz
MkZUb1JHQjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2ln
bgogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0IzMkZQcmVtdWx0aXBs
eShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkdC
MzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBz
b3VyY2VbM107CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZU
b1JHQjMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdAog
ICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0IzMkZVbm11bHRpcGx5KGNv
bnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVs
c1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0IzMkZV
bm11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNl
WzNdID8gMS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lk
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQjMyRlVubXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aQogfQogCiAvLyBVc2VkIG9ubHkgZHVyaW5nIFJHQkE4IG9yIEJH
UkE4IC0+IGZsb2F0aW5nLXBvaW50IHVwbG9hZHMuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZU
b1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkEz
MkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2Vb
MF07CkBAIC0xMTI1LDcgKzExMjUsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEz
MkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZwogICAgIH0K
IH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHkoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkZQcmVt
dWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XTsKQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCQTMy
RlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hCiAgICAgfQog
fQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkZVbm11bHRpcGx5KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJv
dykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGVW5tdWx0
aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGlu
dCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/
IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwpAQCAtMTE1MSw3ICsxMTUxLDcgQEAgdm9pZCBwYWNr
T25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXQKICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvQTMy
Rihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvQTMy
Rihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXTsKQEAgLTEx
NjAsNyArMTE2MCw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvQTMyRihjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkCiAgICAgfQogfQogCi12b2lk
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lk
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBzb3VyY2VbMF07CkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIHBhY2tPbmVSb3dP
ZlJHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZAogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGUHJlbXVs
dGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBp
bnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZU
b1IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IHNvdXJjZVszXTsKQEAgLTExNzksNyArMTE3OSw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMy
RlRvUjMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlv
CiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkZVbm11bHRpcGx5KGNv
bnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVs
c1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGVW5t
dWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBw
YWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRv
UkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBp
bnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZU
b1JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpA
QCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SQTMyRihjb25z
dCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmUKICAgICB9CiB9CiAK
LXZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitB
VVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZQcmVtdWx0aXBseShj
b25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKQEAgLTEy
MTAsNyArMTIxMCw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZQcmVtdWx0aXBs
eShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpCiAgICAgfQogfQogCi12b2lk
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JBMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVD
VE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZVbm11bHRpcGx5KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJv
dykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAvIHNvdXJj
ZVszXSA6IDEuMGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBkNTg5N2MzOTJiYjdlOTY2NGUwYzJjMGU0ZWZjNTA1
MjlkNWNlZTQ4Li5kMTlkODNkOTRjODI1ZTcyNDcwOTA0MjI0Yzg3OGM2YjE3OTRjZGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBpbmxpbmUgdW5zaWduZWQgY2hhciBmZUJsZW5kVW5r
bm93bih1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLAogfQogCiB0
ZW1wbGF0ZTxCbGVuZFR5cGUgQmxlbmRGdW5jdGlvbj4KLXN0YXRpYyB2b2lkIHBsYXRmb3JtQXBw
bHkodW5zaWduZWQgY2hhciogc291cmNlUGl4ZWxBLCB1bnNpZ25lZCBjaGFyKiBzb3VyY2VQaXhl
bEIsCitzdGF0aWMgQVVUT1ZFQ1RPUklaRSB2b2lkIHBsYXRmb3JtQXBwbHkodW5zaWduZWQgY2hh
ciogc291cmNlUGl4ZWxBLCB1bnNpZ25lZCBjaGFyKiBzb3VyY2VQaXhlbEIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9uUGl4ZWwsIHVuc2lnbmVk
IHBpeGVsQXJyYXlMZW5ndGgpCiB7CiAgICAgdW5zaWduZWQgbGVuID0gcGl4ZWxBcnJheUxlbmd0
aCAvIDQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRleCA2NTFiYWMyZTE4NTgz
OWU3MDhmYmIwYWU1MWU3ZDc4MjMwZjM4YzhmLi4yNTFlYjU3ZGYyYWFiYjg3NmZlNDcwNmY4OTI2
MDk0MDczMjk1N2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKQEAgLTE1MCw3
ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBnYW1tYSh1bnNpZ25lZCBjaGFyKiB2YWx1ZXMsIGNvbnN0
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHRyYW5zZgogICAgIH0KIH0KIAotdm9pZCBGRUNv
bXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQorQVVUT1ZFQ1RPUklaRSB2
b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4
IDlkNTY2ZWQ5MjNkOTVhZDM0NDMxNzFhNzMwYTkwY2RlMzljYWNmMjguLmE2N2RhM2UxMzNlMWQy
Zjk0NTQ5OTc1OTBlOGZmMDdhNzEzZTEwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0xNTgsNyAr
MTU4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzKHVuc2ln
bmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhcioKIC8vIGNvbXB1dGVBcml0aG1ldGljUGl4
ZWxzVW5jbGFtcGVkIGlzIGEgZmFzdGVyIHZlcnNpb24gb2YgY29tcHV0ZUFyaXRobWV0aWNQaXhl
bHMgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSBjbGFtcGluZwogLy8gaXMgbm90IG5lY2Vzc2Fy
eS4gVGhpcyBlbmFibGVzIGFnZ3Jlc2l2ZSBjb21waWxlciBvcHRpbWl6YXRpb25zIHN1Y2ggYXMg
YXV0by12ZWN0b3JpemF0aW9uLgogdGVtcGxhdGUgPGludCBiMSwgaW50IGI0Pgotc3RhdGljIGlu
bGluZSB2b2lkIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzVW5jbGFtcGVkKHVuc2lnbmVkIGNoYXIq
IHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb24sIGludCBwaXhlbEFycmF5TGVuZ3Ro
LCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKK3N0YXRpYyBBVVRPVkVD
VE9SSVpFIHZvaWQgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNVbmNsYW1wZWQodW5zaWduZWQgY2hh
ciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBpeGVsQXJyYXlMZW5n
dGgsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KQogewogICAgIGZsb2F0
IHNjYWxlZEsxOwogICAgIGZsb2F0IHNjYWxlZEs0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRl
eCA4OTVmNzY2ODgwMzllODFmMmY3MGJmYWQ4MDA1ZjA3N2JkZTUxZDE4Li5jYmFlYjRmMTkwMTQx
ODFmZGQ4M2FlY2Y2MDdjZTkxZDQ3OGNiMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAt
MTYyLDcgKzE2Miw3IEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVpbnQz
MiBwaXhlbCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spCitBVVRPVkVDVE9SSVpFIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCiB7CiAgICAgYmxpdE11bHRpc2FtcGxlRnJh
bWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IDMyZGQzOWE1ZjBl
NmU1MTQ3OTJlOGZlNjU5NmIzMjQ5Y2VjNDI0NjcuLmY3MWM4NjNjMjJiZjczNWQ1MzllZjJkMmUy
YjlhOTZiZjliNTE5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBs
b29rVXBUYWJsZSkKIH0KIAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitB
VVRPVkVDVE9SSVpFIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGltYWdlRGF0YSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBhcmVhID0gNC4wZiAqIHJlY3Qud2lkdGgo
KSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKGFyZWEgPiBzdGF0aWNfY2FzdDxmbG9hdD4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBpbnQgcHJlbXVsdGlwbHlBQkdSdG9BUkdCKHVuc2lnbmVkIGludCB4
KQogICAgIHJldHVybiB4OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVs
dGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6
ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKK0FVVE9WRUNUT1JJWkUgdm9pZCBJbWFnZUJ1
ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5
KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7CiAg
ICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0
LmhlaWdodCgpID4gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154368</attachid>
            <date>2012-07-25 08:41:48 -0700</date>
            <delta_ts>2013-04-16 12:51:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92249-20120725174140.patch</filename>
            <type>text/plain</type>
            <size>45517</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFmZjEyNjJjM2NmOGRkMGJiZDJmYzZm
MTAwMzE1ODk1NTM4YjkxM2EuLjc2M2QxYjBiOTcwMmE3NDkyZDU0NDhlNjIwMTRiNzA2ZTZhMWFi
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDctMjUgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQXV0by12ZWN0b3JpemUgY29t
cGlsZXIgaGludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkyMjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyBhIGZ1bmN0aW9uIGF0dHJpYnV0ZSBmb3IgaGludGluZyB0byB0aGUgY29tcGlsZXIg
dGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgZ29vZCB0YXJnZXQKKyAgICAgICAgZm9yIGF1dG8tdmVj
dG9yaXphdGlvbi4gVGhlIGF0dHJpYnV0ZSBhbHNvIGRpc2FibGVzIGlubGluaW5nLCBiZWNhdXNl
IHRoZSBhdHRyaWJ1dGUgd291bGQKKyAgICAgICAgYmUgbG9zdCBieSBHQ0MgaWYgdGhlIGZ1bmN0
aW9uIHdhcyBpbmxpbmVkIGludG8gb25lIHRoYXQgZG9lc24ndCBoYXZlIHRoZSBzYW1lIGF0dHJp
YnV0ZS4KKworICAgICAgICBXaGlsZSB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBzdXBwb3J0ZWQg
ZnJvbSBHQ0MgNC40IGFuZCB1cCwgaXQgaXMgb25seSBlbmFibGVkIGhlcmUgZm9yCisgICAgICAg
IEdDQyA0LjYgYW5kIHVwLCBkdWUgdG8gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3JzIHdoZW4gdXNp
bmcgaXQgd2l0aCBzb21lIG9sZGVyIHZlcnNpb25zLgorCisgICAgICAgIEFkZHMgdGhlIGF0dHJp
YnV0ZSB0byBTdHJpbmdDb25jYXRlbmF0ZSBoZWFkZXJzLiBXaGlsZSBXVEYgaXMgdXN1YWxseSBj
b21waWxlZCB3aXRoIGF1dG8tCisgICAgICAgIHZlY3Rvcml6YXRpb24gZW5hYmxlZCwgZnVuY3Rp
b25zIGRlY2xhcmVkIGluIGhlYWRlcnMgd2lsbCBiZSBjb21waWxlZCB3aGVyZSB0aGV5IGFyZSB1
c2VkLAorICAgICAgICBhbmQgdGhlIHJlc3Qgb2YgV2ViS2l0IGRvZXMgbm90IHVzZSBhcyBhZ2dy
ZXNpdmUgY29tcGlsZXIgZmxhZ3MgYXMgV1RGIGRvZXMuCisKKyAgICAgICAgKiB3dGYvQ29tcGls
ZXIuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAo
V1RGOjp0cnlNYWtlU3RyaW5nKToKKwogMjAxMi0wNy0yNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVGhlcmUgYXJlIHBhcmFsbGVsIEdDIHJl
bGF0ZWQgY3Jhc2hlcyByZWd1bGFybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYzI3NjQyZDJmNDUxYmU3ODZi
ZjRmYmVmODNjMDBiZGJkNTEwMzI0Li4yNDNhNmI4OWFiNGU4ODBhMzc1NTVmZGQ4Nzk2MzdlZmY5
NjgyMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDctMjUgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQXV0by12
ZWN0b3JpemUgY29tcGlsZXIgaGludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkyMjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEFVVE9WRUNUT1JJWkUgZmxhZyB0byBmdW5jdGlvbnMgdGhhdCBo
YXZlIGJlZW4gY29uZmlybWVkIGFzIGJlbmVmaXRpbmcgZnJvbSBhdXRvLXZlY3Rvcml6YXRpb24u
CisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHkuIE5vIG5ldyB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1BcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNm
ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQXJpdGht
ZXRpY1BpeGVsc1VuY2xhbXBlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKwogMjAx
Mi0wNy0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMzYwNi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IGY0
MGUxNWU2MDEzZDg0MDhhNmU1ZTEzMWRkMTIyNzMwYmE0YWE5ZGIuLjQ3MmE2MDRjMzFiODQ1N2Jl
YzJkMjc0MjViYmE4ZjYyYjVlYTIzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBp
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApAQCAtMjY2LDYgKzI2NiwxNyBA
QAogI2VuZGlmCiAjZW5kaWYKIAorLyogQVVUT1ZFQ1RPUklaRSAqLworCisjaWZuZGVmIEFVVE9W
RUNUT1JJWkUKKyNpZiBHQ0NfVkVSU0lPTl9BVF9MRUFTVCg0LCA2LCAwKQorI2RlZmluZSBBVVRP
VkVDVE9SSVpFIF9fYXR0cmlidXRlX18oKG5vaW5saW5lLCBvcHRpbWl6ZSgidHJlZS12ZWN0b3Jp
emUiKSkpCisjZWxzZQorI2RlZmluZSBBVVRPVkVDVE9SSVpFCisjZW5kaWYKKyNlbmRpZgorCisK
IC8qIE9CSkNfQ0xBU1MgKi8KIAogI2lmbmRlZiBPQkpDX0NMQVNTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmgKaW5kZXggNDc5ZWQ4Y2EyMGUxNDExNGEyOTkxNjBiNmU1NDhm
ODU2ZTZhM2NkOC4uYzFkNzhjYjZlNGFkNWZlMzY5OGI4NGY3MjhkZTExNGNjNTdiN2E5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtMzk3LDcgKzM5Nyw3IEBA
IGlubGluZSB2b2lkIHN1bVdpdGhPdmVyZmxvdyh1bnNpZ25lZCYgdG90YWwsIHVuc2lnbmVkIGFk
ZGVuZCwgYm9vbCYgb3ZlcmZsb3cpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQorQVVUT1ZFQ1RP
UklaRSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3Ry
aW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMikKIHsKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5n
VHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwpAQCAtNDM2LDcgKzQzNiw3IEBAIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBl
MiBzdHJpbmcyKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzPgotUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIs
IFN0cmluZ1R5cGUzIHN0cmluZzMpCitBVVRPVkVDVE9SSVpFIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcy
LCBTdHJpbmdUeXBlMyBzdHJpbmczKQogewogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5
cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
Mj4gYWRhcHRlcjIoc3RyaW5nMik7CkBAIC00ODEsNyArNDgxLDcgQEAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0
cmluZzIsIFMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0
cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQ+Ci1Q
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwg
U3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3Ry
aW5nNCkKK0FVVE9WRUNUT1JJWkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5n
KFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0
cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCiB7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3Ry
aW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOwogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlw
ZTIgc3RyaW5nMiwgUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5h
bWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBl
NCwgdHlwZW5hbWUgU3RyaW5nVHlwZTU+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VT
dHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlw
ZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSkKK0FV
VE9WRUNUT1JJWkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5
cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0
cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCiB7CiAgICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOwogICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKQEAgLTU4OSw3ICs1ODksNyBA
QCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5n
MSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdU
eXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2
PgotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYpCitBVVRP
VkVDVE9SSVpFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJp
bmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2
KQogewogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcx
KTsKICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7
CkBAIC02NTIsNyArNjUyLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5n
KFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFMKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBT
dHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0
eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+Ci1QYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIg
c3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5n
VHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykK
K0FVVE9WRUNUT1JJWkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmlu
Z1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMs
IFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0
cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcpCiB7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3Ry
aW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOwogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKQEAgLTcyMSw3ICs3MjEsNyBAQCBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlw
ZTIgc3RyaW5nMiwgUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5h
bWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBl
NCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBT
dHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwg
U3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3Ry
aW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlw
ZTggc3RyaW5nOCkKK0FVVE9WRUNUT1JJWkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtl
U3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5
cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0
cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmlu
ZzgpCiB7CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmlu
ZzEpOwogICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcy
KTsKQEAgLTc5Niw3ICs3OTYsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJp
bmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgUwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1l
IFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUs
IHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3Ry
aW5nVHlwZTgsIHR5cGVuYW1lIFN0cmluZ1R5cGU5PgotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0
cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0
cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmlu
ZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4
IHN0cmluZzgsIFN0cmluZ1R5cGU5IHN0cmluZzkpCitBVVRPVkVDVE9SSVpFIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBl
MiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJp
bmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3
LCBTdHJpbmdUeXBlOCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5KQogewogICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKICAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5k
ZXggMzhiMDg5MjY4ZWZjMDllYTg4NGI2MjI2OWIwYTljY2E3YjE3YTNkNi4uZGQ5MTAyZjM5ZmM0
ODE4OWU1MTY5YWJmYzdlMmVlNWJjYzc5MDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzYxLDcgKzM2
MSw3IEBAIG5hbWVzcGFjZSB7CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFBpeGVsIHVucGFja2luZyBy
b3V0aW5lcy4KIAotdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgoY29uc3Qg
dWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBMTZMaXR0bGVU
b1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0
Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgdW5w
YWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVp
bnQ4X3QqIGRlc3RpbmF0CiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCQTE2Qmln
VG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dP
ZlJHQkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7CkBAIC0zODUsNyArMzg1LDcgQEAg
dm9pZCB1bnBhY2tPbmVSb3dPZlJHQkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZS
R0I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJv
d09mUkdCOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
c291cmNlWzBdOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0I4VG9S
R0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpCiAg
ICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVp
bnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxz
UGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JH
QkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29s
b3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgdW5wYWNr
T25lUm93T2ZSR0IxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCMTZCaWdUb1JH
QkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdC
MTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBj
b252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQg
dW5wYWNrT25lUm93T2ZSR0IxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mQkdSOFRv
UkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkJH
UjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVsyXTsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIHVucGFja09uZVJvd09mQkdSOFRvUkdCQTgo
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaQogICAgIH0K
IH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVU
T1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQVJHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkg
ewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsxXTsKQEAgLTQ0NSw3ICs0NDUsNyBA
QCB2b2lkIHVucGFja09uZVJvd09mQVJHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
dWludDhfdCogZGVzdGluYXRpb24sIHVucwogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dP
ZkFSR0IxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQg
dW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAg
ICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOwpA
QCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JHQkE4
KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0CiAgICAgfQogfQogCi12
b2lkIHVucGFja09uZVJvd09mQVJHQjE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9W
RUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJS
b3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJj
ZVsxXSk7CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkJpZ1Rv
UkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24KICAgICB9
CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZBQkdSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FV
VE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkFCR1I4VG9SR0JBOChjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93
KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107CkBAIC00ODEsNyArNDgxLDcg
QEAgdm9pZCB1bnBhY2tPbmVSb3dPZkFCR1I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnMKICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93
T2ZCR1JBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tP
bmVSb3dPZkJHUkE4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGNvbnN0IHVpbnQzMl90
KiBzb3VyY2UzMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oc291cmNl
KTsKICAgICB1aW50MzJfdCogZGVzdGluYXRpb24zMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVp
bnQzMl90Kj4oZGVzdGluYXRpb24pOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgdW5wYWNrT25l
Um93T2ZCR1JBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mQkdSQTE2TGl0dGxlVG9S
R0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZkJH
UkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsyXSk7CkBAIC01MTEsNyArNTExLDcg
QEAgdm9pZCB1bnBhY2tPbmVSb3dPZkJHUkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXQKICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93
T2ZCR1JBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVu
cGFja09uZVJvd09mQkdSQTE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzJdKTsKQEAgLTUyMyw3
ICs1MjMsNyBAQCB2b2lkIHVucGFja09uZVJvd09mQkdSQTE2QmlnVG9SR0JBOChjb25zdCB1aW50
MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbgogICAgIH0KIH0KIAotdm9pZCB1bnBh
Y2tPbmVSb3dPZlJHQkE1NTUxVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUg
dm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE1NTUxVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAg
ICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291cmNlWzBdOwpAQCAtNTM5LDcgKzUzOSw3IEBA
IHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBNTU1MVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24sCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09m
UkdCQTQ0NDRUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFj
a09uZVJvd09mUkdCQTQ0NDRUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgdWludDE2
X3QgcGFja2VkVmFsdWUgPSBzb3VyY2VbMF07CkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCB1bnBh
Y2tPbmVSb3dPZlJHQkE0NDQ0VG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwKICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZSR0I1NjVUb1JH
QkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUkdC
NTY1VG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVl
ID0gc291cmNlWzBdOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0I1
NjVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
CiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cp
CitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZSOFRvUkdCQTgoY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJv
dykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAtNTg0LDcgKzU4NCw3
IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1
aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJv
d09mUjE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1
bnBhY2tPbmVSb3dPZlIxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CkBAIC01
OTYsNyArNTk2LDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZlIxNkxpdHRsZVRvUkdCQTgoY29uc3Qg
dWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQg
dW5wYWNrT25lUm93T2ZSMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUkla
RSB2b2lkIHVucGFja09uZVJvd09mUjE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKQEAg
LTYwOCw3ICs2MDgsNyBAQCB2b2lkIHVucGFja09uZVJvd09mUjE2QmlnVG9SR0JBOChjb25zdCB1
aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdQogICAgIH0KIH0KIAotdm9p
ZCB1bnBhY2tPbmVSb3dPZlJBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUg
dm9pZCB1bnBhY2tPbmVSb3dPZlJBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgdW5wYWNr
T25lUm93T2ZSQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24sIHVuc2lnCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkExNkxpdHRsZVRv
UkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZS
QTE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKQEAgLTYzMiw3ICs2MzIsNyBA
QCB2b2lkIHVucGFja09uZVJvd09mUkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpbwogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dP
ZlJBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFj
a09uZVJvd09mUkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5h
dGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7CkBAIC02NDQsNyArNjQ0
LDcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZlJBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBz
b3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLAogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVS
b3dPZkFSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tP
bmVSb3dPZkFSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlWzFdOwpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZBUjhU
b1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
CiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mQVIxNkxpdHRsZVRvUkdCQTgoY29uc3Qg
dWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZBUjE2TGl0dGxlVG9S
R0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENv
bG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIHVucGFj
a09uZVJvd09mQVIxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpbwogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkFSMTZCaWdUb1JH
QkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQVIx
NkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7CkBAIC02ODAsNyArNjgwLDcgQEAgdm9pZCB1
bnBhY2tPbmVSb3dPZkFSMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLAogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZkE4VG9SR0JB
OChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBp
bnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mQThUb1JH
QkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IDB4MDsKQEAgLTY5
Miw3ICs2OTIsNyBAQCB2b2lkIHVucGFja09uZVJvd09mQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbgogICAgIH0KIH0KIAotdm9pZCB1
bnBhY2tPbmVSb3dPZkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9S
SVpFIHZvaWQgdW5wYWNrT25lUm93T2ZBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBz
b3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQog
ewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
ICAgICAgICAgZGVzdGluYXRpb25bMF0gPSAweDA7CkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCB1
bnBhY2tPbmVSb3dPZkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgdW5wYWNrT25lUm93T2ZBMTZCaWdU
b1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHVucGFja09uZVJvd09m
QTE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
MHgwOwpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZBMTZCaWdUb1JHQkE4
KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1CiAgICAgfQog
fQogCi12b2lkIHVucGFja09uZVJvd09mUkdCQThUb1JHQkEzMkYoY29uc3QgdWludDhfdCogc291
cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRP
VkVDVE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykK
IHsKICAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewpAQCAtNzI5LDcg
KzcyOSw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zCiAgICAgfQogfQogCi12b2lkIHVucGFj
a09uZVJvd09mQkdSQThUb1JHQkEzMkYoY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQg
dW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBjb25zdCBm
bG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewpAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQg
dW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgdW5zCiAgICAgfQogfQogCi12b2lkIHVucGFja09uZVJvd09mUkdCMzJG
VG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJH
QjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVswXTsKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIHVucGFja09uZVJvd09mUkdCMzJGVG9SR0JB
MzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaQogICAgIH0K
IH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZlIzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZF
Q1RPUklaRSB2b2lkIHVucGFja09uZVJvd09mUjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291
cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKQEAgLTc2Niw3ICs3NjYsNyBAQCB2b2lk
IHVucGFja09uZVJvd09mUjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCog
ZGVzdGluYXRpb24sIHVuc2lnbgogICAgIH0KIH0KIAotdm9pZCB1bnBhY2tPbmVSb3dPZlJBMzJG
VG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJB
MzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdOwpAQCAtNzc4LDcgKzc3OCw3IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZSQTMyRlRvUkdCQTMy
Rihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnCiAgICAgfQog
fQogCi12b2lkIHVucGFja09uZVJvd09mQTMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVD
VE9SSVpFIHZvaWQgdW5wYWNrT25lUm93T2ZBMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3Vy
Y2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gMDsKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIHVucGFja09u
ZVJvd09mQTMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbgogLy8gUGl4ZWwgcGFja2luZyByb3V0aW5lcy4KIC8vCiAKLXZvaWQgcGFja09u
ZVJvd09mUkdCQThUb0E4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09u
ZVJvd09mUkdCQThUb0E4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVszXTsKQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9B
OChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZAog
ICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUjgoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FV
VE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUjgoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAg
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAtODEyLDcgKzgxMiw3IEBAIHZv
aWQgcGFja09uZVJvd09mUkdCQThUb1I4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4
VG9SOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09u
ZVJvd09mUkdCQThUb1I4UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZv
aWQgcGFja09uZVJvd09mUkdCQThUb1I4UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvCiB9CiAKIC8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9z
c3kgYW5kIG11c3QgYmUgcmVtb3ZlZC4KLXZvaWQgcGFja09uZVJvd09mUkdCQThUb1I4VW5tdWx0
aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4
VG9SOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3VyY2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTgz
NSw3ICs4MzUsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SOFVubXVsdGlwbHkoY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbgogICAgIH0KIH0KIAotdm9pZCBw
YWNrT25lUm93T2ZSR0JBOFRvUkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQg
cGFja09uZVJvd09mUkdCQThUb1JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBzb3VyY2VbMF07CkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZS
R0JBOFRvUkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmUKICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQThUb1JBOFByZW11bHRpcGx5
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGlu
dCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1JB
OFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IHNvdXJjZVszXSAvIDI1NS4wZjsKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIHBhY2tPbmVSb3dP
ZlJHQkE4VG9SQThQcmVtdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aQogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJl
IHJlbW92ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SQThVbm11bHRpcGx5KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQ
ZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1JBOFVubXVsdGlw
bHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChz
b3VyY2VbM10gPyBzb3VyY2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTg3MCw3ICs4NzAsNyBA
QCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SQThVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpbwogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZS
R0JBOFRvUkdCOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dP
ZlJHQkE4VG9SR0I4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVswXTsKQEAgLTg4MSw3ICs4ODEsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbgogICAg
IH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCOFByZW11bHRpcGx5KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQ
ZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1JHQjhQcmVtdWx0
aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2Vb
M10gLyAyNTUuMGY7CkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRv
UkdCOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXQK
IH0KIAogLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVk
Lgotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykK
K0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCOFVubXVsdGlwbHkoY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBp
eGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2Vb
M10gPyBzb3VyY2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4VW5tdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aQogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRv
UkdCQThQcmVtdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tP
bmVSb3dPZlJHQkE4VG9SR0JBOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKQEAgLTkyOSw3ICs5MjksNyBA
QCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYQogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlz
IGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0JB
OFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93
T2ZSR0JBOFRvUkdCQThVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291cmNlWzNdIC8gMjU1LjBmIDogMS4w
Zik7CkBAIC05NDUsNyArOTQ1LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCQThVbm11
bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXQKICAgICB9CiB9
CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0
NDQ0NChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVsw
XSAmIDB4RjApIDw8IDgpCkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JB
OFRvVW5zaWduZWRTaG9ydDQ0NDQoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVz
dGkKICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0
UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJv
d09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewog
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKQEAgLTk3NCw3
ICs5NzQsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NFByZW11
bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludAogfQogCiAvLyBGSVhNRTogdGhpcyBy
b3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJH
QkE4VG9VbnNpZ25lZFNob3J0NDQ0NFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1
aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVD
VE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0VW5tdWx0aXBs
eShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChz
b3VyY2VbM10gPyBzb3VyY2VbM10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTk5MCw3ICs5OTAsNyBA
QCB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NFVubXVsdGlwbHkoY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MQogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZS
R0JBOFRvVW5zaWduZWRTaG9ydDU1NTEoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZv
aWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxKGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQog
ewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
ICAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlWzBdICYgMHhGOCkgPDwgOCkKQEAgLTEw
MDIsNyArMTAwMiw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUx
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpCiAgICAgfQogfQogCi12b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTU1MVByZW11bHRpcGx5KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxz
UGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNo
b3J0NTU1MVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7CkBAIC0xMDE5LDcgKzEwMTksNyBAQCB2b2lkIHBh
Y2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTU1MVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludAogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFu
ZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0
NTU1MVVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09u
ZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxVW5tdWx0aXBseShjb25zdCB1aW50OF90KiBz
b3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykK
IHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3VyY2Vb
M10gLyAyNTUuMGYgOiAxLjBmKTsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHZvaWQgcGFja09uZVJv
d09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxVW5tdWx0aXBseShjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQxCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNo
b3J0NTY1KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJH
QkE4VG9VbnNpZ25lZFNob3J0NTY1KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgKmRlc3RpbmF0
aW9uID0gKCgoc291cmNlWzBdICYgMHhGOCkgPDwgOCkKQEAgLTEwNDYsNyArMTA0Niw3IEBAIHZv
aWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjUoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50MTZfdCogZGVzdGluCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkE4
VG9VbnNpZ25lZFNob3J0NTY1UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9S
SVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjVQcmVtdWx0aXBseShj
b25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8g
MjU1LjBmOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5z
aWduZWRTaG9ydDU2NVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDEKIH0K
IAogLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgot
dm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVVubXVsdGlwbHkoY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVk
U2hvcnQ1NjVVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSAxLjBmIC8gKHNvdXJjZVszXSA/IHNvdXJjZVszXSAvIDI1NS4wZiA6IDEuMGYpOwpA
QCAtMTA3Nyw3ICsxMDc3LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9y
dDU2NVVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTYKICAgICB9CiB9CiAK
LXZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJ
WkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAg
ZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CkBAIC0xMDg4LDcgKzEwODgsNyBAQCB2b2lkIHBh
Y2tPbmVSb3dPZlJHQkEzMkZUb1JHQjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbgogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9S
R0IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJv
d09mUkdCQTMyRlRvUkdCMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3IgPSBzb3VyY2VbM107CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIHBhY2tP
bmVSb3dPZlJHQkEzMkZUb1JHQjMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdAogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0Iz
MkZVbm11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZS
R0JBMzJGVG9SR0IzMkZVbm11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7CkBAIC0xMTEzLDcg
KzExMTMsNyBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQjMyRlVubXVsdGlwbHkoY29u
c3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aQogfQogCiAvLyBVc2VkIG9ubHkgZHVy
aW5nIFJHQkE4IG9yIEJHUkE4IC0+IGZsb2F0aW5nLXBvaW50IHVwbG9hZHMuCi12b2lkIHBhY2tP
bmVSb3dPZlJHQkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBh
Y2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBzb3VyY2VbMF07CkBAIC0xMTI1LDcgKzExMjUsNyBAQCB2b2lkIHBhY2tPbmVSb3dP
ZlJHQkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZwogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGUHJl
bXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkEz
MkZUb1JHQkEzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IHNvdXJjZVszXTsKQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQgcGFja09uZVJvd09m
UkdCQTMyRlRvUkdCQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkZVbm11
bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJG
VG9SR0JBMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwpAQCAtMTE1MSw3ICsxMTUx
LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGVW5tdWx0aXBseShjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXQKICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJv
d09mUkdCQTMyRlRvQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJv
d09mUkdCQTMyRlRvQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVszXTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRv
QTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkCiAg
ICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVU
T1ZFQ1RPUklaRSB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewog
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAg
ICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CkBAIC0xMTY5LDcgKzExNjksNyBAQCB2
b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZAogICAgIH0KIH0KIAotdm9pZCBwYWNrT25lUm93T2ZSR0JB
MzJGVG9SMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tP
bmVSb3dPZlJHQkEzMkZUb1IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9h
dCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKQEAgLTExNzksNyArMTE3OSw3IEBAIHZvaWQgcGFj
a09uZVJvd09mUkdCQTMyRlRvUjMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvCiAgICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1Iz
MkZVbm11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgaW50IHBpeGVsc1BlclJvdykKK0FVVE9WRUNUT1JJWkUgdm9pZCBwYWNrT25lUm93T2ZS
R0JBMzJGVG9SMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IHNvdXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwpAQCAtMTE4OSw3ICsx
MTg5LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGVW5tdWx0aXBseShjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24KICAgICB9CiB9CiAKLXZvaWQgcGFja09u
ZVJvd09mUkdCQTMyRlRvUkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorQVVUT1ZFQ1RPUklaRSB2b2lkIHBhY2tP
bmVSb3dPZlJHQkEzMkZUb1JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlWzBdOwpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JB
MzJGVG9SQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2ln
bmUKICAgICB9CiB9CiAKLXZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZQcmVtdWx0aXBs
eShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEz
MkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNv
dXJjZVszXTsKQEAgLTEyMTAsNyArMTIxMCw3IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRv
UkEzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpCiAg
ICAgfQogfQogCi12b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JBMzJGVW5tdWx0aXBseShjb25z
dCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQ
ZXJSb3cpCitBVVRPVkVDVE9SSVpFIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZVbm11
bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNd
ID8gMS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBkNTg5N2MzOTJiYjdlOTY2
NGUwYzJjMGU0ZWZjNTA1MjlkNWNlZTQ4Li5kMTlkODNkOTRjODI1ZTcyNDcwOTA0MjI0Yzg3OGM2
YjE3OTRjZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBpbmxpbmUgdW5zaWduZWQg
Y2hhciBmZUJsZW5kVW5rbm93bih1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNpZ25l
ZCBjaGFyLAogfQogCiB0ZW1wbGF0ZTxCbGVuZFR5cGUgQmxlbmRGdW5jdGlvbj4KLXN0YXRpYyB2
b2lkIHBsYXRmb3JtQXBwbHkodW5zaWduZWQgY2hhciogc291cmNlUGl4ZWxBLCB1bnNpZ25lZCBj
aGFyKiBzb3VyY2VQaXhlbEIsCitzdGF0aWMgQVVUT1ZFQ1RPUklaRSB2b2lkIHBsYXRmb3JtQXBw
bHkodW5zaWduZWQgY2hhciogc291cmNlUGl4ZWxBLCB1bnNpZ25lZCBjaGFyKiBzb3VyY2VQaXhl
bEIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9u
UGl4ZWwsIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGgpCiB7CiAgICAgdW5zaWduZWQgbGVuID0g
cGl4ZWxBcnJheUxlbmd0aCAvIDQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRl
eCA2NTFiYWMyZTE4NTgzOWU3MDhmYmIwYWU1MWU3ZDc4MjMwZjM4YzhmLi4yNTFlYjU3ZGYyYWFi
Yjg3NmZlNDcwNmY4OTI2MDk0MDczMjk1N2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBnYW1tYSh1bnNpZ25lZCBjaGFy
KiB2YWx1ZXMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHRyYW5zZgogICAgIH0K
IH0KIAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQor
QVVUT1ZFQ1RPUklaRSB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwCmluZGV4IDlkNTY2ZWQ5MjNkOTVhZDM0NDMxNzFhNzMwYTkwY2RlMzljYWNmMjgu
LmE2N2RhM2UxMzNlMWQyZjk0NTQ5OTc1OTBlOGZmMDdhNzEzZTEwYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVBcml0aG1l
dGljUGl4ZWxzKHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhcioKIC8vIGNvbXB1
dGVBcml0aG1ldGljUGl4ZWxzVW5jbGFtcGVkIGlzIGEgZmFzdGVyIHZlcnNpb24gb2YgY29tcHV0
ZUFyaXRobWV0aWNQaXhlbHMgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSBjbGFtcGluZwogLy8g
aXMgbm90IG5lY2Vzc2FyeS4gVGhpcyBlbmFibGVzIGFnZ3Jlc2l2ZSBjb21waWxlciBvcHRpbWl6
YXRpb25zIHN1Y2ggYXMgYXV0by12ZWN0b3JpemF0aW9uLgogdGVtcGxhdGUgPGludCBiMSwgaW50
IGI0Pgotc3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzVW5jbGFtcGVk
KHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb24sIGludCBw
aXhlbEFycmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkK
K3N0YXRpYyBBVVRPVkVDVE9SSVpFIHZvaWQgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNVbmNsYW1w
ZWQodW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50
IHBpeGVsQXJyYXlMZW5ndGgsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0
KQogewogICAgIGZsb2F0IHNjYWxlZEsxOwogICAgIGZsb2F0IHNjYWxlZEs0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAppbmRleCA4OTVmNzY2ODgwMzllODFmMmY3MGJmYWQ4MDA1ZjA3N2JkZTUxZDE4
Li5jYmFlYjRmMTkwMTQxODFmZGQ4M2FlY2Y2MDdjZTkxZDQ3OGNiMGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2Fw
QmdyVG9SZ2IocXVpbnQzMiBwaXhlbCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJp
dG1hcFRleHR1cmUqIG1hc2spCitBVVRPVkVDVE9SSVpFIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCiB7CiAgICAgYmxp
dE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmlu
ZGV4IDMyZGQzOWE1ZjBlNmU1MTQ3OTJlOGZlNjU5NmIzMjQ5Y2VjNDI0NjcuLmY3MWM4NjNjMjJi
ZjczNWQ1MzllZjJkMmUyYjlhOTZiZjliNTE5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCkBAIC0xNzQsNyArMTc0
LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0
IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIH0KIAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRp
cGxpZWQ+Ci1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IElu
dFNpemUmIHNpemUpCitBVVRPVkVDVE9SSVpFIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEm
IGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBhcmVhID0gNC4w
ZiAqIHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKGFyZWEgPiBzdGF0aWNf
Y2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCkBAIC0yODIsNyAr
MjgyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcHJlbXVsdGlwbHlBQkdSdG9BUkdC
KHVuc2lnbmVkIGludCB4KQogICAgIHJldHVybiB4OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpw
dXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKK0FVVE9WRUNUT1JJ
WkUgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVp
bnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5h
dGVTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFT
U0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7Cg==
</data>
<flag name="review"
          id="163559"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>