<?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>53253</bug_id>
          
          <creation_ts>2011-01-27 12:51:44 -0800</creation_ts>
          <short_desc>Move wince/mt19937ar.c to ThirdParty and make it a policy choice</short_desc>
          <delta_ts>2011-02-01 09:54:03 -0800</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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>53506</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ossy</cc>
    
    <cc>paroga</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>340999</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-27 12:51:44 -0800</bug_when>
    <thetext>We should make the decision to use the Merseene Twister pseudorandom number generator a policy choice and move the implementation of the Merseene Twister algorithm, in file wince/mt19937ar.c, to  common location, say ThirdParty.

Currently, the choice to use this pseudorandom number generator is dependent on whether we are building JavaScriptCore on Windows CE. Instead, we should make this a policy choice and enable this by default in the Windows CE port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341017</commentid>
    <comment_count>1</comment_count>
      <attachid>80361</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-27 13:35:26 -0800</bug_when>
    <thetext>Created attachment 80361
Patch

I thought to move the file wince/mt19937ar.c to Source/ThirdParty since it is a third party library. I am open to suggestions on where to place this file as well as the macro define to use.

I am not very familiar with CMake and the Windows CE port so I am unsure of the correctness of the Cmake change. I used WebCore/CMakeLists.txt and JavaScriptCore/CMakeLists.txt as references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341020</commentid>
    <comment_count>2</comment_count>
      <attachid>80361</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-27 13:45:39 -0800</bug_when>
    <thetext>Comment on attachment 80361
Patch

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

&gt; Source/JavaScriptCore/CMakeListsWinCE.txt:3
&gt; +LIST(APPEND JavaScriptCore_INCLUDE_DIRECTORIES
&gt; +    &quot;${CMAKE_SOURCE_DIR}/Source/ThirdParty&quot;
&gt; +)

${CMAKE_SOURCE_DIR} is already &lt;root&gt;/Source, so it should read &quot;${CMAKE_SOURCE_DIR}/ThirdParty&quot;

I&apos;ll try this change on my local build, because I&apos;m not sure if it&apos;s the correct &quot;*_INCLUDE_DIRECTORIES&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341032</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-27 14:00:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 80361 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80361&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/CMakeListsWinCE.txt:3
&gt; &gt; +LIST(APPEND JavaScriptCore_INCLUDE_DIRECTORIES
&gt; &gt; +    &quot;${CMAKE_SOURCE_DIR}/Source/ThirdParty&quot;
&gt; &gt; +)
&gt; 
&gt; ${CMAKE_SOURCE_DIR} is already &lt;root&gt;/Source, so it should read &quot;${CMAKE_SOURCE_DIR}/ThirdParty&quot;

Will change.

Based on your response then we should also change
&lt;http://trac.webkit.org/browser/trunk/Source/WebCore/CMakeLists.txt?rev=76792#L83&gt;.

&gt; 
&gt; I&apos;ll try this change on my local build, because I&apos;m not sure if it&apos;s the correct &quot;*_INCLUDE_DIRECTORIES&quot;

Actually, we should probably do this in change in file JavaScriptCore/wtf/CmakeListsWinCE.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341038</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-27 14:05:35 -0800</bug_when>
    <thetext>Attachment 80361 did not build on qt:
Build output: http://queues.webkit.org/results/7584370</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341041</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-27 14:12:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 80361 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80361&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/CMakeListsWinCE.txt:3
&gt; &gt; &gt; +LIST(APPEND JavaScriptCore_INCLUDE_DIRECTORIES
&gt; &gt; &gt; +    &quot;${CMAKE_SOURCE_DIR}/Source/ThirdParty&quot;
&gt; &gt; &gt; +)
&gt; &gt; 
&gt; &gt; ${CMAKE_SOURCE_DIR} is already &lt;root&gt;/Source, so it should read &quot;${CMAKE_SOURCE_DIR}/ThirdParty&quot;
&gt; 
&gt; Will change.

FYI, IMHO the &quot;correct&quot; change:

diff --git a/Source/JavaScriptCore/wtf/CMakeLists.txt b/Source/JavaScriptCore/wtf/CMakeLists.txt
index b1931d7..9406f5d 100644
--- a/Source/JavaScriptCore/wtf/CMakeLists.txt
+++ b/Source/JavaScriptCore/wtf/CMakeLists.txt
@@ -136,6 +136,7 @@ INCLUDE_IF_EXISTS(${JAVASCRIPTCORE_DIR}/wtf/CMakeLists${PORT}.txt)
 
 LIST(APPEND WTF_INCLUDE_DIRECTORIES
     &quot;${CMAKE_BINARY_DIR}&quot;
+    &quot;${CMAKE_SOURCE_DIR}/ThirdParty&quot;
 )
 
 WEBKIT_WRAP_SOURCELIST(${WTF_SOURCES})


OR


diff --git a/Source/JavaScriptCore/wtf/CMakeListsWinCE.txt b/Source/JavaScriptCore/wtf/CMakeListsWinCE.txt
index 9c558eb..19e9ceb 100644
--- a/Source/JavaScriptCore/wtf/CMakeListsWinCE.txt
+++ b/Source/JavaScriptCore/wtf/CMakeListsWinCE.txt
@@ -22,6 +22,10 @@ LIST(APPEND WTF_SOURCES
     ${3RDPARTY_DIR}/ce-compat/ce_unicode.cpp
 )
 
+LIST(APPEND WTF_INCLUDE_DIRECTORIES
+    &quot;${CMAKE_SOURCE_DIR}/ThirdParty&quot;
+)
+
 LIST(APPEND WTF_LIBRARIES
     mmtimer
 )


I like the first more, since you changed OS(WINCE) to USE(MERSENNE_TWISTER_19937).


&gt; Based on your response then we should also change
&gt; &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/CMakeLists.txt?rev=76792#L83&gt;.
Unfortunately CMake build system need some cleanup :-(.
There are many &quot;wrong&quot; includes from the early &quot;EFL only&quot; days too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341060</commentid>
    <comment_count>6</comment_count>
      <attachid>80365</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-27 14:43:05 -0800</bug_when>
    <thetext>Created attachment 80365
Patch

Updated patch based on Patrick Gansterer&apos;s suggestions.

Appended Source/ThirdParty to the end of the list of include directories in JavaScriptCore/JavaScriptCore.pri in an attempt to fix the Qt Windows EWS bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341075</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-27 15:04:25 -0800</bug_when>
    <thetext>Attachment 80365 did not build on qt:
Build output: http://queues.webkit.org/results/7521351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341078</commentid>
    <comment_count>8</comment_count>
      <attachid>80365</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-01-27 15:12:29 -0800</bug_when>
    <thetext>Comment on attachment 80365
Patch

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

&gt; Source/JavaScriptCore/JavaScriptCore.pri:26
&gt; +    $$PWD/../ThirdParty

$$PWD/../ThirdParty \</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341120</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-27 16:25:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 80365 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80365&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/JavaScriptCore.pri:26
&gt; &gt; +    $$PWD/../ThirdParty
&gt; 
&gt; $$PWD/../ThirdParty \

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341428</commentid>
    <comment_count>10</comment_count>
      <attachid>80448</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-28 07:09:27 -0800</bug_when>
    <thetext>Created attachment 80448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341617</commentid>
    <comment_count>11</comment_count>
      <attachid>80448</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-28 12:14:04 -0800</bug_when>
    <thetext>Comment on attachment 80448
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342136</commentid>
    <comment_count>12</comment_count>
      <attachid>80448</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-29 14:17:51 -0800</bug_when>
    <thetext>Comment on attachment 80448
Patch

Clearing flags on attachment: 80448

Committed r77070: &lt;http://trac.webkit.org/changeset/77070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342137</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-29 14:17:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342142</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-29 14:40:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Based on your response then we should also change
&gt; &gt; &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/CMakeLists.txt?rev=76792#L83&gt;.
&gt; Unfortunately CMake build system need some cleanup :-(.
&gt; There are many &quot;wrong&quot; includes from the early &quot;EFL only&quot; days too.

Filed bug #53382 to remove references to ${CMAKE_SOURCE_DIR}/Source in CMake files.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80361</attachid>
            <date>2011-01-27 13:35:26 -0800</date>
            <delta_ts>2011-01-27 14:43:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53253.patch</filename>
            <type>text/plain</type>
            <size>15994</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDc2ODI4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEt
MjcgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgd2luY2UvbXQxOTkzN2FyLmMgdG8gVGhp
cmRQYXJ0eSBhbmQgbWFrZSBpdCBhIHBvbGljeSBjaG9pY2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjUzCisKKyAgICAgICAgTW92ZSBpbXBsZW1l
bnRhdGlvbiBvZiBNZXJzZW5uZSBUd2lzdGVyIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9y
IHRvCisgICAgICAgIFRoaXJkUGFydHkgc2luY2UgaXQgaXMgYSB0aGlyZCBwYXJ0eSBsaWJyYXJ5
LgorCisgICAgICAgICogU291cmNlL1RoaXJkUGFydHkvbXQxOTkzN2FyLmM6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMuCisKIDIwMTEtMDEt
MjYgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc2ODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTAxLTI3ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIHdpbmNlL210MTk5Mzdhci5jIHRvIFRoaXJkUGFydHkgYW5kIG1ha2UgaXQgYSBwb2xp
Y3kgY2hvaWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MzI1MworCisgICAgICAgIE1ha2UgaW5jbHVzaW9uIG9mIE1UMTk5MzcgYSBwb2xpY3kgZGVj
aXNpb24uCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBoYXJkY29kZWQgdG8gIHVzZSBNVDE5OTM3
IHdoZW4gYnVpbGRpbmcgZm9yCisgICAgICAgIFdpbmRvd3MgQ0UuIEluc3RlYWQsIHdlIHNob3Vs
ZCBtYWtlIHRoaXMgYSBwb2xpY3kgZGVjaXNpb24KKyAgICAgICAgd2l0aCB0aGUgV2luZG93cyBD
RSBwb3J0IHVzaW5nIHRoaXMgYnkgZGVmYXVsdC4KKworICAgICAgICAqIENNYWtlTGlzdHNXaW5D
RS50eHQ6IEFwcGVuZCBTb3VyY2UvVGhpcmRQYXJ0eSB0byB0aGUgZW5kCisgICAgICAgIG9mIHRo
ZSBsaXN0IGluY2x1ZGUgZGlyZWN0b3JpZXMuCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERl
ZmluZWQgV1RGX1VTRV9NRVJTRU5ORV9UV0lTVEVSXzE5OTM3IHdoZW4KKyAgICAgICAgYnVpbGRp
bmcgZm9yIFdpbmRvd3MgQ0UuCisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5jcHA6CisgICAg
ICAgIChXVEY6OnJhbmRvbU51bWJlcik6IFN1YnN0aXR1dGVkIFVTRShNRVJTRU5ORV9UV0lTVEVS
XzE5OTM3KSBmb3IgT1MoV0lOQ0UpLgorICAgICAgICAqIHd0Zi93aW5jZS9tdDE5OTM3YXIuYzog
UmVtb3ZlZDsgTW92ZWQgdG8gU291cmNlL1RoaXJkUGFydHkuCisKIDIwMTEtMDEtMjYgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3Rh
Y2hvd2lhay4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzV2luQ0UudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzV2luQ0UudHh0
CShyZXZpc2lvbiA3Njc0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzV2lu
Q0UudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNyBAQAorTElTVChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0NNQUtFX1NPVVJDRV9ESVJ9L1Nv
dXJjZS9UaGlyZFBhcnR5IgorKQorCiBMSVNUKEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDc2NzQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsNiArNTY0LDcgQEAKIAog
I2lmIE9TKFdJTkNFKQogI2luY2x1ZGUgPGNlX3RpbWUuaD4KKyNkZWZpbmUgV1RGX1VTRV9NRVJT
RU5ORV9UV0lTVEVSXzE5OTM3IDEKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShRVCkgJiYgT1MoREFSV0lO
KSAmJiAhRU5BQkxFKFNJTkdMRV9USFJFQURFRCkpKSAmJiAhZGVmaW5lZChFTkFCTEVfSlNDX01V
TFRJUExFX1RIUkVBRFMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51
bWJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21O
dW1iZXIuY3BwCShyZXZpc2lvbiA3Njc0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UmFuZG9tTnVtYmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCi0jaWYgT1MoV0lOQ0UpCisjaWYg
VVNFKE1FUlNFTk5FX1RXSVNURVJfMTk5MzcpCiBleHRlcm4gIkMiIHsKLSNpbmNsdWRlICJ3aW5j
ZS9tdDE5OTM3YXIuYyIKKyNpbmNsdWRlICJtdDE5OTM3YXIuYyIKIH0KICNlbmRpZgogCkBAIC03
OCw3ICs3OCw3IEBAIGRvdWJsZSByYW5kb21OdW1iZXIoKQogICAgIC8vIE1hc2sgb2ZmIHRoZSBs
b3cgNTNiaXRzCiAgICAgZnVsbFJhbmRvbSAmPSAoMUxMIDw8IDUzKSAtIDE7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGRvdWJsZT4oZnVsbFJhbmRvbSkvc3RhdGljX2Nhc3Q8ZG91YmxlPigxTEwg
PDwgNTMpOwotI2VsaWYgT1MoV0lOQ0UpCisjZWxpZiBVU0UoTUVSU0VOTkVfVFdJU1RFUl8xOTkz
NykKICAgICByZXR1cm4gZ2VucmFuZF9yZXM1MygpOwogI2VsaWYgT1MoV0lORE9XUykKICAgICB1
aW50MzJfdCBwYXJ0MSA9IHJhbmQoKSAmIChSQU5EX01BWCAtIDEpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi93aW5jZS9tdDE5OTM3YXIuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5jCShyZXZpc2lvbiA3Njc0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTcwICswLDAgQEAKLS8qCi0gICBBIEMtcHJvZ3JhbSBmb3IgTVQxOTkzNywgd2l0
aCBpbml0aWFsaXphdGlvbiBpbXByb3ZlZCAyMDAyLzEvMjYuCi0gICBDb2RlZCBieSBUYWt1amkg
TmlzaGltdXJhIGFuZCBNYWtvdG8gTWF0c3Vtb3RvLgotCi0gICBCZWZvcmUgdXNpbmcsIGluaXRp
YWxpemUgdGhlIHN0YXRlIGJ5IHVzaW5nIGluaXRfZ2VucmFuZChzZWVkKQotICAgb3IgaW5pdF9i
eV9hcnJheShpbml0X2tleSwga2V5X2xlbmd0aCkuCi0KLSAgIENvcHlyaWdodCAoQykgMTk5NyAt
IDIwMDIsIE1ha290byBNYXRzdW1vdG8gYW5kIFRha3VqaSBOaXNoaW11cmEsCi0gICBBbGwgcmln
aHRzIHJlc2VydmVkLgotCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICAgYXJlIG1ldDoK
LQotICAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSAgICAgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICAgIDMuIFRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUK
LSAgICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuCi0gICAgICAgIHBlcm1pc3Npb24uCi0KLSAgIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgot
ICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gICBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YKLSAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCi0gICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAgIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSAgIEFueSBm
ZWVkYmFjayBpcyB2ZXJ5IHdlbGNvbWUuCi0gICBodHRwOi8vd3d3Lm1hdGguc2NpLmhpcm9zaGlt
YS11LmFjLmpwL35tLW1hdC9NVC9lbXQuaHRtbAotICAgZW1haWw6IG0tbWF0IEAgbWF0aC5zY2ku
aGlyb3NoaW1hLXUuYWMuanAgKHJlbW92ZSBzcGFjZSkKLSovCi0KLSNpbmNsdWRlIDxzdGRpby5o
PgotCi0vKiBQZXJpb2QgcGFyYW1ldGVycyAqLwotI2RlZmluZSBOIDYyNAotI2RlZmluZSBNIDM5
NwotI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAq
LwotI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNpZ25pZmljYW50IHct
ciBiaXRzICovCi0jZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8qIGxlYXN0IHNpZ25p
ZmljYW50IHIgYml0cyAqLwotCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBtdFtOXTsgLyogdGhlIGFy
cmF5IGZvciB0aGUgc3RhdGUgdmVjdG9yICAqLwotc3RhdGljIGludCBtdGk9TisxOyAvKiBtdGk9
PU4rMSBtZWFucyBtdFtOXSBpcyBub3QgaW5pdGlhbGl6ZWQgKi8KLQotLyogaW5pdGlhbGl6ZXMg
bXRbTl0gd2l0aCBhIHNlZWQgKi8KLXZvaWQgaW5pdF9nZW5yYW5kKHVuc2lnbmVkIGxvbmcgcykK
LXsKLSAgICBtdFswXT0gcyAmIDB4ZmZmZmZmZmZVTDsKLSAgICBmb3IgKG10aT0xOyBtdGk8Tjsg
bXRpKyspIHsKLSAgICAgICAgbXRbbXRpXSA9ICgxODEyNDMzMjUzVUwgKiAobXRbbXRpLTFdIF4g
KG10W210aS0xXSA+PiAzMCkpICsgbXRpKTsKLSAgICAgICAgLyogU2VlIEtudXRoIFRBT0NQIFZv
bDIuIDNyZCBFZC4gUC4xMDYgZm9yIG11bHRpcGxpZXIuICovCi0gICAgICAgIC8qIEluIHRoZSBw
cmV2aW91cyB2ZXJzaW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QgICAqLwotICAgICAgICAv
KiBvbmx5IE1TQnMgb2YgdGhlIGFycmF5IG10W10uICAgICAgICAgICAgICAgICAgICAgICAgKi8K
LSAgICAgICAgLyogMjAwMi8wMS8wOSBtb2RpZmllZCBieSBNYWtvdG8gTWF0c3Vtb3RvICAgICAg
ICAgICAgICovCi0gICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOwotICAgICAgICAvKiBm
b3IgPjMyIGJpdCBtYWNoaW5lcyAqLwotICAgIH0KLX0KLQotLyogaW5pdGlhbGl6ZSBieSBhbiBh
cnJheSB3aXRoIGFycmF5LWxlbmd0aCAqLwotLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBp
bml0aWFsaXppbmcga2V5cyAqLwotLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCi0vKiBz
bGlnaHQgY2hhbmdlIGZvciBDKyssIDIwMDQvMi8yNiAqLwotdm9pZCBpbml0X2J5X2FycmF5KHVu
c2lnbmVkIGxvbmcgaW5pdF9rZXlbXSxpbnQga2V5X2xlbmd0aCkKLXsKLSAgICBpbnQgaSwgaiwg
azsKLSAgICBpbml0X2dlbnJhbmQoMTk2NTAyMThVTCk7Ci0gICAgaT0xOyBqPTA7Ci0gICAgayA9
IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7Ci0gICAgZm9yICg7IGs7IGstLSkgewot
ICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAx
NjY0NTI1VUwpKQotICAgICAgICAgICsgaW5pdF9rZXlbal0gKyBqOyAvKiBub24gbGluZWFyICov
Ci0gICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFj
aGluZXMgKi8KLSAgICAgICAgaSsrOyBqKys7Ci0gICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0g
bXRbTi0xXTsgaT0xOyB9Ci0gICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7Ci0gICAgfQot
ICAgIGZvciAoaz1OLTE7IGs7IGstLSkgewotICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRb
aS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVUwpKQotICAgICAgICAgIC0gaTsg
Lyogbm9uIGxpbmVhciAqLwotICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBX
T1JEU0laRSA+IDMyIG1hY2hpbmVzICovCi0gICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGk+PU4p
IHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KLSAgICB9Ci0KLSAgICBtdFswXSA9IDB4ODAwMDAw
MDBVTDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8KLX0K
LQotLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZh
bCAqLwotdW5zaWduZWQgbG9uZyBnZW5yYW5kX2ludDMyKHZvaWQpCi17Ci0gICAgdW5zaWduZWQg
bG9uZyB5OwotICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hZzAxWzJdPXsweDBVTCwgTUFUUklY
X0F9OwotICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi8KLQotICAg
IGlmIChtdGkgPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCi0gICAg
ICAgIGludCBrazsKLQotICAgICAgICBpZiAobXRpID09IE4rMSkgICAvKiBpZiBpbml0X2dlbnJh
bmQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAqLwotICAgICAgICAgICAgaW5pdF9nZW5yYW5kKDU0
ODlVTCk7IC8qIGEgZGVmYXVsdCBpbml0aWFsIHNlZWQgaXMgdXNlZCAqLwotCi0gICAgICAgIGZv
ciAoa2s9MDtrazxOLU07a2srKykgewotICAgICAgICAgICAgeSA9IChtdFtra10mVVBQRVJfTUFT
Syl8KG10W2trKzFdJkxPV0VSX01BU0spOwotICAgICAgICAgICAgbXRba2tdID0gbXRba2srTV0g
XiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICg7
a2s8Ti0xO2trKyspIHsKLSAgICAgICAgICAgIHkgPSAobXRba2tdJlVQUEVSX01BU0spfChtdFtr
aysxXSZMT1dFUl9NQVNLKTsKLSAgICAgICAgICAgIG10W2trXSA9IG10W2trKyhNLU4pXSBeICh5
ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKLSAgICAgICAgfQotICAgICAgICB5ID0gKG10W04t
MV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spOwotICAgICAgICBtdFtOLTFdID0gbXRb
TS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKLQotICAgICAgICBtdGkgPSAwOwot
ICAgIH0KLQotICAgIHkgPSBtdFttdGkrK107Ci0KLSAgICAvKiBUZW1wZXJpbmcgKi8KLSAgICB5
IF49ICh5ID4+IDExKTsKLSAgICB5IF49ICh5IDw8IDcpICYgMHg5ZDJjNTY4MFVMOwotICAgIHkg
Xj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMFVMOwotICAgIHkgXj0gKHkgPj4gMTgpOwotCi0gICAg
cmV0dXJuIHk7Ci19Ci0KLS8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHg3ZmZm
ZmZmZl0taW50ZXJ2YWwgKi8KLWxvbmcgZ2VucmFuZF9pbnQzMSh2b2lkKQotewotICAgIHJldHVy
biAobG9uZykoZ2VucmFuZF9pbnQzMigpPj4xKTsKLX0KLQotLyogZ2VuZXJhdGVzIGEgcmFuZG9t
IG51bWJlciBvbiBbMCwxXS1yZWFsLWludGVydmFsICovCi1kb3VibGUgZ2VucmFuZF9yZWFsMSh2
b2lkKQotewotICAgIHJldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk1LjApOwot
ICAgIC8qIGRpdmlkZWQgYnkgMl4zMi0xICovCi19Ci0KLS8qIGdlbmVyYXRlcyBhIHJhbmRvbSBu
dW1iZXIgb24gWzAsMSktcmVhbC1pbnRlcnZhbCAqLwotZG91YmxlIGdlbnJhbmRfcmVhbDIodm9p
ZCkKLXsKLSAgICByZXR1cm4gZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5Ni4wKTsKLSAg
ICAvKiBkaXZpZGVkIGJ5IDJeMzIgKi8KLX0KLQotLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJl
ciBvbiAoMCwxKS1yZWFsLWludGVydmFsICovCi1kb3VibGUgZ2VucmFuZF9yZWFsMyh2b2lkKQot
ewotICAgIHJldHVybiAoKChkb3VibGUpZ2VucmFuZF9pbnQzMigpKSArIDAuNSkqKDEuMC80Mjk0
OTY3Mjk2LjApOwotICAgIC8qIGRpdmlkZWQgYnkgMl4zMiAqLwotfQotCi0vKiBnZW5lcmF0ZXMg
YSByYW5kb20gbnVtYmVyIG9uIFswLDEpIHdpdGggNTMtYml0IHJlc29sdXRpb24qLwotZG91Ymxl
IGdlbnJhbmRfcmVzNTModm9pZCkKLXsKLSAgICB1bnNpZ25lZCBsb25nIGE9Z2VucmFuZF9pbnQz
MigpPj41LCBiPWdlbnJhbmRfaW50MzIoKT4+NjsKLSAgICByZXR1cm4oYSo2NzEwODg2NC4wK2Ip
KigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKTsKLX0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L210
MTk5Mzdhci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L210MTk5Mzdhci5jCShy
ZXZpc2lvbiA3Njc0OSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93aW5jZS9tdDE5
OTM3YXIuYzo3Njc0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L210MTk5Mzdhci5jCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICAgQSBDLXByb2dyYW0gZm9yIE1UMTk5Mzcs
IHdpdGggaW5pdGlhbGl6YXRpb24gaW1wcm92ZWQgMjAwMi8xLzI2LgorICAgQ29kZWQgYnkgVGFr
dWppIE5pc2hpbXVyYSBhbmQgTWFrb3RvIE1hdHN1bW90by4KKworICAgQmVmb3JlIHVzaW5nLCBp
bml0aWFsaXplIHRoZSBzdGF0ZSBieSB1c2luZyBpbml0X2dlbnJhbmQoc2VlZCkKKyAgIG9yIGlu
aXRfYnlfYXJyYXkoaW5pdF9rZXksIGtleV9sZW5ndGgpLgorCisgICBDb3B5cmlnaHQgKEMpIDE5
OTcgLSAyMDAyLCBNYWtvdG8gTWF0c3Vtb3RvIGFuZCBUYWt1amkgTmlzaGltdXJhLAorICAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgIGFyZSBt
ZXQ6CisKKyAgICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAgIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgICAzLiBUaGUgbmFt
ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlCisgICAgICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbgorICAgICAgICBwZXJtaXNzaW9uLgorCisgICBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKKyAgIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GCisgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisgICBB
bnkgZmVlZGJhY2sgaXMgdmVyeSB3ZWxjb21lLgorICAgaHR0cDovL3d3dy5tYXRoLnNjaS5oaXJv
c2hpbWEtdS5hYy5qcC9+bS1tYXQvTVQvZW10Lmh0bWwKKyAgIGVtYWlsOiBtLW1hdCBAIG1hdGgu
c2NpLmhpcm9zaGltYS11LmFjLmpwIChyZW1vdmUgc3BhY2UpCisqLworCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKworLyogUGVyaW9kIHBhcmFtZXRlcnMgKi8KKyNkZWZpbmUgTiA2MjQKKyNkZWZpbmUg
TSAzOTcKKyNkZWZpbmUgTUFUUklYX0EgMHg5OTA4YjBkZlVMICAgLyogY29uc3RhbnQgdmVjdG9y
IGEgKi8KKyNkZWZpbmUgVVBQRVJfTUFTSyAweDgwMDAwMDAwVUwgLyogbW9zdCBzaWduaWZpY2Fu
dCB3LXIgYml0cyAqLworI2RlZmluZSBMT1dFUl9NQVNLIDB4N2ZmZmZmZmZVTCAvKiBsZWFzdCBz
aWduaWZpY2FudCByIGJpdHMgKi8KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgbXRbTl07IC8qIHRo
ZSBhcnJheSBmb3IgdGhlIHN0YXRlIHZlY3RvciAgKi8KK3N0YXRpYyBpbnQgbXRpPU4rMTsgLyog
bXRpPT1OKzEgbWVhbnMgbXRbTl0gaXMgbm90IGluaXRpYWxpemVkICovCisKKy8qIGluaXRpYWxp
emVzIG10W05dIHdpdGggYSBzZWVkICovCit2b2lkIGluaXRfZ2VucmFuZCh1bnNpZ25lZCBsb25n
IHMpCit7CisgICAgbXRbMF09IHMgJiAweGZmZmZmZmZmVUw7CisgICAgZm9yIChtdGk9MTsgbXRp
PE47IG10aSsrKSB7CisgICAgICAgIG10W210aV0gPSAoMTgxMjQzMzI1M1VMICogKG10W210aS0x
XSBeIChtdFttdGktMV0gPj4gMzApKSArIG10aSk7CisgICAgICAgIC8qIFNlZSBLbnV0aCBUQU9D
UCBWb2wyLiAzcmQgRWQuIFAuMTA2IGZvciBtdWx0aXBsaWVyLiAqLworICAgICAgICAvKiBJbiB0
aGUgcHJldmlvdXMgdmVyc2lvbnMsIE1TQnMgb2YgdGhlIHNlZWQgYWZmZWN0ICAgKi8KKyAgICAg
ICAgLyogb25seSBNU0JzIG9mIHRoZSBhcnJheSBtdFtdLiAgICAgICAgICAgICAgICAgICAgICAg
ICovCisgICAgICAgIC8qIDIwMDIvMDEvMDkgbW9kaWZpZWQgYnkgTWFrb3RvIE1hdHN1bW90byAg
ICAgICAgICAgICAqLworICAgICAgICBtdFttdGldICY9IDB4ZmZmZmZmZmZVTDsKKyAgICAgICAg
LyogZm9yID4zMiBiaXQgbWFjaGluZXMgKi8KKyAgICB9Cit9CisKKy8qIGluaXRpYWxpemUgYnkg
YW4gYXJyYXkgd2l0aCBhcnJheS1sZW5ndGggKi8KKy8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBm
b3IgaW5pdGlhbGl6aW5nIGtleXMgKi8KKy8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqLwor
Lyogc2xpZ2h0IGNoYW5nZSBmb3IgQysrLCAyMDA0LzIvMjYgKi8KK3ZvaWQgaW5pdF9ieV9hcnJh
eSh1bnNpZ25lZCBsb25nIGluaXRfa2V5W10saW50IGtleV9sZW5ndGgpCit7CisgICAgaW50IGks
IGosIGs7CisgICAgaW5pdF9nZW5yYW5kKDE5NjUwMjE4VUwpOworICAgIGk9MTsgaj0wOworICAg
IGsgPSAoTj5rZXlfbGVuZ3RoID8gTiA6IGtleV9sZW5ndGgpOworICAgIGZvciAoOyBrOyBrLS0p
IHsKKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkp
ICogMTY2NDUyNVVMKSkKKyAgICAgICAgICArIGluaXRfa2V5W2pdICsgajsgLyogbm9uIGxpbmVh
ciAqLworICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBXT1JEU0laRSA+IDMy
IG1hY2hpbmVzICovCisgICAgICAgIGkrKzsgaisrOworICAgICAgICBpZiAoaT49TikgeyBtdFsw
XSA9IG10W04tMV07IGk9MTsgfQorICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOworICAg
IH0KKyAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAo
KG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVVMKSkKKyAgICAgICAgICAt
IGk7IC8qIG5vbiBsaW5lYXIgKi8KKyAgICAgICAgbXRbaV0gJj0gMHhmZmZmZmZmZlVMOyAvKiBm
b3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqLworICAgICAgICBpKys7CisgICAgICAgIGlmIChp
Pj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9CisgICAgfQorCisgICAgbXRbMF0gPSAweDgw
MDAwMDAwVUw7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBub24temVybyBpbml0aWFsIGFycmF5ICov
Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHhmZmZmZmZmZl0taW50
ZXJ2YWwgKi8KK3Vuc2lnbmVkIGxvbmcgZ2VucmFuZF9pbnQzMih2b2lkKQoreworICAgIHVuc2ln
bmVkIGxvbmcgeTsKKyAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYWcwMVsyXT17MHgwVUwsIE1B
VFJJWF9BfTsKKyAgICAvKiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovCisK
KyAgICBpZiAobXRpID49IE4pIHsgLyogZ2VuZXJhdGUgTiB3b3JkcyBhdCBvbmUgdGltZSAqLwor
ICAgICAgICBpbnQga2s7CisKKyAgICAgICAgaWYgKG10aSA9PSBOKzEpICAgLyogaWYgaW5pdF9n
ZW5yYW5kKCkgaGFzIG5vdCBiZWVuIGNhbGxlZCwgKi8KKyAgICAgICAgICAgIGluaXRfZ2VucmFu
ZCg1NDg5VUwpOyAvKiBhIGRlZmF1bHQgaW5pdGlhbCBzZWVkIGlzIHVzZWQgKi8KKworICAgICAg
ICBmb3IgKGtrPTA7a2s8Ti1NO2trKyspIHsKKyAgICAgICAgICAgIHkgPSAobXRba2tdJlVQUEVS
X01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKTsKKyAgICAgICAgICAgIG10W2trXSA9IG10W2tr
K01dIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxVUxdOworICAgICAgICB9CisgICAgICAgIGZv
ciAoO2trPE4tMTtraysrKSB7CisgICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwo
bXRba2srMV0mTE9XRVJfTUFTSyk7CisgICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0g
XiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgIH0KKyAgICAgICAgeSA9ICht
dFtOLTFdJlVQUEVSX01BU0spfChtdFswXSZMT1dFUl9NQVNLKTsKKyAgICAgICAgbXRbTi0xXSA9
IG10W00tMV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisKKyAgICAgICAgbXRpID0g
MDsKKyAgICB9CisKKyAgICB5ID0gbXRbbXRpKytdOworCisgICAgLyogVGVtcGVyaW5nICovCisg
ICAgeSBePSAoeSA+PiAxMSk7CisgICAgeSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODBVTDsKKyAg
ICB5IF49ICh5IDw8IDE1KSAmIDB4ZWZjNjAwMDBVTDsKKyAgICB5IF49ICh5ID4+IDE4KTsKKwor
ICAgIHJldHVybiB5OworfQorCisvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4
N2ZmZmZmZmZdLWludGVydmFsICovCitsb25nIGdlbnJhbmRfaW50MzEodm9pZCkKK3sKKyAgICBy
ZXR1cm4gKGxvbmcpKGdlbnJhbmRfaW50MzIoKT4+MSk7Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJh
bmRvbSBudW1iZXIgb24gWzAsMV0tcmVhbC1pbnRlcnZhbCAqLworZG91YmxlIGdlbnJhbmRfcmVh
bDEodm9pZCkKK3sKKyAgICByZXR1cm4gZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5NS4w
KTsKKyAgICAvKiBkaXZpZGVkIGJ5IDJeMzItMSAqLworfQorCisvKiBnZW5lcmF0ZXMgYSByYW5k
b20gbnVtYmVyIG9uIFswLDEpLXJlYWwtaW50ZXJ2YWwgKi8KK2RvdWJsZSBnZW5yYW5kX3JlYWwy
KHZvaWQpCit7CisgICAgcmV0dXJuIGdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTYuMCk7
CisgICAgLyogZGl2aWRlZCBieSAyXjMyICovCit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBu
dW1iZXIgb24gKDAsMSktcmVhbC1pbnRlcnZhbCAqLworZG91YmxlIGdlbnJhbmRfcmVhbDModm9p
ZCkKK3sKKyAgICByZXR1cm4gKCgoZG91YmxlKWdlbnJhbmRfaW50MzIoKSkgKyAwLjUpKigxLjAv
NDI5NDk2NzI5Ni4wKTsKKyAgICAvKiBkaXZpZGVkIGJ5IDJeMzIgKi8KK30KKworLyogZ2VuZXJh
dGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxKSB3aXRoIDUzLWJpdCByZXNvbHV0aW9uKi8KK2Rv
dWJsZSBnZW5yYW5kX3JlczUzKHZvaWQpCit7CisgICAgdW5zaWduZWQgbG9uZyBhPWdlbnJhbmRf
aW50MzIoKT4+NSwgYj1nZW5yYW5kX2ludDMyKCk+PjY7CisgICAgcmV0dXJuKGEqNjcxMDg4NjQu
MCtiKSooMS4wLzkwMDcxOTkyNTQ3NDA5OTIuMCk7Cit9Cg==
</data>
<flag name="review"
          id="71838"
          type_id="1"
          status="-"
          setter="paroga"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80365</attachid>
            <date>2011-01-27 14:43:05 -0800</date>
            <delta_ts>2011-01-28 07:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53253_1.patch</filename>
            <type>text/plain</type>
            <size>18305</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAyYmU1MGQ0MjNhOWEyZDExMjE1MmYyODU3NTkwZDFjMDBlZTllYzg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0ByaW0uY29tPgpEYXRlOiBU
aHUsIDI3IEphbiAyMDExIDE0OjM5OjQ3IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMS0wMS0y
NyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBNb3ZlIHdpbmNlL210MTk5Mzdhci5jIHRvIFRoaXJkUGFy
dHkgYW5kIG1ha2UgaXQgYSBwb2xpY3kgY2hvaWNlCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjUzCgogICAgICAgIE1vdmUgaW1wbGVtZW50YXRpb24g
b2YgTWVyc2VubmUgVHdpc3RlciBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0bwogICAg
ICAgIFRoaXJkUGFydHkgc2luY2UgaXQgaXMgYSB0aGlyZCBwYXJ0eSBsaWJyYXJ5LgoKICAgICAg
ICAqIFNvdXJjZS9UaGlyZFBhcnR5L210MTk5Mzdhci5jOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5jLgoKMjAxMS0wMS0yNyAgRGFuaWVsIEJh
dGVzICA8ZGJhdGVzQHJpbS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKICAgICAgICBNb3ZlIHdpbmNlL210MTk5Mzdhci5jIHRvIFRoaXJkUGFydHkgYW5kIG1ha2Ug
aXQgYSBwb2xpY3kgY2hvaWNlCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUzMjUzCgogICAgICAgIE1ha2UgaW5jbHVzaW9uIG9mIE1UMTk5MzcgYSBwb2xp
Y3kgZGVjaXNpb24uCgogICAgICAgIEN1cnJlbnRseSwgd2UgaGFyZGNvZGVkIHRvICB1c2UgTVQx
OTkzNyB3aGVuIGJ1aWxkaW5nIGZvcgogICAgICAgIFdpbmRvd3MgQ0UuIEluc3RlYWQsIHdlIHNo
b3VsZCBtYWtlIHRoaXMgYSBwb2xpY3kgZGVjaXNpb24KICAgICAgICB3aXRoIHRoZSBXaW5kb3dz
IENFIHBvcnQgdXNpbmcgdGhpcyBieSBkZWZhdWx0LgoKICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnByaTogQXBwZW5kIFNvdXJjZS9UaGlyZFBhcnR5IHRvIHRoZSBlbmQKICAgICAgICBvZiB0aGUg
bGlzdCBpbmNsdWRlIGRpcmVjdG9yaWVzLgogICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OiBE
aXR0by4KICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBEZWZpbmVkIFdURl9VU0VfTUVSU0VOTkVf
VFdJU1RFUl8xOTkzNyB3aGVuCiAgICAgICAgYnVpbGRpbmcgZm9yIFdpbmRvd3MgQ0UuCiAgICAg
ICAgKiB3dGYvUmFuZG9tTnVtYmVyLmNwcDoKICAgICAgICAoV1RGOjpyYW5kb21OdW1iZXIpOiBT
dWJzdGl0dXRlZCBVU0UoTUVSU0VOTkVfVFdJU1RFUl8xOTkzNykgZm9yIE9TKFdJTkNFKS4KLS0t
CiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICB8ICAgMjEgKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSAgICB8ICAgIDEgKwogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dCAgICB8ICAgIDEgKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oICAgICAgICB8ICAgIDEgKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwICB8ICAgIDYgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMgfCAgMTcwIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogU291cmNlL1RoaXJkUGFydHkvbXQxOTkzN2FyLmMgICAgICAgICAgICAgICB8
ICAxNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDIwOSBp
bnNlcnRpb25zKCspLCAxNzMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi93aW5jZS9tdDE5OTM3YXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L210MTk5Mzdhci5jCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGY3YTIxMTUuLjdhOGQxMWQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0yNyAgRGFuaWVsIEJhdGVz
ICA8ZGJhdGVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB3aW5jZS9tdDE5OTM3YXIuYyB0byBUaGlyZFBhcnR5IGFuZCBtYWtl
IGl0IGEgcG9saWN5IGNob2ljZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTMyNTMKKworICAgICAgICBNb3ZlIGltcGxlbWVudGF0aW9uIG9mIE1lcnNl
bm5lIFR3aXN0ZXIgcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8KKyAgICAgICAgVGhp
cmRQYXJ0eSBzaW5jZSBpdCBpcyBhIHRoaXJkIHBhcnR5IGxpYnJhcnkuCisKKyAgICAgICAgKiBT
b3VyY2UvVGhpcmRQYXJ0eS9tdDE5OTM3YXIuYzogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi93aW5jZS9tdDE5OTM3YXIuYy4KKwogMjAxMS0wMS0yNiAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdv
bWJvcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlZTA3ZTYuLmIwMWExN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTAxLTI3ICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIHdpbmNlL210MTk5Mzdhci5jIHRvIFRoaXJkUGFydHkgYW5k
IG1ha2UgaXQgYSBwb2xpY3kgY2hvaWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzI1MworCisgICAgICAgIE1ha2UgaW5jbHVzaW9uIG9mIE1UMTk5
MzcgYSBwb2xpY3kgZGVjaXNpb24uCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBoYXJkY29kZWQg
dG8gIHVzZSBNVDE5OTM3IHdoZW4gYnVpbGRpbmcgZm9yCisgICAgICAgIFdpbmRvd3MgQ0UuIElu
c3RlYWQsIHdlIHNob3VsZCBtYWtlIHRoaXMgYSBwb2xpY3kgZGVjaXNpb24KKyAgICAgICAgd2l0
aCB0aGUgV2luZG93cyBDRSBwb3J0IHVzaW5nIHRoaXMgYnkgZGVmYXVsdC4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnByaTogQXBwZW5kIFNvdXJjZS9UaGlyZFBhcnR5IHRvIHRoZSBlbmQK
KyAgICAgICAgb2YgdGhlIGxpc3QgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgKiB3dGYv
Q01ha2VMaXN0cy50eHQ6IERpdHRvLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBEZWZpbmVk
IFdURl9VU0VfTUVSU0VOTkVfVFdJU1RFUl8xOTkzNyB3aGVuCisgICAgICAgIGJ1aWxkaW5nIGZv
ciBXaW5kb3dzIENFLgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuY3BwOgorICAgICAgICAo
V1RGOjpyYW5kb21OdW1iZXIpOiBTdWJzdGl0dXRlZCBVU0UoTUVSU0VOTkVfVFdJU1RFUl8xOTkz
NykgZm9yIE9TKFdJTkNFKS4KKwogMjAxMS0wMS0yNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKaW5kZXggZjU3YTA2Mi4uOGVjZWQxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCkBAIC0yMyw2ICsyMyw3IEBA
IENPTkZJRyhzdGFuZGFsb25lX3BhY2thZ2UpOiBERUZJTkVTICo9IE5ERUJVRwogSkFWQVNDUklQ
VENPUkVfSU5DTFVERVBBVEggPSBcCiAgICAgJCRQV0QgXAogICAgICQkUFdELy4uIFwKKyAgICAk
JFBXRC8uLi9UaGlyZFBhcnR5CiAgICAgJCRQV0QvYXNzZW1ibGVyIFwKICAgICAkJFBXRC9ieXRl
Y29kZSBcCiAgICAgJCRQV0QvYnl0ZWNvbXBpbGVyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IGIxOTMxZDcuLjk0MDZmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTM2LDYgKzEzNiw3IEBAIElOQ0xVREVfSUZf
RVhJU1RTKCR7SkFWQVNDUklQVENPUkVfRElSfS93dGYvQ01ha2VMaXN0cyR7UE9SVH0udHh0KQog
CiBMSVNUKEFQUEVORCBXVEZfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFS
WV9ESVJ9IgorICAgICIke0NNQUtFX1NPVVJDRV9ESVJ9L1RoaXJkUGFydHkiCiApCiAKIFdFQktJ
VF9XUkFQX1NPVVJDRUxJU1QoJHtXVEZfU09VUkNFU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggODkxOWRiYy4uMjA4NTllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaApAQCAtNTY0LDYgKzU2NCw3IEBACiAKICNpZiBPUyhXSU5DRSkKICNpbmNsdWRl
IDxjZV90aW1lLmg+CisjZGVmaW5lIFdURl9VU0VfTUVSU0VOTkVfVFdJU1RFUl8xOTkzNyAxCiAj
ZW5kaWYKIAogI2lmIChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
V0lOKSB8fCAoUExBVEZPUk0oUVQpICYmIE9TKERBUldJTikgJiYgIUVOQUJMRShTSU5HTEVfVEhS
RUFERUQpKSkgJiYgIWRlZmluZWQoRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwCmluZGV4IDBjNDU0MTYuLjE1NzQz
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5jcHAKQEAgLTM0
LDkgKzM0LDkgQEAKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAot
I2lmIE9TKFdJTkNFKQorI2lmIFVTRShNRVJTRU5ORV9UV0lTVEVSXzE5OTM3KQogZXh0ZXJuICJD
IiB7Ci0jaW5jbHVkZSAid2luY2UvbXQxOTkzN2FyLmMiCisjaW5jbHVkZSAibXQxOTkzN2FyLmMi
CiB9CiAjZW5kaWYKIApAQCAtNzgsNyArNzgsNyBAQCBkb3VibGUgcmFuZG9tTnVtYmVyKCkKICAg
ICAvLyBNYXNrIG9mZiB0aGUgbG93IDUzYml0cwogICAgIGZ1bGxSYW5kb20gJj0gKDFMTCA8PCA1
MykgLSAxOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGZ1bGxSYW5kb20pL3N0YXRp
Y19jYXN0PGRvdWJsZT4oMUxMIDw8IDUzKTsKLSNlbGlmIE9TKFdJTkNFKQorI2VsaWYgVVNFKE1F
UlNFTk5FX1RXSVNURVJfMTk5MzcpCiAgICAgcmV0dXJuIGdlbnJhbmRfcmVzNTMoKTsKICNlbGlm
IE9TKFdJTkRPV1MpCiAgICAgdWludDMyX3QgcGFydDEgPSByYW5kKCkgJiAoUkFORF9NQVggLSAx
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2Fy
LmMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5jCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzE1OTU4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAg
KzAsMCBAQAotLyoKLSAgIEEgQy1wcm9ncmFtIGZvciBNVDE5OTM3LCB3aXRoIGluaXRpYWxpemF0
aW9uIGltcHJvdmVkIDIwMDIvMS8yNi4KLSAgIENvZGVkIGJ5IFRha3VqaSBOaXNoaW11cmEgYW5k
IE1ha290byBNYXRzdW1vdG8uCi0KLSAgIEJlZm9yZSB1c2luZywgaW5pdGlhbGl6ZSB0aGUgc3Rh
dGUgYnkgdXNpbmcgaW5pdF9nZW5yYW5kKHNlZWQpCi0gICBvciBpbml0X2J5X2FycmF5KGluaXRf
a2V5LCBrZXlfbGVuZ3RoKS4KLQotICAgQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAwMiwgTWFrb3Rv
IE1hdHN1bW90byBhbmQgVGFrdWppIE5pc2hpbXVyYSwKLSAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0KLSAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAgIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLQotICAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSAgICAgMy4gVGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQotICAgICAgICBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4KLSAgICAgICAgcGVybWlzc2lvbi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICAgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gICBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotICAgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcKLSAgIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotICAgQW55IGZlZWRiYWNrIGlzIHZl
cnkgd2VsY29tZS4KLSAgIGh0dHA6Ly93d3cubWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAvfm0t
bWF0L01UL2VtdC5odG1sCi0gICBlbWFpbDogbS1tYXQgQCBtYXRoLnNjaS5oaXJvc2hpbWEtdS5h
Yy5qcCAocmVtb3ZlIHNwYWNlKQotKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIFBlcmlv
ZCBwYXJhbWV0ZXJzICovCi0jZGVmaW5lIE4gNjI0Ci0jZGVmaW5lIE0gMzk3Ci0jZGVmaW5lIE1B
VFJJWF9BIDB4OTkwOGIwZGZVTCAgIC8qIGNvbnN0YW50IHZlY3RvciBhICovCi0jZGVmaW5lIFVQ
UEVSX01BU0sgMHg4MDAwMDAwMFVMIC8qIG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi8KLSNk
ZWZpbmUgTE9XRVJfTUFTSyAweDdmZmZmZmZmVUwgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRz
ICovCi0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIG10W05dOyAvKiB0aGUgYXJyYXkgZm9yIHRoZSBz
dGF0ZSB2ZWN0b3IgICovCi1zdGF0aWMgaW50IG10aT1OKzE7IC8qIG10aT09TisxIG1lYW5zIG10
W05dIGlzIG5vdCBpbml0aWFsaXplZCAqLwotCi0vKiBpbml0aWFsaXplcyBtdFtOXSB3aXRoIGEg
c2VlZCAqLwotdm9pZCBpbml0X2dlbnJhbmQodW5zaWduZWQgbG9uZyBzKQotewotICAgIG10WzBd
PSBzICYgMHhmZmZmZmZmZlVMOwotICAgIGZvciAobXRpPTE7IG10aTxOOyBtdGkrKykgewotICAg
ICAgICBtdFttdGldID0gKDE4MTI0MzMyNTNVTCAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+
IDMwKSkgKyBtdGkpOwotICAgICAgICAvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQ
LjEwNiBmb3IgbXVsdGlwbGllci4gKi8KLSAgICAgICAgLyogSW4gdGhlIHByZXZpb3VzIHZlcnNp
b25zLCBNU0JzIG9mIHRoZSBzZWVkIGFmZmVjdCAgICovCi0gICAgICAgIC8qIG9ubHkgTVNCcyBv
ZiB0aGUgYXJyYXkgbXRbXS4gICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAvKiAy
MDAyLzAxLzA5IG1vZGlmaWVkIGJ5IE1ha290byBNYXRzdW1vdG8gICAgICAgICAgICAgKi8KLSAg
ICAgICAgbXRbbXRpXSAmPSAweGZmZmZmZmZmVUw7Ci0gICAgICAgIC8qIGZvciA+MzIgYml0IG1h
Y2hpbmVzICovCi0gICAgfQotfQotCi0vKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJy
YXktbGVuZ3RoICovCi0vKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBr
ZXlzICovCi0vKiBrZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi8KLS8qIHNsaWdodCBjaGFuZ2Ug
Zm9yIEMrKywgMjAwNC8yLzI2ICovCi12b2lkIGluaXRfYnlfYXJyYXkodW5zaWduZWQgbG9uZyBp
bml0X2tleVtdLGludCBrZXlfbGVuZ3RoKQotewotICAgIGludCBpLCBqLCBrOwotICAgIGluaXRf
Z2VucmFuZCgxOTY1MDIxOFVMKTsKLSAgICBpPTE7IGo9MDsKLSAgICBrID0gKE4+a2V5X2xlbmd0
aCA/IE4gOiBrZXlfbGVuZ3RoKTsKLSAgICBmb3IgKDsgazsgay0tKSB7Ci0gICAgICAgIG10W2ld
ID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVTCkpCi0g
ICAgICAgICAgKyBpbml0X2tleVtqXSArIGo7IC8qIG5vbiBsaW5lYXIgKi8KLSAgICAgICAgbXRb
aV0gJj0gMHhmZmZmZmZmZlVMOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqLwotICAg
ICAgICBpKys7IGorKzsKLSAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7
IH0KLSAgICAgICAgaWYgKGo+PWtleV9sZW5ndGgpIGo9MDsKLSAgICB9Ci0gICAgZm9yIChrPU4t
MTsgazsgay0tKSB7Ci0gICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2kt
MV0gPj4gMzApKSAqIDE1NjYwODM5NDFVTCkpCi0gICAgICAgICAgLSBpOyAvKiBub24gbGluZWFy
ICovCi0gICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIg
bWFjaGluZXMgKi8KLSAgICAgICAgaSsrOwotICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10
W04tMV07IGk9MTsgfQotICAgIH0KLQotICAgIG10WzBdID0gMHg4MDAwMDAwMFVMOyAvKiBNU0Ig
aXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwotfQotCi0vKiBnZW5lcmF0
ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi11bnNpZ25l
ZCBsb25nIGdlbnJhbmRfaW50MzIodm9pZCkKLXsKLSAgICB1bnNpZ25lZCBsb25nIHk7Ci0gICAg
c3RhdGljIHVuc2lnbmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07Ci0gICAgLyog
bWFnMDFbeF0gPSB4ICogTUFUUklYX0EgIGZvciB4PTAsMSAqLwotCi0gICAgaWYgKG10aSA+PSBO
KSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi8KLSAgICAgICAgaW50IGtrOwot
Ci0gICAgICAgIGlmIChtdGkgPT0gTisxKSAgIC8qIGlmIGluaXRfZ2VucmFuZCgpIGhhcyBub3Qg
YmVlbiBjYWxsZWQsICovCi0gICAgICAgICAgICBpbml0X2dlbnJhbmQoNTQ4OVVMKTsgLyogYSBk
ZWZhdWx0IGluaXRpYWwgc2VlZCBpcyB1c2VkICovCi0KLSAgICAgICAgZm9yIChraz0wO2trPE4t
TTtraysrKSB7Ci0gICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0m
TE9XRVJfTUFTSyk7Ci0gICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4g
bWFnMDFbeSAmIDB4MVVMXTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKDtrazxOLTE7a2srKykg
ewotICAgICAgICAgICAgeSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01B
U0spOwotICAgICAgICAgICAgbXRba2tdID0gbXRba2srKE0tTildIF4gKHkgPj4gMSkgXiBtYWcw
MVt5ICYgMHgxVUxdOwotICAgICAgICB9Ci0gICAgICAgIHkgPSAobXRbTi0xXSZVUFBFUl9NQVNL
KXwobXRbMF0mTE9XRVJfTUFTSyk7Ci0gICAgICAgIG10W04tMV0gPSBtdFtNLTFdIF4gKHkgPj4g
MSkgXiBtYWcwMVt5ICYgMHgxVUxdOwotCi0gICAgICAgIG10aSA9IDA7Ci0gICAgfQotCi0gICAg
eSA9IG10W210aSsrXTsKLQotICAgIC8qIFRlbXBlcmluZyAqLwotICAgIHkgXj0gKHkgPj4gMTEp
OwotICAgIHkgXj0gKHkgPDwgNykgJiAweDlkMmM1NjgwVUw7Ci0gICAgeSBePSAoeSA8PCAxNSkg
JiAweGVmYzYwMDAwVUw7Ci0gICAgeSBePSAoeSA+PiAxOCk7Ci0KLSAgICByZXR1cm4geTsKLX0K
LQotLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweDdmZmZmZmZmXS1pbnRlcnZh
bCAqLwotbG9uZyBnZW5yYW5kX2ludDMxKHZvaWQpCi17Ci0gICAgcmV0dXJuIChsb25nKShnZW5y
YW5kX2ludDMyKCk+PjEpOwotfQotCi0vKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFsw
LDFdLXJlYWwtaW50ZXJ2YWwgKi8KLWRvdWJsZSBnZW5yYW5kX3JlYWwxKHZvaWQpCi17Ci0gICAg
cmV0dXJuIGdlbnJhbmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTUuMCk7Ci0gICAgLyogZGl2aWRl
ZCBieSAyXjMyLTEgKi8KLX0KLQotLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwx
KS1yZWFsLWludGVydmFsICovCi1kb3VibGUgZ2VucmFuZF9yZWFsMih2b2lkKQotewotICAgIHJl
dHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk2LjApOwotICAgIC8qIGRpdmlkZWQg
YnkgMl4zMiAqLwotfQotCi0vKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uICgwLDEpLXJl
YWwtaW50ZXJ2YWwgKi8KLWRvdWJsZSBnZW5yYW5kX3JlYWwzKHZvaWQpCi17Ci0gICAgcmV0dXJu
ICgoKGRvdWJsZSlnZW5yYW5kX2ludDMyKCkpICsgMC41KSooMS4wLzQyOTQ5NjcyOTYuMCk7Ci0g
ICAgLyogZGl2aWRlZCBieSAyXjMyICovCi19Ci0KLS8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1i
ZXIgb24gWzAsMSkgd2l0aCA1My1iaXQgcmVzb2x1dGlvbiovCi1kb3VibGUgZ2VucmFuZF9yZXM1
Myh2b2lkKQotewotICAgIHVuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKCk+PjUsIGI9Z2Vu
cmFuZF9pbnQzMigpPj42OwotICAgIHJldHVybihhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5
MjU0NzQwOTkyLjApOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbXQxOTkzN2Fy
LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9tdDE5OTM3YXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40NzE1OTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbXQxOTkzN2FyLmMKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgICBBIEMtcHJvZ3JhbSBmb3Ig
TVQxOTkzNywgd2l0aCBpbml0aWFsaXphdGlvbiBpbXByb3ZlZCAyMDAyLzEvMjYuCisgICBDb2Rl
ZCBieSBUYWt1amkgTmlzaGltdXJhIGFuZCBNYWtvdG8gTWF0c3Vtb3RvLgorCisgICBCZWZvcmUg
dXNpbmcsIGluaXRpYWxpemUgdGhlIHN0YXRlIGJ5IHVzaW5nIGluaXRfZ2VucmFuZChzZWVkKQor
ICAgb3IgaW5pdF9ieV9hcnJheShpbml0X2tleSwga2V5X2xlbmd0aCkuCisKKyAgIENvcHlyaWdo
dCAoQykgMTk5NyAtIDIwMDIsIE1ha290byBNYXRzdW1vdG8gYW5kIFRha3VqaSBOaXNoaW11cmEs
CisgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICAgYXJlIG1ldDoKKworICAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgICAgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICAgIDMu
IFRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUKKyAgICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuCisgICAgICAgIHBlcm1pc3Npb24uCisKKyAg
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUgorICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyAgIEFueSBmZWVkYmFjayBpcyB2ZXJ5IHdlbGNvbWUuCisgICBodHRwOi8vd3d3Lm1hdGgu
c2NpLmhpcm9zaGltYS11LmFjLmpwL35tLW1hdC9NVC9lbXQuaHRtbAorICAgZW1haWw6IG0tbWF0
IEAgbWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAgKHJlbW92ZSBzcGFjZSkKKyovCisKKyNpbmNs
dWRlIDxzdGRpby5oPgorCisvKiBQZXJpb2QgcGFyYW1ldGVycyAqLworI2RlZmluZSBOIDYyNAor
I2RlZmluZSBNIDM5NworI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFu
dCB2ZWN0b3IgYSAqLworI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNp
Z25pZmljYW50IHctciBiaXRzICovCisjZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8q
IGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBtdFtO
XTsgLyogdGhlIGFycmF5IGZvciB0aGUgc3RhdGUgdmVjdG9yICAqLworc3RhdGljIGludCBtdGk9
TisxOyAvKiBtdGk9PU4rMSBtZWFucyBtdFtOXSBpcyBub3QgaW5pdGlhbGl6ZWQgKi8KKworLyog
aW5pdGlhbGl6ZXMgbXRbTl0gd2l0aCBhIHNlZWQgKi8KK3ZvaWQgaW5pdF9nZW5yYW5kKHVuc2ln
bmVkIGxvbmcgcykKK3sKKyAgICBtdFswXT0gcyAmIDB4ZmZmZmZmZmZVTDsKKyAgICBmb3IgKG10
aT0xOyBtdGk8TjsgbXRpKyspIHsKKyAgICAgICAgbXRbbXRpXSA9ICgxODEyNDMzMjUzVUwgKiAo
bXRbbXRpLTFdIF4gKG10W210aS0xXSA+PiAzMCkpICsgbXRpKTsKKyAgICAgICAgLyogU2VlIEtu
dXRoIFRBT0NQIFZvbDIuIDNyZCBFZC4gUC4xMDYgZm9yIG11bHRpcGxpZXIuICovCisgICAgICAg
IC8qIEluIHRoZSBwcmV2aW91cyB2ZXJzaW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QgICAq
LworICAgICAgICAvKiBvbmx5IE1TQnMgb2YgdGhlIGFycmF5IG10W10uICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICAgICAgLyogMjAwMi8wMS8wOSBtb2RpZmllZCBieSBNYWtvdG8gTWF0
c3Vtb3RvICAgICAgICAgICAgICovCisgICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOwor
ICAgICAgICAvKiBmb3IgPjMyIGJpdCBtYWNoaW5lcyAqLworICAgIH0KK30KKworLyogaW5pdGlh
bGl6ZSBieSBhbiBhcnJheSB3aXRoIGFycmF5LWxlbmd0aCAqLworLyogaW5pdF9rZXkgaXMgdGhl
IGFycmF5IGZvciBpbml0aWFsaXppbmcga2V5cyAqLworLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVu
Z3RoICovCisvKiBzbGlnaHQgY2hhbmdlIGZvciBDKyssIDIwMDQvMi8yNiAqLwordm9pZCBpbml0
X2J5X2FycmF5KHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSxpbnQga2V5X2xlbmd0aCkKK3sKKyAg
ICBpbnQgaSwgaiwgazsKKyAgICBpbml0X2dlbnJhbmQoMTk2NTAyMThVTCk7CisgICAgaT0xOyBq
PTA7CisgICAgayA9IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7CisgICAgZm9yICg7
IGs7IGstLSkgeworICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFd
ID4+IDMwKSkgKiAxNjY0NTI1VUwpKQorICAgICAgICAgICsgaW5pdF9rZXlbal0gKyBqOyAvKiBu
b24gbGluZWFyICovCisgICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRT
SVpFID4gMzIgbWFjaGluZXMgKi8KKyAgICAgICAgaSsrOyBqKys7CisgICAgICAgIGlmIChpPj1O
KSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9CisgICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBq
PTA7CisgICAgfQorICAgIGZvciAoaz1OLTE7IGs7IGstLSkgeworICAgICAgICBtdFtpXSA9ICht
dFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVUwpKQorICAg
ICAgICAgIC0gaTsgLyogbm9uIGxpbmVhciAqLworICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZm
VUw7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovCisgICAgICAgIGkrKzsKKyAgICAg
ICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KKyAgICB9CisKKyAgICBtdFsw
XSA9IDB4ODAwMDAwMDBVTDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwg
YXJyYXkgKi8KK30KKworLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZm
ZmZmXS1pbnRlcnZhbCAqLwordW5zaWduZWQgbG9uZyBnZW5yYW5kX2ludDMyKHZvaWQpCit7Cisg
ICAgdW5zaWduZWQgbG9uZyB5OworICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hZzAxWzJdPXsw
eDBVTCwgTUFUUklYX0F9OworICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0w
LDEgKi8KKworICAgIGlmIChtdGkgPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0
aW1lICovCisgICAgICAgIGludCBrazsKKworICAgICAgICBpZiAobXRpID09IE4rMSkgICAvKiBp
ZiBpbml0X2dlbnJhbmQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAqLworICAgICAgICAgICAgaW5p
dF9nZW5yYW5kKDU0ODlVTCk7IC8qIGEgZGVmYXVsdCBpbml0aWFsIHNlZWQgaXMgdXNlZCAqLwor
CisgICAgICAgIGZvciAoa2s9MDtrazxOLU07a2srKykgeworICAgICAgICAgICAgeSA9IChtdFtr
a10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spOworICAgICAgICAgICAgbXRba2td
ID0gbXRba2srTV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgIH0KKyAg
ICAgICAgZm9yICg7a2s8Ti0xO2trKyspIHsKKyAgICAgICAgICAgIHkgPSAobXRba2tdJlVQUEVS
X01BU0spfChtdFtraysxXSZMT1dFUl9NQVNLKTsKKyAgICAgICAgICAgIG10W2trXSA9IG10W2tr
KyhNLU4pXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgfQorICAgICAg
ICB5ID0gKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spOworICAgICAgICBt
dFtOLTFdID0gbXRbTS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKworICAgICAg
ICBtdGkgPSAwOworICAgIH0KKworICAgIHkgPSBtdFttdGkrK107CisKKyAgICAvKiBUZW1wZXJp
bmcgKi8KKyAgICB5IF49ICh5ID4+IDExKTsKKyAgICB5IF49ICh5IDw8IDcpICYgMHg5ZDJjNTY4
MFVMOworICAgIHkgXj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMFVMOworICAgIHkgXj0gKHkgPj4g
MTgpOworCisgICAgcmV0dXJuIHk7Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIg
b24gWzAsMHg3ZmZmZmZmZl0taW50ZXJ2YWwgKi8KK2xvbmcgZ2VucmFuZF9pbnQzMSh2b2lkKQor
eworICAgIHJldHVybiAobG9uZykoZ2VucmFuZF9pbnQzMigpPj4xKTsKK30KKworLyogZ2VuZXJh
dGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxXS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2Vu
cmFuZF9yZWFsMSh2b2lkKQoreworICAgIHJldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0
OTY3Mjk1LjApOworICAgIC8qIGRpdmlkZWQgYnkgMl4zMi0xICovCit9CisKKy8qIGdlbmVyYXRl
cyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSktcmVhbC1pbnRlcnZhbCAqLworZG91YmxlIGdlbnJh
bmRfcmVhbDIodm9pZCkKK3sKKyAgICByZXR1cm4gZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2
NzI5Ni4wKTsKKyAgICAvKiBkaXZpZGVkIGJ5IDJeMzIgKi8KK30KKworLyogZ2VuZXJhdGVzIGEg
cmFuZG9tIG51bWJlciBvbiAoMCwxKS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2VucmFuZF9y
ZWFsMyh2b2lkKQoreworICAgIHJldHVybiAoKChkb3VibGUpZ2VucmFuZF9pbnQzMigpKSArIDAu
NSkqKDEuMC80Mjk0OTY3Mjk2LjApOworICAgIC8qIGRpdmlkZWQgYnkgMl4zMiAqLworfQorCisv
KiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDEpIHdpdGggNTMtYml0IHJlc29sdXRp
b24qLworZG91YmxlIGdlbnJhbmRfcmVzNTModm9pZCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGE9
Z2VucmFuZF9pbnQzMigpPj41LCBiPWdlbnJhbmRfaW50MzIoKT4+NjsKKyAgICByZXR1cm4oYSo2
NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKTsKK30KLS0gCjEuNy4zLjEubXN5
c2dpdC4wCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80448</attachid>
            <date>2011-01-28 07:09:27 -0800</date>
            <delta_ts>2011-01-29 14:17:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug53253_2.patch</filename>
            <type>text/plain</type>
            <size>18350</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA5MzBkZjEzYTU0MGNhODQ3OTM1MTJlOGRiM2MyODYyYTQ2YzNmMWRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0ByaW0uY29tPgpEYXRlOiBU
aHUsIDI3IEphbiAyMDExIDE0OjM5OjQ3IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMS0wMS0y
OCBEYW5pZWwgQmF0ZXMgPGRiYXRlc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KCiAgICAgICAgTW92ZSB3aW5jZS9tdDE5OTM3YXIuYyB0byBUaGlyZFBhcnR5
IGFuZCBtYWtlIGl0IGEgcG9saWN5IGNob2ljZQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MzI1MwoKICAgICAgICBNb3ZlIGltcGxlbWVudGF0aW9uIG9m
IE1lcnNlbm5lIFR3aXN0ZXIgcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8KICAgICAg
ICBUaGlyZFBhcnR5IHNpbmNlIGl0IGlzIGEgdGhpcmQgcGFydHkgbGlicmFyeS4KCiAgICAgICAg
KiBTb3VyY2UvVGhpcmRQYXJ0eS9tdDE5OTM3YXIuYzogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi93aW5jZS9tdDE5OTM3YXIuYy4KCjIwMTEtMDEtMjggIERhbmllbCBCYXRl
cyAgPGRiYXRlc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiAgICAgICAgTW92ZSB3aW5jZS9tdDE5OTM3YXIuYyB0byBUaGlyZFBhcnR5IGFuZCBtYWtlIGl0
IGEgcG9saWN5IGNob2ljZQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MzI1MwoKICAgICAgICBNYWtlIGluY2x1c2lvbiBvZiBNVDE5OTM3IGEgcG9saWN5
IGRlY2lzaW9uLgoKICAgICAgICBDdXJyZW50bHksIHdlIGhhcmRjb2RlZCB0byAgdXNlIE1UMTk5
Mzcgd2hlbiBidWlsZGluZyBmb3IKICAgICAgICBXaW5kb3dzIENFLiBJbnN0ZWFkLCB3ZSBzaG91
bGQgbWFrZSB0aGlzIGEgcG9saWN5IGRlY2lzaW9uCiAgICAgICAgd2l0aCB0aGUgV2luZG93cyBD
RSBwb3J0IHVzaW5nIHRoaXMgYnkgZGVmYXVsdC4KCiAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5w
cmk6IEFwcGVuZCBTb3VyY2UvVGhpcmRQYXJ0eSB0byB0aGUgZW5kCiAgICAgICAgb2YgdGhlIGxp
c3QgaW5jbHVkZSBkaXJlY3Rvcmllcy4KICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDogRGl0
dG8uCiAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogRGVmaW5lZCBXVEZfVVNFX01FUlNFTk5FX1RX
SVNURVJfMTk5Mzcgd2hlbgogICAgICAgIGJ1aWxkaW5nIGZvciBXaW5kb3dzIENFLgogICAgICAg
ICogd3RmL1JhbmRvbU51bWJlci5jcHA6CiAgICAgICAgKFdURjo6cmFuZG9tTnVtYmVyKTogU3Vi
c3RpdHV0ZWQgVVNFKE1FUlNFTk5FX1RXSVNURVJfMTk5MzcpIGZvciBPUyhXSU5DRSkuCi0tLQog
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgfCAgIDIxICsrKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkgICAgfCAgICAxICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQgICAgfCAgICAxICsKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCAgICAgICAgfCAgICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcCAgfCAgICA2ICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5jIHwgIDE3MCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIFNvdXJjZS9UaGlyZFBhcnR5L210MTk5Mzdhci5jICAgICAgICAgICAgICAgfCAg
MTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5z
ZXJ0aW9ucygrKSwgMTczIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9tdDE5OTM3YXIuYwoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCA5ZmIzMDVjLi41OWM4MzJjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMjggIERhbmllbCBCYXRlcyAg
PGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgd2luY2UvbXQxOTkzN2FyLmMgdG8gVGhpcmRQYXJ0eSBhbmQgbWFrZSBp
dCBhIHBvbGljeSBjaG9pY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUzMjUzCisKKyAgICAgICAgTW92ZSBpbXBsZW1lbnRhdGlvbiBvZiBNZXJzZW5u
ZSBUd2lzdGVyIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHRvCisgICAgICAgIFRoaXJk
UGFydHkgc2luY2UgaXQgaXMgYSB0aGlyZCBwYXJ0eSBsaWJyYXJ5LgorCisgICAgICAgICogU291
cmNlL1RoaXJkUGFydHkvbXQxOTkzN2FyLmM6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMuCisKIDIwMTAtMDEtMjggIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBUZXN0IGNv
bW1pdCBmb3IgY29tbWl0LXF1ZXVlQHdlYmtpdC5vcmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCBhN2FiMmQzLi5mZjg3NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAxMS0wMS0yOCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB3aW5jZS9t
dDE5OTM3YXIuYyB0byBUaGlyZFBhcnR5IGFuZCBtYWtlIGl0IGEgcG9saWN5IGNob2ljZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMyNTMKKworICAg
ICAgICBNYWtlIGluY2x1c2lvbiBvZiBNVDE5OTM3IGEgcG9saWN5IGRlY2lzaW9uLgorCisgICAg
ICAgIEN1cnJlbnRseSwgd2UgaGFyZGNvZGVkIHRvICB1c2UgTVQxOTkzNyB3aGVuIGJ1aWxkaW5n
IGZvcgorICAgICAgICBXaW5kb3dzIENFLiBJbnN0ZWFkLCB3ZSBzaG91bGQgbWFrZSB0aGlzIGEg
cG9saWN5IGRlY2lzaW9uCisgICAgICAgIHdpdGggdGhlIFdpbmRvd3MgQ0UgcG9ydCB1c2luZyB0
aGlzIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6IEFwcGVuZCBT
b3VyY2UvVGhpcmRQYXJ0eSB0byB0aGUgZW5kCisgICAgICAgIG9mIHRoZSBsaXN0IGluY2x1ZGUg
ZGlyZWN0b3JpZXMuCisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OiBEaXR0by4KKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDogRGVmaW5lZCBXVEZfVVNFX01FUlNFTk5FX1RXSVNURVJfMTk5
Mzcgd2hlbgorICAgICAgICBidWlsZGluZyBmb3IgV2luZG93cyBDRS4KKyAgICAgICAgKiB3dGYv
UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAgKFdURjo6cmFuZG9tTnVtYmVyKTogU3Vic3RpdHV0
ZWQgVVNFKE1FUlNFTk5FX1RXSVNURVJfMTk5MzcpIGZvciBPUyhXSU5DRSkuCisKIDIwMTEtMDEt
MjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3Njg5My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJpCmluZGV4IGY1N2EwNjIuLjMzNDJiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQpAQCAtMjMsNiArMjMsNyBAQCBDT05GSUcoc3RhbmRh
bG9uZV9wYWNrYWdlKTogREVGSU5FUyAqPSBOREVCVUcKIEpBVkFTQ1JJUFRDT1JFX0lOQ0xVREVQ
QVRIID0gXAogICAgICQkUFdEIFwKICAgICAkJFBXRC8uLiBcCisgICAgJCRQV0QvLi4vVGhpcmRQ
YXJ0eSBcCiAgICAgJCRQV0QvYXNzZW1ibGVyIFwKICAgICAkJFBXRC9ieXRlY29kZSBcCiAgICAg
JCRQV0QvYnl0ZWNvbXBpbGVyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGIxOTMxZDcuLjk0MDZmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtMTM2LDYgKzEzNiw3IEBAIElOQ0xVREVfSUZfRVhJU1RTKCR7SkFW
QVNDUklQVENPUkVfRElSfS93dGYvQ01ha2VMaXN0cyR7UE9SVH0udHh0KQogCiBMSVNUKEFQUEVO
RCBXVEZfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgorICAg
ICIke0NNQUtFX1NPVVJDRV9ESVJ9L1RoaXJkUGFydHkiCiApCiAKIFdFQktJVF9XUkFQX1NPVVJD
RUxJU1QoJHtXVEZfU09VUkNFU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggNTg5ZmU0OS4uNTE5N2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApA
QCAtNTY0LDYgKzU2NCw3IEBACiAKICNpZiBPUyhXSU5DRSkKICNpbmNsdWRlIDxjZV90aW1lLmg+
CisjZGVmaW5lIFdURl9VU0VfTUVSU0VOTkVfVFdJU1RFUl8xOTkzNyAxCiAjZW5kaWYKIAogI2lm
IChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCAoUExB
VEZPUk0oUVQpICYmIE9TKERBUldJTikgJiYgIUVOQUJMRShTSU5HTEVfVEhSRUFERUQpKSkgJiYg
IWRlZmluZWQoRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwCmluZGV4IDBjNDU0MTYuLjE1NzQzMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5jcHAKQEAgLTM0LDkgKzM0LDkgQEAK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAotI2lmIE9TKFdJTkNF
KQorI2lmIFVTRShNRVJTRU5ORV9UV0lTVEVSXzE5OTM3KQogZXh0ZXJuICJDIiB7Ci0jaW5jbHVk
ZSAid2luY2UvbXQxOTkzN2FyLmMiCisjaW5jbHVkZSAibXQxOTkzN2FyLmMiCiB9CiAjZW5kaWYK
IApAQCAtNzgsNyArNzgsNyBAQCBkb3VibGUgcmFuZG9tTnVtYmVyKCkKICAgICAvLyBNYXNrIG9m
ZiB0aGUgbG93IDUzYml0cwogICAgIGZ1bGxSYW5kb20gJj0gKDFMTCA8PCA1MykgLSAxOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGZ1bGxSYW5kb20pL3N0YXRpY19jYXN0PGRvdWJs
ZT4oMUxMIDw8IDUzKTsKLSNlbGlmIE9TKFdJTkNFKQorI2VsaWYgVVNFKE1FUlNFTk5FX1RXSVNU
RVJfMTk5MzcpCiAgICAgcmV0dXJuIGdlbnJhbmRfcmVzNTMoKTsKICNlbGlmIE9TKFdJTkRPV1Mp
CiAgICAgdWludDMyX3QgcGFydDEgPSByYW5kKCkgJiAoUkFORF9NQVggLSAxKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0NzE1OTU4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvd2luY2UvbXQxOTkzN2FyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoK
LSAgIEEgQy1wcm9ncmFtIGZvciBNVDE5OTM3LCB3aXRoIGluaXRpYWxpemF0aW9uIGltcHJvdmVk
IDIwMDIvMS8yNi4KLSAgIENvZGVkIGJ5IFRha3VqaSBOaXNoaW11cmEgYW5kIE1ha290byBNYXRz
dW1vdG8uCi0KLSAgIEJlZm9yZSB1c2luZywgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgYnkgdXNpbmcg
aW5pdF9nZW5yYW5kKHNlZWQpCi0gICBvciBpbml0X2J5X2FycmF5KGluaXRfa2V5LCBrZXlfbGVu
Z3RoKS4KLQotICAgQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAwMiwgTWFrb3RvIE1hdHN1bW90byBh
bmQgVGFrdWppIE5pc2hpbXVyYSwKLSAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gICBhcmUgbWV0OgotCi0gICAgIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLQotICAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0KLSAgICAgMy4gVGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IG5v
dCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQotICAgICAgICBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4KLSAgICAg
ICAgcGVybWlzc2lvbi4KLQotICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAgIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gICBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAgIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAgIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICAgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotICAgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLSAg
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotICAgQW55IGZlZWRiYWNrIGlzIHZlcnkgd2VsY29tZS4K
LSAgIGh0dHA6Ly93d3cubWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAvfm0tbWF0L01UL2VtdC5o
dG1sCi0gICBlbWFpbDogbS1tYXQgQCBtYXRoLnNjaS5oaXJvc2hpbWEtdS5hYy5qcCAocmVtb3Zl
IHNwYWNlKQotKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIFBlcmlvZCBwYXJhbWV0ZXJz
ICovCi0jZGVmaW5lIE4gNjI0Ci0jZGVmaW5lIE0gMzk3Ci0jZGVmaW5lIE1BVFJJWF9BIDB4OTkw
OGIwZGZVTCAgIC8qIGNvbnN0YW50IHZlY3RvciBhICovCi0jZGVmaW5lIFVQUEVSX01BU0sgMHg4
MDAwMDAwMFVMIC8qIG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi8KLSNkZWZpbmUgTE9XRVJf
TUFTSyAweDdmZmZmZmZmVUwgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovCi0KLXN0YXRp
YyB1bnNpZ25lZCBsb25nIG10W05dOyAvKiB0aGUgYXJyYXkgZm9yIHRoZSBzdGF0ZSB2ZWN0b3Ig
ICovCi1zdGF0aWMgaW50IG10aT1OKzE7IC8qIG10aT09TisxIG1lYW5zIG10W05dIGlzIG5vdCBp
bml0aWFsaXplZCAqLwotCi0vKiBpbml0aWFsaXplcyBtdFtOXSB3aXRoIGEgc2VlZCAqLwotdm9p
ZCBpbml0X2dlbnJhbmQodW5zaWduZWQgbG9uZyBzKQotewotICAgIG10WzBdPSBzICYgMHhmZmZm
ZmZmZlVMOwotICAgIGZvciAobXRpPTE7IG10aTxOOyBtdGkrKykgewotICAgICAgICBtdFttdGld
ID0gKDE4MTI0MzMyNTNVTCAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+IDMwKSkgKyBtdGkp
OwotICAgICAgICAvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQLjEwNiBmb3IgbXVs
dGlwbGllci4gKi8KLSAgICAgICAgLyogSW4gdGhlIHByZXZpb3VzIHZlcnNpb25zLCBNU0JzIG9m
IHRoZSBzZWVkIGFmZmVjdCAgICovCi0gICAgICAgIC8qIG9ubHkgTVNCcyBvZiB0aGUgYXJyYXkg
bXRbXS4gICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAvKiAyMDAyLzAxLzA5IG1v
ZGlmaWVkIGJ5IE1ha290byBNYXRzdW1vdG8gICAgICAgICAgICAgKi8KLSAgICAgICAgbXRbbXRp
XSAmPSAweGZmZmZmZmZmVUw7Ci0gICAgICAgIC8qIGZvciA+MzIgYml0IG1hY2hpbmVzICovCi0g
ICAgfQotfQotCi0vKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJyYXktbGVuZ3RoICov
Ci0vKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovCi0vKiBr
ZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi8KLS8qIHNsaWdodCBjaGFuZ2UgZm9yIEMrKywgMjAw
NC8yLzI2ICovCi12b2lkIGluaXRfYnlfYXJyYXkodW5zaWduZWQgbG9uZyBpbml0X2tleVtdLGlu
dCBrZXlfbGVuZ3RoKQotewotICAgIGludCBpLCBqLCBrOwotICAgIGluaXRfZ2VucmFuZCgxOTY1
MDIxOFVMKTsKLSAgICBpPTE7IGo9MDsKLSAgICBrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlf
bGVuZ3RoKTsKLSAgICBmb3IgKDsgazsgay0tKSB7Ci0gICAgICAgIG10W2ldID0gKG10W2ldIF4g
KChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVTCkpCi0gICAgICAgICAgKyBp
bml0X2tleVtqXSArIGo7IC8qIG5vbiBsaW5lYXIgKi8KLSAgICAgICAgbXRbaV0gJj0gMHhmZmZm
ZmZmZlVMOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqLwotICAgICAgICBpKys7IGor
KzsKLSAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KLSAgICAgICAg
aWYgKGo+PWtleV9sZW5ndGgpIGo9MDsKLSAgICB9Ci0gICAgZm9yIChrPU4tMTsgazsgay0tKSB7
Ci0gICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAq
IDE1NjYwODM5NDFVTCkpCi0gICAgICAgICAgLSBpOyAvKiBub24gbGluZWFyICovCi0gICAgICAg
IG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi8K
LSAgICAgICAgaSsrOwotICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsg
fQotICAgIH0KLQotICAgIG10WzBdID0gMHg4MDAwMDAwMFVMOyAvKiBNU0IgaXMgMTsgYXNzdXJp
bmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwotfQotCi0vKiBnZW5lcmF0ZXMgYSByYW5kb20g
bnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi11bnNpZ25lZCBsb25nIGdlbnJh
bmRfaW50MzIodm9pZCkKLXsKLSAgICB1bnNpZ25lZCBsb25nIHk7Ci0gICAgc3RhdGljIHVuc2ln
bmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07Ci0gICAgLyogbWFnMDFbeF0gPSB4
ICogTUFUUklYX0EgIGZvciB4PTAsMSAqLwotCi0gICAgaWYgKG10aSA+PSBOKSB7IC8qIGdlbmVy
YXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi8KLSAgICAgICAgaW50IGtrOwotCi0gICAgICAgIGlm
IChtdGkgPT0gTisxKSAgIC8qIGlmIGluaXRfZ2VucmFuZCgpIGhhcyBub3QgYmVlbiBjYWxsZWQs
ICovCi0gICAgICAgICAgICBpbml0X2dlbnJhbmQoNTQ4OVVMKTsgLyogYSBkZWZhdWx0IGluaXRp
YWwgc2VlZCBpcyB1c2VkICovCi0KLSAgICAgICAgZm9yIChraz0wO2trPE4tTTtraysrKSB7Ci0g
ICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7
Ci0gICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4
MVVMXTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKDtrazxOLTE7a2srKykgewotICAgICAgICAg
ICAgeSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spOwotICAgICAg
ICAgICAgbXRba2tdID0gbXRba2srKE0tTildIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxVUxd
OwotICAgICAgICB9Ci0gICAgICAgIHkgPSAobXRbTi0xXSZVUFBFUl9NQVNLKXwobXRbMF0mTE9X
RVJfTUFTSyk7Ci0gICAgICAgIG10W04tMV0gPSBtdFtNLTFdIF4gKHkgPj4gMSkgXiBtYWcwMVt5
ICYgMHgxVUxdOwotCi0gICAgICAgIG10aSA9IDA7Ci0gICAgfQotCi0gICAgeSA9IG10W210aSsr
XTsKLQotICAgIC8qIFRlbXBlcmluZyAqLwotICAgIHkgXj0gKHkgPj4gMTEpOwotICAgIHkgXj0g
KHkgPDwgNykgJiAweDlkMmM1NjgwVUw7Ci0gICAgeSBePSAoeSA8PCAxNSkgJiAweGVmYzYwMDAw
VUw7Ci0gICAgeSBePSAoeSA+PiAxOCk7Ci0KLSAgICByZXR1cm4geTsKLX0KLQotLyogZ2VuZXJh
dGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweDdmZmZmZmZmXS1pbnRlcnZhbCAqLwotbG9uZyBn
ZW5yYW5kX2ludDMxKHZvaWQpCi17Ci0gICAgcmV0dXJuIChsb25nKShnZW5yYW5kX2ludDMyKCk+
PjEpOwotfQotCi0vKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDFdLXJlYWwtaW50
ZXJ2YWwgKi8KLWRvdWJsZSBnZW5yYW5kX3JlYWwxKHZvaWQpCi17Ci0gICAgcmV0dXJuIGdlbnJh
bmRfaW50MzIoKSooMS4wLzQyOTQ5NjcyOTUuMCk7Ci0gICAgLyogZGl2aWRlZCBieSAyXjMyLTEg
Ki8KLX0KLQotLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwxKS1yZWFsLWludGVy
dmFsICovCi1kb3VibGUgZ2VucmFuZF9yZWFsMih2b2lkKQotewotICAgIHJldHVybiBnZW5yYW5k
X2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk2LjApOwotICAgIC8qIGRpdmlkZWQgYnkgMl4zMiAqLwot
fQotCi0vKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uICgwLDEpLXJlYWwtaW50ZXJ2YWwg
Ki8KLWRvdWJsZSBnZW5yYW5kX3JlYWwzKHZvaWQpCi17Ci0gICAgcmV0dXJuICgoKGRvdWJsZSln
ZW5yYW5kX2ludDMyKCkpICsgMC41KSooMS4wLzQyOTQ5NjcyOTYuMCk7Ci0gICAgLyogZGl2aWRl
ZCBieSAyXjMyICovCi19Ci0KLS8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSkg
d2l0aCA1My1iaXQgcmVzb2x1dGlvbiovCi1kb3VibGUgZ2VucmFuZF9yZXM1Myh2b2lkKQotewot
ICAgIHVuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKCk+PjUsIGI9Z2VucmFuZF9pbnQzMigp
Pj42OwotICAgIHJldHVybihhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQwOTkyLjAp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbXQxOTkzN2FyLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9tdDE5OTM3YXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40NzE1OTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbXQxOTkzN2Fy
LmMKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgICBBIEMtcHJvZ3JhbSBmb3IgTVQxOTkzNywgd2l0
aCBpbml0aWFsaXphdGlvbiBpbXByb3ZlZCAyMDAyLzEvMjYuCisgICBDb2RlZCBieSBUYWt1amkg
TmlzaGltdXJhIGFuZCBNYWtvdG8gTWF0c3Vtb3RvLgorCisgICBCZWZvcmUgdXNpbmcsIGluaXRp
YWxpemUgdGhlIHN0YXRlIGJ5IHVzaW5nIGluaXRfZ2VucmFuZChzZWVkKQorICAgb3IgaW5pdF9i
eV9hcnJheShpbml0X2tleSwga2V5X2xlbmd0aCkuCisKKyAgIENvcHlyaWdodCAoQykgMTk5NyAt
IDIwMDIsIE1ha290byBNYXRzdW1vdG8gYW5kIFRha3VqaSBOaXNoaW11cmEsCisgICBBbGwgcmln
aHRzIHJlc2VydmVkLgorCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJlIG1ldDoK
KworICAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAgICAgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgICAgIDMuIFRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUK
KyAgICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuCisgICAgICAgIHBlcm1pc3Npb24uCisKKyAgIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAgIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyAgIEFueSBm
ZWVkYmFjayBpcyB2ZXJ5IHdlbGNvbWUuCisgICBodHRwOi8vd3d3Lm1hdGguc2NpLmhpcm9zaGlt
YS11LmFjLmpwL35tLW1hdC9NVC9lbXQuaHRtbAorICAgZW1haWw6IG0tbWF0IEAgbWF0aC5zY2ku
aGlyb3NoaW1hLXUuYWMuanAgKHJlbW92ZSBzcGFjZSkKKyovCisKKyNpbmNsdWRlIDxzdGRpby5o
PgorCisvKiBQZXJpb2QgcGFyYW1ldGVycyAqLworI2RlZmluZSBOIDYyNAorI2RlZmluZSBNIDM5
NworI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAq
LworI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNpZ25pZmljYW50IHct
ciBiaXRzICovCisjZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8qIGxlYXN0IHNpZ25p
ZmljYW50IHIgYml0cyAqLworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBtdFtOXTsgLyogdGhlIGFy
cmF5IGZvciB0aGUgc3RhdGUgdmVjdG9yICAqLworc3RhdGljIGludCBtdGk9TisxOyAvKiBtdGk9
PU4rMSBtZWFucyBtdFtOXSBpcyBub3QgaW5pdGlhbGl6ZWQgKi8KKworLyogaW5pdGlhbGl6ZXMg
bXRbTl0gd2l0aCBhIHNlZWQgKi8KK3ZvaWQgaW5pdF9nZW5yYW5kKHVuc2lnbmVkIGxvbmcgcykK
K3sKKyAgICBtdFswXT0gcyAmIDB4ZmZmZmZmZmZVTDsKKyAgICBmb3IgKG10aT0xOyBtdGk8Tjsg
bXRpKyspIHsKKyAgICAgICAgbXRbbXRpXSA9ICgxODEyNDMzMjUzVUwgKiAobXRbbXRpLTFdIF4g
KG10W210aS0xXSA+PiAzMCkpICsgbXRpKTsKKyAgICAgICAgLyogU2VlIEtudXRoIFRBT0NQIFZv
bDIuIDNyZCBFZC4gUC4xMDYgZm9yIG11bHRpcGxpZXIuICovCisgICAgICAgIC8qIEluIHRoZSBw
cmV2aW91cyB2ZXJzaW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QgICAqLworICAgICAgICAv
KiBvbmx5IE1TQnMgb2YgdGhlIGFycmF5IG10W10uICAgICAgICAgICAgICAgICAgICAgICAgKi8K
KyAgICAgICAgLyogMjAwMi8wMS8wOSBtb2RpZmllZCBieSBNYWtvdG8gTWF0c3Vtb3RvICAgICAg
ICAgICAgICovCisgICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOworICAgICAgICAvKiBm
b3IgPjMyIGJpdCBtYWNoaW5lcyAqLworICAgIH0KK30KKworLyogaW5pdGlhbGl6ZSBieSBhbiBh
cnJheSB3aXRoIGFycmF5LWxlbmd0aCAqLworLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBp
bml0aWFsaXppbmcga2V5cyAqLworLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCisvKiBz
bGlnaHQgY2hhbmdlIGZvciBDKyssIDIwMDQvMi8yNiAqLwordm9pZCBpbml0X2J5X2FycmF5KHVu
c2lnbmVkIGxvbmcgaW5pdF9rZXlbXSxpbnQga2V5X2xlbmd0aCkKK3sKKyAgICBpbnQgaSwgaiwg
azsKKyAgICBpbml0X2dlbnJhbmQoMTk2NTAyMThVTCk7CisgICAgaT0xOyBqPTA7CisgICAgayA9
IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7CisgICAgZm9yICg7IGs7IGstLSkgewor
ICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAx
NjY0NTI1VUwpKQorICAgICAgICAgICsgaW5pdF9rZXlbal0gKyBqOyAvKiBub24gbGluZWFyICov
CisgICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFj
aGluZXMgKi8KKyAgICAgICAgaSsrOyBqKys7CisgICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0g
bXRbTi0xXTsgaT0xOyB9CisgICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7CisgICAgfQor
ICAgIGZvciAoaz1OLTE7IGs7IGstLSkgeworICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRb
aS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVUwpKQorICAgICAgICAgIC0gaTsg
Lyogbm9uIGxpbmVhciAqLworICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBX
T1JEU0laRSA+IDMyIG1hY2hpbmVzICovCisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGk+PU4p
IHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KKyAgICB9CisKKyAgICBtdFswXSA9IDB4ODAwMDAw
MDBVTDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8KK30K
KworLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZh
bCAqLwordW5zaWduZWQgbG9uZyBnZW5yYW5kX2ludDMyKHZvaWQpCit7CisgICAgdW5zaWduZWQg
bG9uZyB5OworICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hZzAxWzJdPXsweDBVTCwgTUFUUklY
X0F9OworICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi8KKworICAg
IGlmIChtdGkgPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCisgICAg
ICAgIGludCBrazsKKworICAgICAgICBpZiAobXRpID09IE4rMSkgICAvKiBpZiBpbml0X2dlbnJh
bmQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAqLworICAgICAgICAgICAgaW5pdF9nZW5yYW5kKDU0
ODlVTCk7IC8qIGEgZGVmYXVsdCBpbml0aWFsIHNlZWQgaXMgdXNlZCAqLworCisgICAgICAgIGZv
ciAoa2s9MDtrazxOLU07a2srKykgeworICAgICAgICAgICAgeSA9IChtdFtra10mVVBQRVJfTUFT
Syl8KG10W2trKzFdJkxPV0VSX01BU0spOworICAgICAgICAgICAgbXRba2tdID0gbXRba2srTV0g
XiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgIH0KKyAgICAgICAgZm9yICg7
a2s8Ti0xO2trKyspIHsKKyAgICAgICAgICAgIHkgPSAobXRba2tdJlVQUEVSX01BU0spfChtdFtr
aysxXSZMT1dFUl9NQVNLKTsKKyAgICAgICAgICAgIG10W2trXSA9IG10W2trKyhNLU4pXSBeICh5
ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgfQorICAgICAgICB5ID0gKG10W04t
MV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spOworICAgICAgICBtdFtOLTFdID0gbXRb
TS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKworICAgICAgICBtdGkgPSAwOwor
ICAgIH0KKworICAgIHkgPSBtdFttdGkrK107CisKKyAgICAvKiBUZW1wZXJpbmcgKi8KKyAgICB5
IF49ICh5ID4+IDExKTsKKyAgICB5IF49ICh5IDw8IDcpICYgMHg5ZDJjNTY4MFVMOworICAgIHkg
Xj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMFVMOworICAgIHkgXj0gKHkgPj4gMTgpOworCisgICAg
cmV0dXJuIHk7Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHg3ZmZm
ZmZmZl0taW50ZXJ2YWwgKi8KK2xvbmcgZ2VucmFuZF9pbnQzMSh2b2lkKQoreworICAgIHJldHVy
biAobG9uZykoZ2VucmFuZF9pbnQzMigpPj4xKTsKK30KKworLyogZ2VuZXJhdGVzIGEgcmFuZG9t
IG51bWJlciBvbiBbMCwxXS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2VucmFuZF9yZWFsMSh2
b2lkKQoreworICAgIHJldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk1LjApOwor
ICAgIC8qIGRpdmlkZWQgYnkgMl4zMi0xICovCit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBu
dW1iZXIgb24gWzAsMSktcmVhbC1pbnRlcnZhbCAqLworZG91YmxlIGdlbnJhbmRfcmVhbDIodm9p
ZCkKK3sKKyAgICByZXR1cm4gZ2VucmFuZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5Ni4wKTsKKyAg
ICAvKiBkaXZpZGVkIGJ5IDJeMzIgKi8KK30KKworLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJl
ciBvbiAoMCwxKS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2VucmFuZF9yZWFsMyh2b2lkKQor
eworICAgIHJldHVybiAoKChkb3VibGUpZ2VucmFuZF9pbnQzMigpKSArIDAuNSkqKDEuMC80Mjk0
OTY3Mjk2LjApOworICAgIC8qIGRpdmlkZWQgYnkgMl4zMiAqLworfQorCisvKiBnZW5lcmF0ZXMg
YSByYW5kb20gbnVtYmVyIG9uIFswLDEpIHdpdGggNTMtYml0IHJlc29sdXRpb24qLworZG91Ymxl
IGdlbnJhbmRfcmVzNTModm9pZCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGE9Z2VucmFuZF9pbnQz
MigpPj41LCBiPWdlbnJhbmRfaW50MzIoKT4+NjsKKyAgICByZXR1cm4oYSo2NzEwODg2NC4wK2Ip
KigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKTsKK30KLS0gCjEuNy4zLjEubXN5c2dpdC4wCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>