<?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>95834</bug_id>
          
          <creation_ts>2012-09-05 02:52:08 -0700</creation_ts>
          <short_desc>Web Inspector: NMI: extract overloaded instrumentation members for WebCore classes from core NMI code.</short_desc>
          <delta_ts>2012-09-05 07:52:26 -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 Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711873</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 02:52:08 -0700</bug_when>
    <thetext>I&apos;d like to upstream core memory instrumentation code to WTF.
This will give us a chance to implement reportMemoryUsage members for containers.
On this way I have to remove WebCore specific members from MemoryInstrumentation class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711879</commentid>
    <comment_count>1</comment_count>
      <attachid>162200</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 02:59:29 -0700</bug_when>
    <thetext>Created attachment 162200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711899</commentid>
    <comment_count>2</comment_count>
      <attachid>162200</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-05 03:28:52 -0700</bug_when>
    <thetext>Comment on attachment 162200
Patch

Attachment 162200 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13765140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711949</commentid>
    <comment_count>3</comment_count>
      <attachid>162219</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 04:45:49 -0700</bug_when>
    <thetext>Created attachment 162219
patch for mac try bot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711950</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 04:48:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 162200 [details])
&gt; Attachment 162200 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/13765140

looks like gcc bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15867</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711967</commentid>
    <comment_count>5</comment_count>
      <attachid>162219</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-05 05:17:11 -0700</bug_when>
    <thetext>Comment on attachment 162219
patch for mac try bot

Attachment 162219 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13741894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711972</commentid>
    <comment_count>6</comment_count>
      <attachid>162225</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 05:28:26 -0700</bug_when>
    <thetext>Created attachment 162225
another patch for mac try bot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712019</commentid>
    <comment_count>7</comment_count>
      <attachid>162225</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-05 07:08:53 -0700</bug_when>
    <thetext>Comment on attachment 162225
another patch for mac try bot

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

&gt; Source/WebCore/dom/MemoryInstrumentation.cpp:55
&gt; +template &lt;&gt; void MemoryInstrumentationTraits::addInstrumentedObject&lt;String&gt;(MemoryInstrumentation* instrumentation, const String* const&amp; string, MemoryObjectType ownerObjectType, MemoryOwningType owningType)

template &lt;&gt; -&gt; template&lt;&gt; here and in other places.

&gt; Source/WebCore/dom/MemoryInstrumentation.h:54
&gt; +class MemoryInstrumentationTraits {

Please add an explanation(at least in the ChangeLog) why we cannot use template class here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712027</commentid>
    <comment_count>8</comment_count>
      <attachid>162241</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 07:23:39 -0700</bug_when>
    <thetext>Created attachment 162241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712037</commentid>
    <comment_count>9</comment_count>
      <attachid>162241</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-05 07:49:35 -0700</bug_when>
    <thetext>Comment on attachment 162241
Patch

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:393
&gt; +template&lt;&gt; void MemoryInstrumentationTraits::addInstrumentedObject&lt;const KURL&gt;(MemoryInstrumentation*, const KURL* const&amp;, MemoryObjectType, MemoryOwningType);

Why do we need overload for T in addition to const T ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712040</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 07:52:26 -0700</bug_when>
    <thetext>Committed r127592: &lt;http://trac.webkit.org/changeset/127592&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162200</attachid>
            <date>2012-09-05 02:59:29 -0700</date>
            <delta_ts>2012-09-05 04:45:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95834-20120905135910.patch</filename>
            <type>text/plain</type>
            <size>32492</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZGM2YWJmNzVlNjE5
NzEzMDgzYmNlYzNiZDIyZDVhNGE4YzM1My4uNGUzZmM3YTBiNWY5ZWU1MGU2MDZkMzdjZjExY2Mz
ZDg0YjhiNjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA5LTA1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IGV4dHJhY3Qgb3ZlcmxvYWRlZCBpbnN0cnVtZW50YXRpb24gbWVtYmVycyBmb3Ig
V2ViQ29yZSBjbGFzc2VzIGZyb20gY29yZSBOTUkgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSdkIGxpa2UgdG8gcmVtb3ZlIGN1c3RvbSBpbnN0
cnVtZW50YXRpb24gbWV0aG9kcyBmcm9tIE1lbW9yeUluc3RydW1lbnRhdGlvbiBjbGFzcworICAg
ICAgICBiZWZvcmUgdXBzdHJlYW1pbmcgaXQgdG8gV1RGLiBJJ3ZlIGRvbmUgaXQgd2l0aCBoZWxw
IG9mIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0cyB0ZW1wbGF0ZSBoZWxwZXIuCisKKyAgICAg
ICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6
YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzKToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1l
bnRlZFBvaW50ZXI6Okluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoSW5zdHJ1bWVudGVk
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3Ry
dW1lbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZFJhd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok93bmluZ1RyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3duaW5nVHJhaXRzOjphZGRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6OjphZGRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
OjphZGRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6TWVtb3J5
T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJlcG9ydE9iamVjdElu
Zm8pOgorICAgICAgICAoTWVtb3J5T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChNZW1vcnlDbGFzc0luZm8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkT2JqZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEhhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcik6CisgICAgICAg
ICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6Y291bnRPYmplY3RTaXplKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6dG90YWxTaXplKToKKyAgICAgICAgKE1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwpOgorCiAyMDEyLTA5LTA0ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUk6IHJl
cGxhY2UgT2JqZWN0VHlwZSBlbnVtIHdpdGggc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZyBpZGVu
dGlmaWVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggNzkwYWNlNTY5NzBjZDVjMjg2ODU4YjdmZmQ2NzdmYTkxY2U0MGRmNC4uZGNmOGIyZWFi
MmZmN2FiZDRhOGY4MTg2MzE3NTkzOTlmMDFmNzFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTUyLDM2ICs1Miw1NiBAQCBjb25zdCBjaGFy
KiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU1ZHID0gIkNhY2hlZFJlc291
cmNlU1ZHIjsKIGNvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3Vy
Y2VTaGFkZXIgPSAiQ2FjaGVkUmVzb3VyY2VTaGFkZXIiOwogY29uc3QgY2hhciogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTFQgPSAiQ2FjaGVkUmVzb3VyY2VYU0xUIjsK
IAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
Y29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIE93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzPFN0cmluZz46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQog
ewotICAgIGlmICghc3RyaW5nIHx8IHZpc2l0ZWQoc3RyaW5nKSkKKyAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM8Y29uc3QgU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGluc3Ry
dW1lbnRhdGlvbiwgc3RyaW5nLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworfQorCit0
ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25zdCBTdHJpbmc+
OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50
YXRpb24sIGNvbnN0IFN0cmluZyogY29uc3QmIHN0cmluZywgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpZiAoIXN0
cmluZyB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQoc3RyaW5nKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291bnRPYmplY3RT
aXplKG9iamVjdFR5cGUsIHNpemVvZihTdHJpbmcpKTsKLSAgICBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKHN0cmluZy0+aW1wbCgpLCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAgICBp
bnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZihT
dHJpbmcpKTsKKyAgICBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdChzdHJp
bmctPmltcGwoKSwgb3duZXJPYmplY3RUeXBlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25UcmFpdHM8U3RyaW5nSW1wbD46OmFkZEluc3RydW1lbnRlZE9iamVj
dChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nSW1w
bCogY29uc3QmIHN0cmluZ0ltcGwsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzPGNvbnN0IFN0cmluZ0ltcGw+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoaW5zdHJ1bWVu
dGF0aW9uLCBzdHJpbmdJbXBsLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCi12
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25z
dCBTdHJpbmdJbXBsKiBjb25zdCYgc3RyaW5nSW1wbCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBP
d25pbmdUeXBlKQordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8
Y29uc3QgU3RyaW5nSW1wbD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50
YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZ0lt
cGwsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKQog
ewotICAgIGlmICghc3RyaW5nSW1wbCB8fCB2aXNpdGVkKHN0cmluZ0ltcGwpKQorICAgIGlmICgh
c3RyaW5nSW1wbCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQoc3RyaW5nSW1wbCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nSW1wbC0+
c2l6ZUluQnl0ZXMoKSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUob3du
ZXJPYmplY3RUeXBlLCBzdHJpbmdJbXBsLT5zaXplSW5CeXRlcygpKTsKIH0KIAotdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgS1VSTCog
Y29uc3QmIHVybCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUp
Cit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxLVVJMPjo6YWRk
SW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9u
LCBjb25zdCBLVVJMKiBjb25zdCYgdXJsLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlw
ZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGlmICghdXJsIHx8IHZpc2l0
ZWQodXJsKSkKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8Y29uc3QgS1VSTD46OmFk
ZEluc3RydW1lbnRlZE9iamVjdChpbnN0cnVtZW50YXRpb24sIHVybCwgb3duZXJPYmplY3RUeXBl
LCBvd25pbmdUeXBlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM8Y29uc3QgS1VSTD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVt
ZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgS1VSTCogY29uc3QmIHVybCwgTWVtb3J5
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkK
K3sKKyAgICBpZiAoIXVybCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQodXJsKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291
bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Ci0gICAgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0KHVybC0+c3RyaW5nKCksIG9iamVjdFR5cGUpOworICAgICAgICBpbnN0cnVtZW50
YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Cisg
ICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5zdHJpbmcoKSwg
b3duZXJPYmplY3RUeXBlKTsKICAgICBpZiAodXJsLT5pbm5lclVSTCgpKQotICAgICAgICBhZGRJ
bnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBvYmplY3RUeXBlKTsKKyAgICAgICAg
aW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBv
d25lck9iamVjdFR5cGUpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvblRyYWl0czxBdG9taWNTdHJpbmc+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3Qm
IGF0b21pY1N0cmluZywgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8
Y29uc3QgQXRvbWljU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGluc3RydW1lbnRhdGlv
biwgYXRvbWljU3RyaW5nLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCi12b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBB
dG9taWNTdHJpbmcqIGNvbnN0JiBhdG9taWNTdHJpbmcsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwg
T3duaW5nVHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb25UcmFpdHM8Y29uc3QgQXRvbWljU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1l
bW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcq
IGNvbnN0JiBhdG9taWNTdHJpbmcsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
SW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZyogY29uc3Q+KGF0b21pY1N0cmluZyks
IG9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czxjb25zdCBTdHJpbmc+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoaW5zdHJ1bWVudGF0aW9uLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZyogY29uc3Q+KGF0b21pY1N0cmluZyksIG93bmVy
T2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAwNzk2MzUwNDFk
N2NlMWNiZDIzN2MxMzE5MzhmMmExYjliZDRlNTg4Li4yMWJmMGYyOGU1Mjk0N2RiMzU1MzdlOGVm
MTdhYWVjNjIzNWY0NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRh
dGlvbi5oCkBAIC00MywyNyArNDMsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWY7CiBjbGFzcyBLVVJMOwogY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbzsKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbjsKKwordHlwZWRlZiBjb25zdCBj
aGFyKiBNZW1vcnlPYmplY3RUeXBlOworZW51bSBNZW1vcnlPd25pbmdUeXBlIHsKKyAgICBieVBv
aW50ZXIsCisgICAgYnlSZWZlcmVuY2UKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9p
ZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgVCog
Y29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKKyAgICBzdGF0aWMg
dm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgVCogY29uc3QmLCBN
ZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK307CiAKIGNsYXNzIE1lbW9yeUlu
c3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0
aW9uKCkgeyB9CiAKLSAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIE9iamVjdFR5cGU7Ci0KLSAgICBz
dGF0aWMgY29uc3QgY2hhciogT3RoZXI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIERPTTsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogQ1NTOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBCaW5kaW5n
OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBMb2FkZXI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IE1lbW9yeUNhY2hlU3RydWN0dXJlczsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVz
b3VyY2U7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlQ1NTOwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZUZvbnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNo
YXIqIENhY2hlZFJlc291cmNlSW1hZ2U7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJl
c291cmNlU2NyaXB0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZVNWRzsK
LSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2VTaGFkZXI7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlWFNMVDsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0
VHlwZSBPdGhlcjsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBET007CisgICAgc3RhdGlj
IE1lbW9yeU9iamVjdFR5cGUgQ1NTOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEJpbmRp
bmc7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgTG9hZGVyOworICAgIHN0YXRpYyBNZW1v
cnlPYmplY3RUeXBlIE1lbW9yeUNhY2hlU3RydWN0dXJlczsKKyAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBDYWNoZWRSZXNvdXJjZTsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNo
ZWRSZXNvdXJjZUNTUzsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJj
ZUZvbnQ7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgQ2FjaGVkUmVzb3VyY2VJbWFnZTsK
KyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNjcmlwdDsKKyAgICBz
dGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNWRzsKKyAgICBzdGF0aWMgTWVt
b3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNoYWRlcjsKKyAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVhTTFQ7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
dm9pZCBhZGRSb290T2JqZWN0KGNvbnN0IFQmIHQpCiAgICAgewpAQCAtODEsODkgKzkzLDEwMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY291bnRP
YmplY3RTaXplKE9iamVjdFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3Vu
dE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50
ZXJCYXNlPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCkg
PSAwOwogCiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNzSW5mbzsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czsKKwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBJbnN0cnVtZW50ZWRQb2ludGVyIDogcHVi
bGljIEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxp
Y2l0IEluc3RydW1lbnRlZFBvaW50ZXIoY29uc3QgVCogcG9pbnRlciwgT2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUpIDogbV9wb2ludGVyKHBvaW50ZXIpLCBtX293bmVyT2JqZWN0VHlwZShvd25l
ck9iamVjdFR5cGUpIHsgfQorICAgICAgICBleHBsaWNpdCBJbnN0cnVtZW50ZWRQb2ludGVyKGNv
bnN0IFQqIHBvaW50ZXIsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSA6IG1fcG9p
bnRlcihwb2ludGVyKSwgbV9vd25lck9iamVjdFR5cGUob3duZXJPYmplY3RUeXBlKSB7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKikgT1ZFUlJJ
REU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBUKiBtX3BvaW50ZXI7Ci0gICAgICAg
IGNvbnN0IE9iamVjdFR5cGUgbV9vd25lck9iamVjdFR5cGU7CisgICAgICAgIGNvbnN0IE1lbW9y
eU9iamVjdFR5cGUgbV9vd25lck9iamVjdFR5cGU7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdChjb25zdCBUJiB0LCBPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29uc3Qg
VCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCiAgICAgewogICAgICAgICBP
d25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5cGUpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVj
dChjb25zdCBUJiB0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBPd25pbmdUcmFpdHM8
VD46OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5cGUpOyB9Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3Qg
SGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNoU2V0KGNvbnN0IEhh
c2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkQ29s
bGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9u
bHkgPSBmYWxzZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiwgT2JqZWN0VHlwZSk7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNv
bnN0IE1hcFR5cGUmLCBPYmplY3RUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhh
c2hTZXRUeXBlPiB2b2lkIGFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYsIE9i
amVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmLCBPYmplY3RU
eXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNv
bnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBzaXpl
X3Qgc2l6ZSkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRP
YmplY3QoY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgT3du
aW5nVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RU
eXBlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRIYXNo
TWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRk
SGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYsIE1lbW9yeU9iamVjdFR5cGUsIGJvb2wgY29udGVu
dE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2
b2lkIGFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmLCBNZW1v
cnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFw
VHlwZSYsIE1lbW9yeU9iamVjdFR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBl
PiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiwgTWVtb3J5T2Jq
ZWN0VHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBh
ZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBi
b29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JU
eXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwg
Ym9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2
b2lkKiBjb25zdCYgYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6
ZV90IHNpemUpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVj
dFR5cGUsIHNpemUpOwogICAgIH0KIAotICAgIGVudW0gT3duaW5nVHlwZSB7Ci0gICAgICAgIGJ5
UG9pbnRlciwKLSAgICAgICAgYnlSZWZlcmVuY2UKLSAgICB9OwotCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERlZmF1bHQgYnlSZWZlcmVu
Y2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9i
amVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwg
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVt
ZW50ZWRPYmplY3RJbXBsKCZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNlKTsgfQotICAg
ICAgICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVt
ZW50YXRpb24sIGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IGluc3Ry
dW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCgmdCwgb3duZXJPYmplY3RUeXBlLCBieVJlZmVyZW5j
ZSk7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUlu
c3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RU
eXBlIG93bmVyT2JqZWN0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoaW5zdHJ1bWVudGF0aW9u
LCAmdCwgb3duZXJPYmplY3RUeXBlLCBieVJlZmVyZW5jZSk7CisgICAgICAgIH0KKyAgICAgICAg
c3RhdGljIHZvaWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0
aW9uLCBjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPFQ+OjphZGRPYmpl
Y3QoaW5zdHJ1bWVudGF0aW9uLCAmdCwgb3duZXJPYmplY3RUeXBlLCBieVJlZmVyZW5jZSk7Cisg
ICAgICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0
IE93bmluZ1RyYWl0czxUKj4geyAvLyBDdXN0b20gYnlQb2ludGVyIGltcGxlbWVudGF0aW9uLgot
ICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdElt
cGwodCwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3Qg
VCogY29uc3QmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlv
bi0+YWRkT2JqZWN0SW1wbCh0LCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7IH0KKyAgICAg
ICAgc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlv
biogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBv
d25lck9iamVjdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvblRyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGluc3RydW1lbnRhdGlvbiwgdCwg
b3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2
b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29u
c3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8VD46OmFkZE9iamVj
dChpbnN0cnVtZW50YXRpb24sIHQsIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKKyAgICAg
ICAgfQogICAgIH07CiAKLSAgICB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3Qg
U3RyaW5nKiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAgIHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE9iamVjdFR5cGUs
IE93bmluZ1R5cGUpOwotICAgIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBB
dG9taWNTdHJpbmcqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBh
ZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IEtVUkwqIGNvbnN0JiwgT2JqZWN0VHlwZSwg
T3duaW5nVHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
Y29uc3QgRGF0YVJlZjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0
IE93blB0cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0
cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBPYmplY3RUeXBl
LCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJ
bXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8
VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT2JqZWN0
VHlwZSwgT3duaW5nVHlwZSk7Ci0KLSAgICAvLyBMaW5rIHRpbWUgZ3VhcmRzIGZvciBzcGVjaWFs
IGNhc2VzLgotICAgIHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBTdHJpbmcqIGNvbnN0JiwgT2Jq
ZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFN0cmlu
Z0ltcGwqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRPYmpl
Y3RJbXBsKGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBl
KTsKLSAgICB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgS1VSTCogY29uc3QmLCBPYmplY3RUeXBl
LCBPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVt
ZW50ZWRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5
T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbChjb25zdCBEYXRhUmVmPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUs
IE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZElu
c3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVj
dFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lk
IGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYsIE1lbW9y
eU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUs
IE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9i
amVjdEltcGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1v
cnlPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJ
bXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25p
bmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNv
bnN0IFJlZlB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBl
KTsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24q
IGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3du
ZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgaW5zdHJ1
bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwg
b3duaW5nVHlwZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb25UcmFpdHM8VD46OmFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGlu
c3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgaW5zdHJ1bWVu
dGF0aW9uLT5hZGRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7Cit9
CisKIGNsYXNzIE1lbW9yeU9iamVjdEluZm8gewogcHVibGljOgotICAgIE1lbW9yeU9iamVjdElu
Zm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24sIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgTWVtb3J5T2Jq
ZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVt
b3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCiAgICAgICAgIDogbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24obWVtb3J5SW5zdHJ1bWVudGF0aW9uKQogICAgICAgICAsIG1fb2JqZWN0VHlwZShv
d25lck9iamVjdFR5cGUpCiAgICAgICAgICwgbV9vYmplY3RTaXplKDApCiAgICAgeyB9CiAKLSAg
ICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2JqZWN0VHlwZTsgfQorICAgIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0VHlwZTsgfQogICAgIHNpemVfdCBvYmplY3RTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RTaXplOyB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50YXRp
b24qIG1lbW9yeUluc3RydW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5SW5zdHJ1bWVudGF0
aW9uOyB9CkBAIC0xNzEsNyArMTk0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgc2l6ZV90IGFjdHVhbFNpemUpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBhY3R1
YWxTaXplKQogICAgIHsKICAgICAgICAgaWYgKCFtX29iamVjdFNpemUpIHsKICAgICAgICAgICAg
IG1fb2JqZWN0U2l6ZSA9IGFjdHVhbFNpemUgPyBhY3R1YWxTaXplIDogc2l6ZW9mKFQpOwpAQCAt
MTgxLDE0ICsyMDQsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50
YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOwotICAgIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7CisgICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVj
dFR5cGU7CiAgICAgc2l6ZV90IG1fb2JqZWN0U2l6ZTsKIH07CiAKIGNsYXNzIE1lbW9yeUNsYXNz
SW5mbyB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgTWVtb3J5Q2xh
c3NJbmZvKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8sIGNvbnN0IFQqLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IGFjdHVhbFNp
emUgPSAwKQorICAgIE1lbW9yeUNsYXNzSW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvLCBjb25zdCBUKiwgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3QgYWN0
dWFsU2l6ZSA9IDApCiAgICAgICAgIDogbV9tZW1vcnlPYmplY3RJbmZvKG1lbW9yeU9iamVjdElu
Zm8pCiAgICAgICAgICwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5T2JqZWN0SW5mby0+
bWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkpCiAgICAgewpAQCAtMjE2LDExICsyMzksMTEgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBNZW1vcnlPYmplY3RJbmZvKiBtX21lbW9yeU9iamVjdEluZm87
CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsKLSAg
ICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgbV9vYmplY3RUeXBlOworICAgIE1l
bW9yeU9iamVjdFR5cGUgbV9vYmplY3RUeXBlOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChj
b25zdCBUKiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5n
VHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBv
d25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAo
b3duaW5nVHlwZSA9PSBieVJlZmVyZW5jZSkgewogICAgICAgICBNZW1vcnlPYmplY3RJbmZvIG1l
bW9yeU9iamVjdEluZm8odGhpcywgb3duZXJPYmplY3RUeXBlKTsKQEAgLTIzMyw3ICsyNTYsNyBA
QCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChj
b25zdCBUKiBjb25zdCYgb2JqZWN0LCBPYgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0
IERhdGFSZWY8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBP
d25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBEYXRhUmVmPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1v
cnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBl
KQogewogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKICAgICAgICAgY291bnRPYmpl
Y3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKQEAgLTI0MSw3ICsyNjQs
NyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1w
bChjb25zdCBEYXRhUmVmPFQ+KiBjb25zdCYgbwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNv
bnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUs
IE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJ
bnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVt
b3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlw
ZSkKIHsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50T2Jq
ZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CkBAIC0yNDksNyArMjcy
LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdElt
cGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2IKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChj
b25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBl
LCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1l
bW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5
cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQogICAgICAgICBjb3VudE9i
amVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwpAQCAtMjU3LDcgKzI4
MCw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJ
bXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgRGF0YVJl
ZjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE93bmluZ1R5
cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBs
KGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmlu
Z1R5cGUgPT0gYnlQb2ludGVyKQogICAgICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RU
eXBlLCBzaXplb2YoKm9iamVjdCkpOwpAQCAtMjY1LDcgKzI4OCw3IEBAIHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiBvYmpl
Y3QsIE9iamVjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25z
dCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSBvd25pbmdUeXBlKQogewogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKICAg
ICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsK
QEAgLTI3Myw3ICsyOTYsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0
SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdAogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBs
KGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAg
ICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShv
d25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CkBAIC0yODEsNyArMzA0LDcgQEAgdm9p
ZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBj
b25zdCYgb2JqZWN0LCBPYmplY3QKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0
LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9p
ZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9i
amVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUg
b3duaW5nVHlwZSkKIHsKICAgICBpZiAoIW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI5MSw3ICszMTQsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBoYXNoTWFwLCBPYmplY3RUeXBl
IG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBoYXNoTWFwLCBNZW1vcnlPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsKICAgICBpZiAodmlz
aXRlZCgmaGFzaE1hcCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5OSw3ICszMjIsNyBAQCB2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgaGFz
aE1hcCwgT2JqZWN0VHlwZSBvdwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4K
LXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBl
JiBoYXNoU2V0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkK
K3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBl
JiBoYXNoU2V0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSkKIHsKICAgICBpZiAodmlzaXRlZCgmaGFzaFNldCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTMwNyw3ICszMzAsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaFNldChj
b25zdCBIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0VHlwZSBvdwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwg
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCit2b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0
aW9uVHlwZSYgY29sbGVjdGlvbiwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJv
b2wgY29udGVudE9ubHkpCiB7CiAgICAgaWYgKHZpc2l0ZWQoJmNvbGxlY3Rpb24pKQogICAgICAg
ICByZXR1cm47CkBAIC0zMTgsNyArMzQxLDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGwKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiBtYXAsIE9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3Ry
dW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSkKIHsKICAgICB0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtYXAuZW5kKCk7CiAgICAgZm9yICh0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVyYXRv
ciBpID0gbWFwLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpIHsKQEAgLTMyOCw3ICszNTEsNyBAQCB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25z
dCBNYXBUeXBlJiBtYXAsIE9iamVjdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4K
LXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29u
c3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKK3ZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYg
bWFwLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKIHsKICAgICB0eXBlbmFtZSBN
YXBUeXBlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CiAgICAgZm9yICh0eXBlbmFt
ZSBNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbWFwLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kp
CkBAIC0zMzYsNyArMzU5LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3Ry
dW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXAsIE9iamVjdFQKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0VHlw
ZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCit2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBN
ZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsKICAg
ICBpZiAodmlzaXRlZCgmaGFzaFNldCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0NSw3ICszNjgs
NyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlz
dEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplYwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVj
dG9yVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRWZWN0b3IoY29uc3QgVmVj
dG9yVHlwZSYgdmVjdG9yLCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRWZWN0b3IoY29uc3QgVmVjdG9y
VHlwZSYgdmVjdG9yLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250
ZW50T25seSkKIHsKICAgICBpZiAoIXZlY3Rvci5kYXRhKCkgfHwgdmlzaXRlZCh2ZWN0b3IuZGF0
YSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY2LDYgKzM4OSwzMyBAQCB2b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlcjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0
cnVtZW50YXRpbwogICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1l
bW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUo
KSk7CiB9CiAKKy8vIEV4cGxpY2l0IHNwZWNpYWxpemF0aW9ucyBmb3Igc29tZSB0eXBlcy4KK3Rl
bXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPEtVUkw+OjphZGRJbnN0
cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgS1VSTCogY29uc3Qm
LCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPGNvbnN0IEtVUkw+OjphZGRJbnN0cnVtZW50ZWRP
YmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgS1VSTCogY29uc3QmLCBNZW1vcnlP
YmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25UcmFpdHM8U3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9y
eUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFN0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVHJhaXRzPGNvbnN0IFN0cmluZz46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0
cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVt
b3J5T3duaW5nVHlwZSk7CisKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzPFN0cmluZ0ltcGw+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1v
cnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJh
aXRzPGNvbnN0IFN0cmluZ0ltcGw+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1
bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM8QXRvbWljU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUluc3Ry
dW1lbnRhdGlvbiosIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVHJhaXRzPGNvbnN0IEF0b21pY1N0cmluZz46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1v
cnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2Jq
ZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKKworLy8gTGluayB0aW1lIGd1YXJkcyB3aXRo
IG5vIGJvZHkuCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxL
VVJMPjo6YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IEtVUkwqIGNvbnN0
JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Cit0ZW1wbGF0ZSA8PiB2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25zdCBLVVJMPjo6YWRkT2JqZWN0KE1lbW9y
eUluc3RydW1lbnRhdGlvbiosIGNvbnN0IEtVUkwqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwg
TWVtb3J5T3duaW5nVHlwZSk7CisKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVHJhaXRzPFN0cmluZz46OmFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25z
dCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Cit0
ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25zdCBTdHJpbmc+
OjphZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nKiBjb25zdCYs
IE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZSA8PiB2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxTdHJpbmdJbXBsPjo6YWRkT2JqZWN0KE1lbW9y
eUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiwgTWVtb3J5T2JqZWN0
VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Cit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvblRyYWl0czxjb25zdCBTdHJpbmdJbXBsPjo6YWRkT2JqZWN0KE1lbW9yeUluc3RydW1l
bnRhdGlvbiosIGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVt
b3J5T3duaW5nVHlwZSk7CisKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzPEF0b21pY1N0cmluZz46OmFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBj
b25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSk7Cit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25z
dCBBdG9taWNTdHJpbmc+OjphZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3Qg
QXRvbWljU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUp
OworCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCmluZGV4IDQwOGY2ZjE1
OTViMDY5OWIzZGFkNmE2ODg4OGJkZDVhMmJhOWExNWIuLjM2YzQzNTE5ODMzM2UwMzk0ZjBiMTcw
YjU2MWEyNjYwMmNiMTg1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9N
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2lu
dGVycygpCiAgICAgfQogfQogCi12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OmNvdW50
T2JqZWN0U2l6ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQordm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsOjpjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBv
YmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBUeXBlVG9TaXplTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV90b3RhbFNpemVzLmFkZChvYmplY3RUeXBlLCBzaXplKTsKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsLmgKaW5kZXggOWYzZWVjOGJkMGI3MzVhNDY3MzdmZGJhMzZk
OTVkYmUzNDVlZDFiZi4uODVjYmM1ZTQ1MDk1ZTJkMDBmYWUxOGY3OTNiY2UwYzUxM2ViZWFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsKFZpc2l0ZWRPYmplY3RzJik7CiAKICAgICBzaXplX3Qgc2VsZlNp
emUoKSBjb25zdDsKLSAgICBzaXplX3QgdG90YWxTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSkg
Y29uc3QKKyAgICBzaXplX3QgdG90YWxTaXplKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkg
Y29uc3QKICAgICB7CiAgICAgICAgIFR5cGVUb1NpemVNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBt
X3RvdGFsU2l6ZXMuZmluZChvYmplY3RUeXBlKTsKICAgICAgICAgcmV0dXJuIGkgPT0gbV90b3Rh
bFNpemVzLmVuZCgpID8gMCA6IGktPnNlY29uZDsKQEAgLTYxLDEyICs2MSwxMiBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2Jq
ZWN0VHlwZSwgc2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RT
aXplKE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJC
YXNlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2lu
dGVycygpIE9WRVJSSURFOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE9iamVjdFR5cGUsIHNpemVf
dD4gVHlwZVRvU2l6ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TWVtb3J5T2JqZWN0VHlwZSwg
c2l6ZV90PiBUeXBlVG9TaXplTWFwOwogICAgIFR5cGVUb1NpemVNYXAgbV90b3RhbFNpemVzOwog
ICAgIFZpc2l0ZWRPYmplY3RzJiBtX3Zpc2l0ZWRPYmplY3RzOwogICAgIFZlY3RvcjxPd25QdHI8
SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+ID4gbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJz
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162219</attachid>
            <date>2012-09-05 04:45:49 -0700</date>
            <delta_ts>2012-09-05 05:28:20 -0700</delta_ts>
            <desc>patch for mac try bot</desc>
            <filename>bug-95834-20120905154529.patch</filename>
            <type>text/plain</type>
            <size>32489</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZGM2YWJmNzVlNjE5
NzEzMDgzYmNlYzNiZDIyZDVhNGE4YzM1My4uNGUzZmM3YTBiNWY5ZWU1MGU2MDZkMzdjZjExY2Mz
ZDg0YjhiNjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA5LTA1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IGV4dHJhY3Qgb3ZlcmxvYWRlZCBpbnN0cnVtZW50YXRpb24gbWVtYmVycyBmb3Ig
V2ViQ29yZSBjbGFzc2VzIGZyb20gY29yZSBOTUkgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSdkIGxpa2UgdG8gcmVtb3ZlIGN1c3RvbSBpbnN0
cnVtZW50YXRpb24gbWV0aG9kcyBmcm9tIE1lbW9yeUluc3RydW1lbnRhdGlvbiBjbGFzcworICAg
ICAgICBiZWZvcmUgdXBzdHJlYW1pbmcgaXQgdG8gV1RGLiBJJ3ZlIGRvbmUgaXQgd2l0aCBoZWxw
IG9mIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0cyB0ZW1wbGF0ZSBoZWxwZXIuCisKKyAgICAg
ICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6
YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzKToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1l
bnRlZFBvaW50ZXI6Okluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoSW5zdHJ1bWVudGVk
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3Ry
dW1lbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZFJhd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok93bmluZ1RyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3duaW5nVHJhaXRzOjphZGRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6OjphZGRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
OjphZGRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6TWVtb3J5
T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJlcG9ydE9iamVjdElu
Zm8pOgorICAgICAgICAoTWVtb3J5T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChNZW1vcnlDbGFzc0luZm8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkT2JqZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEhhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcik6CisgICAgICAg
ICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6Y291bnRPYmplY3RTaXplKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6dG90YWxTaXplKToKKyAgICAgICAgKE1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwpOgorCiAyMDEyLTA5LTA0ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUk6IHJl
cGxhY2UgT2JqZWN0VHlwZSBlbnVtIHdpdGggc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZyBpZGVu
dGlmaWVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggNzkwYWNlNTY5NzBjZDVjMjg2ODU4YjdmZmQ2NzdmYTkxY2U0MGRmNC4uZGNmOGIyZWFi
MmZmN2FiZDRhOGY4MTg2MzE3NTkzOTlmMDFmNzFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTUyLDM2ICs1Miw1NiBAQCBjb25zdCBjaGFy
KiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU1ZHID0gIkNhY2hlZFJlc291
cmNlU1ZHIjsKIGNvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3Vy
Y2VTaGFkZXIgPSAiQ2FjaGVkUmVzb3VyY2VTaGFkZXIiOwogY29uc3QgY2hhciogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTFQgPSAiQ2FjaGVkUmVzb3VyY2VYU0xUIjsK
IAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
Y29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIE93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzPFN0cmluZz46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQog
ewotICAgIGlmICghc3RyaW5nIHx8IHZpc2l0ZWQoc3RyaW5nKSkKKyAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM8Y29uc3QgU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGluc3Ry
dW1lbnRhdGlvbiwgc3RyaW5nLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworfQorCit0
ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25zdCBTdHJpbmc+
OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50
YXRpb24sIGNvbnN0IFN0cmluZyogY29uc3QmIHN0cmluZywgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpZiAoIXN0
cmluZyB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQoc3RyaW5nKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291bnRPYmplY3RT
aXplKG9iamVjdFR5cGUsIHNpemVvZihTdHJpbmcpKTsKLSAgICBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKHN0cmluZy0+aW1wbCgpLCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAgICBp
bnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZihT
dHJpbmcpKTsKKyAgICBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdChzdHJp
bmctPmltcGwoKSwgb3duZXJPYmplY3RUeXBlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25UcmFpdHM8U3RyaW5nSW1wbD46OmFkZEluc3RydW1lbnRlZE9iamVj
dChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nSW1w
bCogY29uc3QmIHN0cmluZ0ltcGwsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzPGNvbnN0IFN0cmluZ0ltcGw+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoaW5zdHJ1bWVu
dGF0aW9uLCBzdHJpbmdJbXBsLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCi12
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25z
dCBTdHJpbmdJbXBsKiBjb25zdCYgc3RyaW5nSW1wbCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBP
d25pbmdUeXBlKQordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8
Y29uc3QgU3RyaW5nSW1wbD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50
YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZ0lt
cGwsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKQog
ewotICAgIGlmICghc3RyaW5nSW1wbCB8fCB2aXNpdGVkKHN0cmluZ0ltcGwpKQorICAgIGlmICgh
c3RyaW5nSW1wbCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQoc3RyaW5nSW1wbCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nSW1wbC0+
c2l6ZUluQnl0ZXMoKSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUob3du
ZXJPYmplY3RUeXBlLCBzdHJpbmdJbXBsLT5zaXplSW5CeXRlcygpKTsKIH0KIAotdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgS1VSTCog
Y29uc3QmIHVybCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUp
Cit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxLVVJMPjo6YWRk
SW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9u
LCBjb25zdCBLVVJMKiBjb25zdCYgdXJsLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlw
ZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGlmICghdXJsIHx8IHZpc2l0
ZWQodXJsKSkKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8Y29uc3QgS1VSTD46OmFk
ZEluc3RydW1lbnRlZE9iamVjdChpbnN0cnVtZW50YXRpb24sIHVybCwgb3duZXJPYmplY3RUeXBl
LCBvd25pbmdUeXBlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM8Y29uc3QgS1VSTD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVt
ZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgS1VSTCogY29uc3QmIHVybCwgTWVtb3J5
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkK
K3sKKyAgICBpZiAoIXVybCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQodXJsKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291
bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Ci0gICAgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0KHVybC0+c3RyaW5nKCksIG9iamVjdFR5cGUpOworICAgICAgICBpbnN0cnVtZW50
YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Cisg
ICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5zdHJpbmcoKSwg
b3duZXJPYmplY3RUeXBlKTsKICAgICBpZiAodXJsLT5pbm5lclVSTCgpKQotICAgICAgICBhZGRJ
bnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBvYmplY3RUeXBlKTsKKyAgICAgICAg
aW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBv
d25lck9iamVjdFR5cGUpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvblRyYWl0czxBdG9taWNTdHJpbmc+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3Qm
IGF0b21pY1N0cmluZywgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8
Y29uc3QgQXRvbWljU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGluc3RydW1lbnRhdGlv
biwgYXRvbWljU3RyaW5nLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCi12b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBB
dG9taWNTdHJpbmcqIGNvbnN0JiBhdG9taWNTdHJpbmcsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwg
T3duaW5nVHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb25UcmFpdHM8Y29uc3QgQXRvbWljU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1l
bW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcq
IGNvbnN0JiBhdG9taWNTdHJpbmcsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
SW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZyogY29uc3Q+KGF0b21pY1N0cmluZyks
IG9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czxjb25zdCBTdHJpbmc+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoaW5zdHJ1bWVudGF0aW9uLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZyogY29uc3Q+KGF0b21pY1N0cmluZyksIG93bmVy
T2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAwNzk2MzUwNDFk
N2NlMWNiZDIzN2MxMzE5MzhmMmExYjliZDRlNTg4Li4zYWEwYTdlOGE3NTczMWY3NGYzM2E1NWQy
NDEzYjMyNDFlOTdiMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRh
dGlvbi5oCkBAIC00MywyNyArNDMsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWY7CiBjbGFzcyBLVVJMOwogY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbzsKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbjsKKwordHlwZWRlZiBjb25zdCBj
aGFyKiBNZW1vcnlPYmplY3RUeXBlOworZW51bSBNZW1vcnlPd25pbmdUeXBlIHsKKyAgICBieVBv
aW50ZXIsCisgICAgYnlSZWZlcmVuY2UKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9p
ZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgVCog
Y29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKKyAgICBzdGF0aWMg
dm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgVCogY29uc3QmLCBN
ZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK307CiAKIGNsYXNzIE1lbW9yeUlu
c3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0
aW9uKCkgeyB9CiAKLSAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIE9iamVjdFR5cGU7Ci0KLSAgICBz
dGF0aWMgY29uc3QgY2hhciogT3RoZXI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIERPTTsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogQ1NTOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBCaW5kaW5n
OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBMb2FkZXI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IE1lbW9yeUNhY2hlU3RydWN0dXJlczsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVz
b3VyY2U7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlQ1NTOwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZUZvbnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNo
YXIqIENhY2hlZFJlc291cmNlSW1hZ2U7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJl
c291cmNlU2NyaXB0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZVNWRzsK
LSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2VTaGFkZXI7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlWFNMVDsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0
VHlwZSBPdGhlcjsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBET007CisgICAgc3RhdGlj
IE1lbW9yeU9iamVjdFR5cGUgQ1NTOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEJpbmRp
bmc7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgTG9hZGVyOworICAgIHN0YXRpYyBNZW1v
cnlPYmplY3RUeXBlIE1lbW9yeUNhY2hlU3RydWN0dXJlczsKKyAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBDYWNoZWRSZXNvdXJjZTsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNo
ZWRSZXNvdXJjZUNTUzsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJj
ZUZvbnQ7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgQ2FjaGVkUmVzb3VyY2VJbWFnZTsK
KyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNjcmlwdDsKKyAgICBz
dGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNWRzsKKyAgICBzdGF0aWMgTWVt
b3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNoYWRlcjsKKyAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVhTTFQ7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
dm9pZCBhZGRSb290T2JqZWN0KGNvbnN0IFQmIHQpCiAgICAgewpAQCAtODEsODkgKzkzLDg4IEBA
IHByb3RlY3RlZDoKICAgICB9OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjb3VudE9i
amVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvdW50
T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRl
ckJhc2U+KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKSA9
IDA7CiAKICAgICBmcmllbmQgY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOworCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEluc3RydW1lbnRlZFBvaW50ZXIgOiBwdWJs
aWMgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGlj
aXQgSW5zdHJ1bWVudGVkUG9pbnRlcihjb25zdCBUKiBwb2ludGVyLCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSkgOiBtX3BvaW50ZXIocG9pbnRlciksIG1fb3duZXJPYmplY3RUeXBlKG93bmVy
T2JqZWN0VHlwZSkgeyB9CisgICAgICAgIGV4cGxpY2l0IEluc3RydW1lbnRlZFBvaW50ZXIoY29u
c3QgVCogcG9pbnRlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIDogbV9wb2lu
dGVyKHBvaW50ZXIpLCBtX293bmVyT2JqZWN0VHlwZShvd25lck9iamVjdFR5cGUpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpb24qKSBPVkVSUklE
RTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFQqIG1fcG9pbnRlcjsKLSAgICAgICAg
Y29uc3QgT2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlwZTsKKyAgICAgICAgY29uc3QgTWVtb3J5
T2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlwZTsKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmpl
Y3RUeXBlKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdChjb25zdCBU
JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKICAgICB7CiAgICAgICAgIE93
bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlwZSk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IE93bmluZ1RyYWl0czxU
Pjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlwZSk7IH0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBI
YXNoTWFwVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFz
aFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRDb2xs
ZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmLCBPYmplY3RUeXBlKTsKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29u
c3QgTWFwVHlwZSYsIE9iamVjdFR5cGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMaXN0SGFz
aFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiwgT2Jq
ZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYsIE9iamVjdFR5
cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7Ci0gICAgdm9pZCBhZGRSYXdCdWZmZXIoY29u
c3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVf
dCBzaXplKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9i
amVjdChjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBPd25p
bmdUcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5
cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hN
YXAoY29uc3QgSGFzaE1hcFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5
ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRI
YXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IHZv
aWQgYWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYsIE1lbW9y
eU9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBU
eXBlJiwgTWVtb3J5T2JqZWN0VHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmLCBNZW1vcnlPYmpl
Y3RUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFk
ZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYsIE1lbW9yeU9iamVjdFR5cGUsIGJv
b2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5
cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBi
b29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZv
aWQqIGNvbnN0JiBidWZmZXIsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBzaXpl
X3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0ZWQoYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0
VHlwZSwgc2l6ZSk7CiAgICAgfQogCi0gICAgZW51bSBPd25pbmdUeXBlIHsKLSAgICAgICAgYnlQ
b2ludGVyLAotICAgICAgICBieVJlZmVyZW5jZQotICAgIH07Ci0KICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgICBzdHJ1Y3QgT3duaW5nVHJhaXRzIHsgLy8gRGVmYXVsdCBieVJlZmVyZW5j
ZSBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUJiB0LCBP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1l
bnRhdGlvbiwgY29uc3QgVCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgaW5zdHJ1
bWVudGF0aW9uLT5hZGRPYmplY3RJbXBsKCZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNl
KTsgfQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdChpbnN0cnVtZW50YXRpb24s
ICZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNlKTsKKyAgICAgICAgfQorICAgICAgICBz
dGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRp
b24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8VD46OmFkZE9iamVj
dChpbnN0cnVtZW50YXRpb24sICZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNlKTsKKyAg
ICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3Qg
T3duaW5nVHJhaXRzPFQqPiB7IC8vIEN1c3RvbSBieVBvaW50ZXIgaW1wbGVtZW50YXRpb24uCi0g
ICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50
YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE9iamVjdFR5cGUgb3du
ZXJPYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1w
bCh0LCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7IH0KLSAgICAgICAgc3RhdGljIHZvaWQg
YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBU
KiBjb25zdCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgaW5zdHJ1bWVudGF0aW9u
LT5hZGRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsgfQorICAgICAg
ICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoaW5zdHJ1bWVudGF0aW9uLCB0LCBv
d25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZv
aWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25z
dCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxUPjo6YWRkT2JqZWN0
KGluc3RydW1lbnRhdGlvbiwgdCwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBT
dHJpbmcqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRJbnN0
cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiwgT2JqZWN0VHlwZSwg
T3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IEF0
b21pY1N0cmluZyogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB2b2lkIGFk
ZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgS1VSTCogY29uc3QmLCBPYmplY3RUeXBlLCBP
d25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChj
b25zdCBEYXRhUmVmPFQ+KiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3Qg
T3duUHRyPFQ+KiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgUmVmUHRy
PFQ+KiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE9iamVjdFR5cGUs
IE93bmluZ1R5cGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdElt
cGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxU
PiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBPYmplY3RU
eXBlLCBPd25pbmdUeXBlKTsKLQotICAgIC8vIExpbmsgdGltZSBndWFyZHMgZm9yIHNwZWNpYWwg
Y2FzZXMuCi0gICAgdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFN0cmluZyogY29uc3QmLCBPYmpl
Y3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgU3RyaW5n
SW1wbCogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB2b2lkIGFkZE9iamVj
dEltcGwoY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUp
OwotICAgIHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBLVVJMKiBjb25zdCYsIE9iamVjdFR5cGUs
IE93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwg
TWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0
VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgTWVtb3J5
T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwg
TWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2Jq
ZWN0SW1wbChjb25zdCBEYXRhUmVmPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9y
eU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdElt
cGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmlu
Z1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29u
c3QgUmVmUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUp
OwogfTsKIAogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbyB7CiBwdWJsaWM6Ci0gICAgTWVtb3J5T2Jq
ZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKKyAgICBNZW1v
cnlPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKICAgICAgICAgOiBtX21lbW9yeUlu
c3RydW1lbnRhdGlvbihtZW1vcnlJbnN0cnVtZW50YXRpb24pCiAgICAgICAgICwgbV9vYmplY3RU
eXBlKG93bmVyT2JqZWN0VHlwZSkKICAgICAgICAgLCBtX29iamVjdFNpemUoMCkKICAgICB7IH0K
IAotICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CisgICAgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CiAgICAgc2l6ZV90IG9iamVjdFNp
emUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KIAogICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyByZXR1cm4gbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb247IH0KQEAgLTE3MSw3ICsxODIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBNZW1vcnlDbGFzc0luZm87CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
dm9pZCByZXBvcnRPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBv
YmplY3RUeXBlLCBzaXplX3QgYWN0dWFsU2l6ZSkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
dm9pZCByZXBvcnRPYmplY3RJbmZvKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90
IGFjdHVhbFNpemUpCiAgICAgewogICAgICAgICBpZiAoIW1fb2JqZWN0U2l6ZSkgewogICAgICAg
ICAgICAgbV9vYmplY3RTaXplID0gYWN0dWFsU2l6ZSA/IGFjdHVhbFNpemUgOiBzaXplb2YoVCk7
CkBAIC0xODEsMTQgKzE5MiwxNCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247Ci0gICAgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPYmplY3RUeXBlIG1fb2JqZWN0VHlwZTsKKyAgICBNZW1vcnlPYmplY3RUeXBlIG1f
b2JqZWN0VHlwZTsKICAgICBzaXplX3QgbV9vYmplY3RTaXplOwogfTsKIAogY2xhc3MgTWVtb3J5
Q2xhc3NJbmZvIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBNZW1v
cnlDbGFzc0luZm8oTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29uc3QgVCos
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3QgYWN0
dWFsU2l6ZSA9IDApCisgICAgTWVtb3J5Q2xhc3NJbmZvKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8sIGNvbnN0IFQqLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVf
dCBhY3R1YWxTaXplID0gMCkKICAgICAgICAgOiBtX21lbW9yeU9iamVjdEluZm8obWVtb3J5T2Jq
ZWN0SW5mbykKICAgICAgICAgLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlPYmplY3RJ
bmZvLT5tZW1vcnlJbnN0cnVtZW50YXRpb24oKSkKICAgICB7CkBAIC0yMTYsMTEgKzIyNywxMSBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5T2JqZWN0
SW5mbzsKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
OwotICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7Cisg
ICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJ
bXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBP
d25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RU
eXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewogICAg
IGlmIChvd25pbmdUeXBlID09IGJ5UmVmZXJlbmNlKSB7CiAgICAgICAgIE1lbW9yeU9iamVjdElu
Zm8gbWVtb3J5T2JqZWN0SW5mbyh0aGlzLCBvd25lck9iamVjdFR5cGUpOwpAQCAtMjMzLDcgKzI0
NCw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJ
bXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE9iCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
Y29uc3QgRGF0YVJlZjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiBvYmplY3Qs
IE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmlu
Z1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQogICAgICAgICBjb3Vu
dE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwpAQCAtMjQxLDcg
KzI1Miw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiBvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdElt
cGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0
VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0
LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25p
bmdUeXBlKQogewogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKICAgICAgICAgY291
bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKQEAgLTI0OSw3
ICsyNjAsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJ
bXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVj
dCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3du
aW5nVHlwZSkKIHsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNv
dW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CkBAIC0yNTcs
NyArMjY4LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9i
amVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2IKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBE
YXRhUmVmPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3du
aW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBv
d25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAo
b3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9i
amVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CkBAIC0yNjUsNyArMjc2LDcgQEAgdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3Qm
IG9iamVjdCwgT2JqZWMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmpl
Y3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4q
IGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlIG93bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVy
KQogICAgICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVj
dCkpOwpAQCAtMjczLDcgKzI4NCw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRP
YmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQog
ewogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKICAgICAgICAgY291bnRPYmplY3RT
aXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKQEAgLTI4MSw3ICsyOTIsNyBA
QCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8
VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBv
YmplY3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUp
Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25z
dCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSBvd25pbmdUeXBlKQogewogICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjkxLDcgKzMwMiw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUg
b3duCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hNYXBUeXBlPgotdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVj
dFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQordm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE1lbW9y
eU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQogewogICAgIGlm
ICh2aXNpdGVkKCZoYXNoTWFwKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5LDcgKzMxMCw3IEBA
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBl
JiBoYXNoTWFwLCBPYmplY3RUeXBlIG93CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRU
eXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQoY29uc3QgSGFzaFNl
dFR5cGUmIGhhc2hTZXQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRP
bmx5KQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQoY29uc3QgSGFzaFNl
dFR5cGUmIGhhc2hTZXQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNv
bnRlbnRPbmx5KQogewogICAgIGlmICh2aXNpdGVkKCZoYXNoU2V0KSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzA3LDcgKzMxOCw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBlIG93CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0
aW9uLCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3ZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENv
bGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlw
ZSwgYm9vbCBjb250ZW50T25seSkKIHsKICAgICBpZiAodmlzaXRlZCgmY29sbGVjdGlvbikpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMxOCw3ICszMjksNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29s
bAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2Jq
ZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiBtYXAsIE1lbW9yeU9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlKQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0
ZXJhdG9yIGkgPSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewpAQCAtMzI4LDcgKzMzOSw3
IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVz
KGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBU
eXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcFZhbHVl
cyhjb25zdCBNYXBUeXBlJiBtYXAsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQordm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBU
eXBlJiBtYXAsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQogewogICAgIHR5cGVu
YW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICBmb3IgKHR5
cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7
ICsraSkKQEAgLTMzNiw3ICszNDcsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0VAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3ZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmIGhhc2hT
ZXQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQog
ewogICAgIGlmICh2aXNpdGVkKCZoYXNoU2V0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ1LDcg
KzM1Niw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldChjb25z
dCBMaXN0SGFzaFNldFR5cGUmIGhhc2hTZXQsIE9iamVjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBWZWN0b3JUeXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcihjb25z
dCBWZWN0b3JUeXBlJiB2ZWN0b3IsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNv
bnRlbnRPbmx5KQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcihjb25zdCBW
ZWN0b3JUeXBlJiB2ZWN0b3IsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29s
IGNvbnRlbnRPbmx5KQogewogICAgIGlmICghdmVjdG9yLmRhdGEoKSB8fCB2aXNpdGVkKHZlY3Rv
ci5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zNjYsNiArMzc3LDQ0IEBAIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+Ojpwcm9jZXNzKE1lbW9y
eUluc3RydW1lbnRhdGlvCiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNp
emUobWVtb3J5T2JqZWN0SW5mby5vYmplY3RUeXBlKCksIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0
U2l6ZSgpKTsKIH0KIAorLy8gRXhwbGljaXQgc3BlY2lhbGl6YXRpb25zIGZvciBzb21lIHR5cGVz
LgordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8S1VSTD46OmFk
ZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBLVVJMKiBj
b25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4g
dm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8Y29uc3QgS1VSTD46OmFkZEluc3RydW1l
bnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBLVVJMKiBjb25zdCYsIE1l
bW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZSA8PiB2b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxTdHJpbmc+OjphZGRJbnN0cnVtZW50ZWRPYmplY3Qo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVj
dFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM8Y29uc3QgU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9y
eUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFN0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb25UcmFpdHM8U3RyaW5nSW1wbD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0
cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUs
IE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM8Y29uc3QgU3RyaW5nSW1wbD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJ
bnN0cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5
cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvblRyYWl0czxBdG9taWNTdHJpbmc+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVj
dFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM8Y29uc3QgQXRvbWljU3RyaW5nPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0
KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBNZW1v
cnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKKworCisvLyBMaW5rIHRpbWUgZ3VhcmRz
IHdpdGggbm8gYm9keS4KK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJh
aXRzPEtVUkw+OjphZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgS1VSTCog
Y29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPGNvbnN0IEtVUkw+OjphZGRPYmplY3Qo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgS1VSTCogY29uc3QmLCBNZW1vcnlPYmplY3RU
eXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM8U3RyaW5nPjo6YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbios
IGNvbnN0IFN0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBl
KTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPGNvbnN0IFN0
cmluZz46OmFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmcqIGNv
bnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKK3RlbXBsYXRlIDw+
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPFN0cmluZ0ltcGw+OjphZGRPYmplY3Qo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBNZW1vcnlP
YmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uVHJhaXRzPGNvbnN0IFN0cmluZ0ltcGw+OjphZGRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb25UcmFpdHM8QXRvbWljU3RyaW5nPjo6YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlv
biosIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRz
PGNvbnN0IEF0b21pY1N0cmluZz46OmFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBj
b25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24q
IGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3du
ZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgaW5zdHJ1
bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwg
b3duaW5nVHlwZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb25UcmFpdHM8VD46OmFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGlu
c3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgaW5zdHJ1bWVu
dGF0aW9uLT5hZGRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCmluZGV4IDQwOGY2ZjE1OTVi
MDY5OWIzZGFkNmE2ODg4OGJkZDVhMmJhOWExNWIuLjM2YzQzNTE5ODMzM2UwMzk0ZjBiMTcwYjU2
MWEyNjYwMmNiMTg1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsOjpwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVy
cygpCiAgICAgfQogfQogCi12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OmNvdW50T2Jq
ZWN0U2l6ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQordm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsOjpjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmpl
Y3RUeXBlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBUeXBlVG9TaXplTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV90b3RhbFNpemVzLmFkZChvYmplY3RUeXBlLCBzaXplKTsKICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9y
eUluc3RydW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsLmgKaW5kZXggOWYzZWVjOGJkMGI3MzVhNDY3MzdmZGJhMzZkOTVk
YmUzNDVlZDFiZi4uODVjYmM1ZTQ1MDk1ZTJkMDBmYWUxOGY3OTNiY2UwYzUxM2ViZWFiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsKFZpc2l0ZWRPYmplY3RzJik7CiAKICAgICBzaXplX3Qgc2VsZlNpemUo
KSBjb25zdDsKLSAgICBzaXplX3QgdG90YWxTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29u
c3QKKyAgICBzaXplX3QgdG90YWxTaXplKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29u
c3QKICAgICB7CiAgICAgICAgIFR5cGVUb1NpemVNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3Rv
dGFsU2l6ZXMuZmluZChvYmplY3RUeXBlKTsKICAgICAgICAgcmV0dXJuIGkgPT0gbV90b3RhbFNp
emVzLmVuZCgpID8gMCA6IGktPnNlY29uZDsKQEAgLTYxLDEyICs2MSwxMiBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0
VHlwZSwgc2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXpl
KE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRl
ZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNl
PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVy
cygpIE9WRVJSSURFOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE9iamVjdFR5cGUsIHNpemVfdD4g
VHlwZVRvU2l6ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TWVtb3J5T2JqZWN0VHlwZSwgc2l6
ZV90PiBUeXBlVG9TaXplTWFwOwogICAgIFR5cGVUb1NpemVNYXAgbV90b3RhbFNpemVzOwogICAg
IFZpc2l0ZWRPYmplY3RzJiBtX3Zpc2l0ZWRPYmplY3RzOwogICAgIFZlY3RvcjxPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+ID4gbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162225</attachid>
            <date>2012-09-05 05:28:26 -0700</date>
            <delta_ts>2012-09-05 07:23:32 -0700</delta_ts>
            <desc>another patch for mac try bot</desc>
            <filename>bug-95834-20120905162807.patch</filename>
            <type>text/plain</type>
            <size>32483</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZGM2YWJmNzVlNjE5
NzEzMDgzYmNlYzNiZDIyZDVhNGE4YzM1My4uNGUzZmM3YTBiNWY5ZWU1MGU2MDZkMzdjZjExY2Mz
ZDg0YjhiNjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA5LTA1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IGV4dHJhY3Qgb3ZlcmxvYWRlZCBpbnN0cnVtZW50YXRpb24gbWVtYmVycyBmb3Ig
V2ViQ29yZSBjbGFzc2VzIGZyb20gY29yZSBOTUkgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSdkIGxpa2UgdG8gcmVtb3ZlIGN1c3RvbSBpbnN0
cnVtZW50YXRpb24gbWV0aG9kcyBmcm9tIE1lbW9yeUluc3RydW1lbnRhdGlvbiBjbGFzcworICAg
ICAgICBiZWZvcmUgdXBzdHJlYW1pbmcgaXQgdG8gV1RGLiBJJ3ZlIGRvbmUgaXQgd2l0aCBoZWxw
IG9mIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0cyB0ZW1wbGF0ZSBoZWxwZXIuCisKKyAgICAg
ICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6
YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzKToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1l
bnRlZFBvaW50ZXI6Okluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoSW5zdHJ1bWVudGVk
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3Ry
dW1lbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZFJhd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok93bmluZ1RyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3duaW5nVHJhaXRzOjphZGRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6OjphZGRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
OjphZGRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6TWVtb3J5
T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJlcG9ydE9iamVjdElu
Zm8pOgorICAgICAgICAoTWVtb3J5T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChNZW1vcnlDbGFzc0luZm8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkT2JqZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEhhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcik6CisgICAgICAg
ICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6Y291bnRPYmplY3RTaXplKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6dG90YWxTaXplKToKKyAgICAgICAgKE1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwpOgorCiAyMDEyLTA5LTA0ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUk6IHJl
cGxhY2UgT2JqZWN0VHlwZSBlbnVtIHdpdGggc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZyBpZGVu
dGlmaWVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggNzkwYWNlNTY5NzBjZDVjMjg2ODU4YjdmZmQ2NzdmYTkxY2U0MGRmNC4uNTU1MjM2ZmE4
M2Y2Njc1YWFmMDFiODVkZTg3ZmNhNTVkMTNkZGJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTUyLDM2ICs1Miw1NiBAQCBjb25zdCBjaGFy
KiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU1ZHID0gIkNhY2hlZFJlc291
cmNlU1ZHIjsKIGNvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3Vy
Y2VTaGFkZXIgPSAiQ2FjaGVkUmVzb3VyY2VTaGFkZXIiOwogY29uc3QgY2hhciogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTFQgPSAiQ2FjaGVkUmVzb3VyY2VYU0xUIjsK
IAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
Y29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIE93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8U3RyaW5nPihNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQog
ewotICAgIGlmICghc3RyaW5nIHx8IHZpc2l0ZWQoc3RyaW5nKSkKKyAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJpbmc+KGluc3Ry
dW1lbnRhdGlvbiwgc3RyaW5nLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworfQorCit0
ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVu
dGVkT2JqZWN0PGNvbnN0IFN0cmluZz4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50
YXRpb24sIGNvbnN0IFN0cmluZyogY29uc3QmIHN0cmluZywgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpZiAoIXN0
cmluZyB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQoc3RyaW5nKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291bnRPYmplY3RT
aXplKG9iamVjdFR5cGUsIHNpemVvZihTdHJpbmcpKTsKLSAgICBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKHN0cmluZy0+aW1wbCgpLCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAgICBp
bnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZihT
dHJpbmcpKTsKKyAgICBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdChzdHJp
bmctPmltcGwoKSwgb3duZXJPYmplY3RUeXBlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxTdHJpbmdJbXBs
PihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nSW1w
bCogY29uc3QmIHN0cmluZ0ltcGwsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8Y29uc3QgU3RyaW5nSW1wbD4oaW5zdHJ1bWVu
dGF0aW9uLCBzdHJpbmdJbXBsLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCi12
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25z
dCBTdHJpbmdJbXBsKiBjb25zdCYgc3RyaW5nSW1wbCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBP
d25pbmdUeXBlKQordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6
OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJpbmdJbXBsPihNZW1vcnlJbnN0cnVtZW50
YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZ0lt
cGwsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKQog
ewotICAgIGlmICghc3RyaW5nSW1wbCB8fCB2aXNpdGVkKHN0cmluZ0ltcGwpKQorICAgIGlmICgh
c3RyaW5nSW1wbCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQoc3RyaW5nSW1wbCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nSW1wbC0+
c2l6ZUluQnl0ZXMoKSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUob3du
ZXJPYmplY3RUeXBlLCBzdHJpbmdJbXBsLT5zaXplSW5CeXRlcygpKTsKIH0KIAotdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgS1VSTCog
Y29uc3QmIHVybCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUp
Cit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1
bWVudGVkT2JqZWN0PEtVUkw+KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9u
LCBjb25zdCBLVVJMKiBjb25zdCYgdXJsLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlw
ZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGlmICghdXJsIHx8IHZpc2l0
ZWQodXJsKSkKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRl
ZE9iamVjdDxjb25zdCBLVVJMPihpbnN0cnVtZW50YXRpb24sIHVybCwgb3duZXJPYmplY3RUeXBl
LCBvd25pbmdUeXBlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBLVVJMPihNZW1vcnlJbnN0cnVt
ZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgS1VSTCogY29uc3QmIHVybCwgTWVtb3J5
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkK
K3sKKyAgICBpZiAoIXVybCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0ZWQodXJsKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291
bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Ci0gICAgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0KHVybC0+c3RyaW5nKCksIG9iamVjdFR5cGUpOworICAgICAgICBpbnN0cnVtZW50
YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Cisg
ICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5zdHJpbmcoKSwg
b3duZXJPYmplY3RUeXBlKTsKICAgICBpZiAodXJsLT5pbm5lclVSTCgpKQotICAgICAgICBhZGRJ
bnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBvYmplY3RUeXBlKTsKKyAgICAgICAg
aW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBv
d25lck9iamVjdFR5cGUpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PEF0b21pY1N0cmluZz4oTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3Qm
IGF0b21pY1N0cmluZywgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6
OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBBdG9taWNTdHJpbmc+KGluc3RydW1lbnRhdGlv
biwgYXRvbWljU3RyaW5nLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCi12b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBB
dG9taWNTdHJpbmcqIGNvbnN0JiBhdG9taWNTdHJpbmcsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwg
T3duaW5nVHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBBdG9taWNTdHJpbmc+KE1l
bW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcq
IGNvbnN0JiBhdG9taWNTdHJpbmcsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
SW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZyogY29uc3Q+KGF0b21pY1N0cmluZyks
IG9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PGNvbnN0IFN0cmluZz4oaW5zdHJ1bWVudGF0aW9uLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZyogY29uc3Q+KGF0b21pY1N0cmluZyksIG93bmVy
T2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAwNzk2MzUwNDFk
N2NlMWNiZDIzN2MxMzE5MzhmMmExYjliZDRlNTg4Li44YWY5OWUxNDVhMDY1MTc1YjA1NGUyYzFi
MTM4ZGRlNDI3ZmQ0ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRh
dGlvbi5oCkBAIC00MywyNyArNDMsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWY7CiBjbGFzcyBLVVJMOwogY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbzsKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbjsKKwordHlwZWRlZiBjb25zdCBj
aGFyKiBNZW1vcnlPYmplY3RUeXBlOworZW51bSBNZW1vcnlPd25pbmdUeXBlIHsKKyAgICBieVBv
aW50ZXIsCisgICAgYnlSZWZlcmVuY2UKK307CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlv
blRyYWl0cyB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lk
IGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBUKiBj
b25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiwgY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsK
K307CiAKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+TWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyB9CiAKLSAgICB0eXBlZGVmIGNvbnN0IGNoYXIq
IE9iamVjdFR5cGU7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogT3RoZXI7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIERPTTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogQ1NTOwotICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBCaW5kaW5nOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBMb2FkZXI7Ci0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIE1lbW9yeUNhY2hlU3RydWN0dXJlczsKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2U7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hl
ZFJlc291cmNlQ1NTOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZUZvbnQ7
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlSW1hZ2U7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlU2NyaXB0OwotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBDYWNoZWRSZXNvdXJjZVNWRzsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3Vy
Y2VTaGFkZXI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlWFNMVDsKKyAg
ICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBPdGhlcjsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0
VHlwZSBET007CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgQ1NTOworICAgIHN0YXRpYyBN
ZW1vcnlPYmplY3RUeXBlIEJpbmRpbmc7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgTG9h
ZGVyOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIE1lbW9yeUNhY2hlU3RydWN0dXJlczsK
KyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZTsKKyAgICBzdGF0aWMg
TWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZUNTUzsKKyAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBDYWNoZWRSZXNvdXJjZUZvbnQ7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUg
Q2FjaGVkUmVzb3VyY2VJbWFnZTsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRS
ZXNvdXJjZVNjcmlwdDsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJj
ZVNWRzsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVNoYWRlcjsK
KyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVhTTFQ7CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRSb290T2JqZWN0KGNvbnN0IFQmIHQpCiAgICAg
ewpAQCAtODEsODkgKzkyLDEwMCBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9iamVjdFR5cGUsIHNpemVfdCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3du
UHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dGVkKGNvbnN0IHZvaWQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCkgPSAwOwogCiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNz
SW5mbzsKKyAgICBmcmllbmQgY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOworCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEluc3RydW1lbnRlZFBvaW50ZXIgOiBwdWJs
aWMgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGlj
aXQgSW5zdHJ1bWVudGVkUG9pbnRlcihjb25zdCBUKiBwb2ludGVyLCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSkgOiBtX3BvaW50ZXIocG9pbnRlciksIG1fb3duZXJPYmplY3RUeXBlKG93bmVy
T2JqZWN0VHlwZSkgeyB9CisgICAgICAgIGV4cGxpY2l0IEluc3RydW1lbnRlZFBvaW50ZXIoY29u
c3QgVCogcG9pbnRlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIDogbV9wb2lu
dGVyKHBvaW50ZXIpLCBtX293bmVyT2JqZWN0VHlwZShvd25lck9iamVjdFR5cGUpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpb24qKSBPVkVSUklE
RTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFQqIG1fcG9pbnRlcjsKLSAgICAgICAg
Y29uc3QgT2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlwZTsKKyAgICAgICAgY29uc3QgTWVtb3J5
T2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlwZTsKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmpl
Y3RUeXBlKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdChjb25zdCBU
JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKICAgICB7CiAgICAgICAgIE93
bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlwZSk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IE93bmluZ1RyYWl0czxU
Pjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlwZSk7IH0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBI
YXNoTWFwVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFz
aFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRDb2xs
ZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmLCBPYmplY3RUeXBlKTsKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29u
c3QgTWFwVHlwZSYsIE9iamVjdFR5cGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMaXN0SGFz
aFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiwgT2Jq
ZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYsIE9iamVjdFR5
cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7Ci0gICAgdm9pZCBhZGRSYXdCdWZmZXIoY29u
c3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVf
dCBzaXplKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9i
amVjdChjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBPd25p
bmdUcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5
cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hN
YXAoY29uc3QgSGFzaE1hcFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5
ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRI
YXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IHZv
aWQgYWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYsIE1lbW9y
eU9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBU
eXBlJiwgTWVtb3J5T2JqZWN0VHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmLCBNZW1vcnlPYmpl
Y3RUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFk
ZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYsIE1lbW9yeU9iamVjdFR5cGUsIGJv
b2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5
cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBi
b29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZv
aWQqIGNvbnN0JiBidWZmZXIsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBzaXpl
X3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0ZWQoYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0
VHlwZSwgc2l6ZSk7CiAgICAgfQogCi0gICAgZW51bSBPd25pbmdUeXBlIHsKLSAgICAgICAgYnlQ
b2ludGVyLAotICAgICAgICBieVJlZmVyZW5jZQotICAgIH07Ci0KICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgICBzdHJ1Y3QgT3duaW5nVHJhaXRzIHsgLy8gRGVmYXVsdCBieVJlZmVyZW5j
ZSBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUJiB0LCBP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1l
bnRhdGlvbiwgY29uc3QgVCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgaW5zdHJ1
bWVudGF0aW9uLT5hZGRPYmplY3RJbXBsKCZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNl
KTsgfQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxUPihpbnN0cnVtZW50YXRpb24s
ICZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNlKTsKKyAgICAgICAgfQorICAgICAgICBz
dGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRp
b24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZE9iamVjdDxU
PihpbnN0cnVtZW50YXRpb24sICZ0LCBvd25lck9iamVjdFR5cGUsIGJ5UmVmZXJlbmNlKTsKKyAg
ICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3Qg
T3duaW5nVHJhaXRzPFQqPiB7IC8vIEN1c3RvbSBieVBvaW50ZXIgaW1wbGVtZW50YXRpb24uCi0g
ICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50
YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE9iamVjdFR5cGUgb3du
ZXJPYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1w
bCh0LCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7IH0KLSAgICAgICAgc3RhdGljIHZvaWQg
YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBU
KiBjb25zdCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgaW5zdHJ1bWVudGF0aW9u
LT5hZGRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsgfQorICAgICAg
ICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8VD4oaW5zdHJ1bWVudGF0aW9uLCB0LCBv
d25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZv
aWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25z
dCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PFQ+
KGluc3RydW1lbnRhdGlvbiwgdCwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBT
dHJpbmcqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRJbnN0
cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiwgT2JqZWN0VHlwZSwg
T3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IEF0
b21pY1N0cmluZyogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB2b2lkIGFk
ZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgS1VSTCogY29uc3QmLCBPYmplY3RUeXBlLCBP
d25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChj
b25zdCBEYXRhUmVmPFQ+KiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3Qg
T3duUHRyPFQ+KiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgUmVmUHRy
PFQ+KiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE9iamVjdFR5cGUs
IE93bmluZ1R5cGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdElt
cGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxU
PiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBPYmplY3RU
eXBlLCBPd25pbmdUeXBlKTsKLQotICAgIC8vIExpbmsgdGltZSBndWFyZHMgZm9yIHNwZWNpYWwg
Y2FzZXMuCi0gICAgdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFN0cmluZyogY29uc3QmLCBPYmpl
Y3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgU3RyaW5n
SW1wbCogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB2b2lkIGFkZE9iamVj
dEltcGwoY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUp
OwotICAgIHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBLVVJMKiBjb25zdCYsIE9iamVjdFR5cGUs
IE93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwg
TWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0
VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgTWVtb3J5
T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwg
TWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2Jq
ZWN0SW1wbChjb25zdCBEYXRhUmVmPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9y
eU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdElt
cGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmlu
Z1R5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29u
c3QgUmVmUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUp
OwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
blRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5z
dHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9i
amVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpbnN0cnVtZW50
YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwodCwgb3duZXJPYmplY3RUeXBlLCBvd25p
bmdUeXBlKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvblRyYWl0czo6YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVu
dGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpbnN0cnVtZW50YXRpb24t
PmFkZE9iamVjdEltcGwodCwgb3duZXJPYmplY3RUeXBlLCBvd25pbmdUeXBlKTsKK30KKwogY2xh
c3MgTWVtb3J5T2JqZWN0SW5mbyB7CiBwdWJsaWM6Ci0gICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1v
cnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKKyAgICBNZW1vcnlPYmplY3RJbmZv
KE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBNZW1vcnlPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKICAgICAgICAgOiBtX21lbW9yeUluc3RydW1lbnRhdGlv
bihtZW1vcnlJbnN0cnVtZW50YXRpb24pCiAgICAgICAgICwgbV9vYmplY3RUeXBlKG93bmVyT2Jq
ZWN0VHlwZSkKICAgICAgICAgLCBtX29iamVjdFNpemUoMCkKICAgICB7IH0KIAotICAgIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RUeXBlOyB9CisgICAgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CiAgICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdFNpemU7IH0KIAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVt
b3J5SW5zdHJ1bWVudGF0aW9uKCkgeyByZXR1cm4gbV9tZW1vcnlJbnN0cnVtZW50YXRpb247IH0K
QEAgLTE3MSw3ICsxOTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBN
ZW1vcnlDbGFzc0luZm87CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRP
YmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBz
aXplX3QgYWN0dWFsU2l6ZSkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRP
YmplY3RJbmZvKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IGFjdHVhbFNpemUp
CiAgICAgewogICAgICAgICBpZiAoIW1fb2JqZWN0U2l6ZSkgewogICAgICAgICAgICAgbV9vYmpl
Y3RTaXplID0gYWN0dWFsU2l6ZSA/IGFjdHVhbFNpemUgOiBzaXplb2YoVCk7CkBAIC0xODEsMTQg
KzIwMywxNCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiog
bV9tZW1vcnlJbnN0cnVtZW50YXRpb247Ci0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RUeXBlIG1fb2JqZWN0VHlwZTsKKyAgICBNZW1vcnlPYmplY3RUeXBlIG1fb2JqZWN0VHlwZTsK
ICAgICBzaXplX3QgbV9vYmplY3RTaXplOwogfTsKIAogY2xhc3MgTWVtb3J5Q2xhc3NJbmZvIHsK
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBNZW1vcnlDbGFzc0luZm8o
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29uc3QgVCosIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3QgYWN0dWFsU2l6ZSA9IDAp
CisgICAgTWVtb3J5Q2xhc3NJbmZvKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8s
IGNvbnN0IFQqLCBNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBhY3R1YWxTaXpl
ID0gMCkKICAgICAgICAgOiBtX21lbW9yeU9iamVjdEluZm8obWVtb3J5T2JqZWN0SW5mbykKICAg
ICAgICAgLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlPYmplY3RJbmZvLT5tZW1vcnlJ
bnN0cnVtZW50YXRpb24oKSkKICAgICB7CkBAIC0yMTYsMTEgKzIzOCwxMSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5T2JqZWN0SW5mbzsKICAgICBN
ZW1vcnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOwotICAgIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7CisgICAgTWVtb3J5T2Jq
ZWN0VHlwZSBtX29iamVjdFR5cGU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFQq
IGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBPd25pbmdUeXBlIG93
bmluZ1R5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewogICAgIGlmIChvd25pbmdU
eXBlID09IGJ5UmVmZXJlbmNlKSB7CiAgICAgICAgIE1lbW9yeU9iamVjdEluZm8gbWVtb3J5T2Jq
ZWN0SW5mbyh0aGlzLCBvd25lck9iamVjdFR5cGUpOwpAQCAtMjMzLDcgKzI1NSw3IEBAIHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFQq
IGNvbnN0JiBvYmplY3QsIE9iCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgRGF0YVJl
ZjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE93bmluZ1R5
cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVj
dFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7CiAg
ICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQogICAgICAgICBjb3VudE9iamVjdFNpemUo
b3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwpAQCAtMjQxLDcgKzI2Myw3IEBAIHZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0
IERhdGFSZWY8VD4qIGNvbnN0JiBvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgT3du
UHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5n
VHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewog
ICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKICAgICAgICAgY291bnRPYmplY3RTaXpl
KG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKQEAgLTI0OSw3ICsyNzEsNyBAQCB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25z
dCBPd25QdHI8VD4qIGNvbnN0JiBvYgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJl
ZlB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVt
ZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2Jq
ZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsK
ICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6
ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CkBAIC0yNTcsNyArMjc5LDcgQEAg
dm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29u
c3QgUmVmUHRyPFQ+KiBjb25zdCYgb2IKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBEYXRhUmVmPFQ+KiBj
b25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25p
bmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3Qg
RGF0YVJlZjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAob3duaW5nVHlwZSA9
PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNp
emVvZigqb2JqZWN0KSk7CkBAIC0yNjUsNyArMjg3LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmIG9iamVjdCwgT2Jq
ZWMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmpl
Y3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93
bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQogICAgICAgICBj
b3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwpAQCAtMjcz
LDcgKzI5NSw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNv
bnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3Qg
UmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3du
aW5nVHlwZSBvd25pbmdUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewogICAgIGlmIChv
d25pbmdUeXBlID09IGJ5UG9pbnRlcikKICAgICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2Jq
ZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKQEAgLTI4MSw3ICszMDMsNyBAQCB2b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBv
YmplY3QsIE9iamVjdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE9iamVj
dFR5cGUgb3duZXJPYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBN
ZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdU
eXBlKQogewogICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjkxLDcgKzMxMyw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRP
YmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE9iamVjdFR5cGUgb3duCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hNYXBUeXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE1lbW9yeU9iamVjdFR5cGUg
b3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQogewogICAgIGlmICh2aXNpdGVkKCZo
YXNoTWFwKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5LDcgKzMyMSw3IEBAIHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBoYXNoTWFwLCBP
YmplY3RUeXBlIG93CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRUeXBlPgotdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIGhhc2hT
ZXQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQordm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIGhhc2hT
ZXQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQog
ewogICAgIGlmICh2aXNpdGVkKCZoYXNoU2V0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA3LDcg
KzMyOSw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoU2V0KGNvbnN0IEhh
c2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBlIG93CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDb2xsZWN0aW9uVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVt
ZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBPYmplY3RU
eXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3ZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBl
JiBjb2xsZWN0aW9uLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250
ZW50T25seSkKIHsKICAgICBpZiAodmlzaXRlZCgmY29sbGVjdGlvbikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTMxOCw3ICszNDAsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5z
dHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbAogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJ
bnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
TWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiBtYXAsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmpl
Y3RUeXBlKQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1h
cC5lbmQoKTsKICAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBt
YXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewpAQCAtMzI4LDcgKzM1MCw3IEBAIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5
cGUmIG1hcCwgT2JqZWN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPgotdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBU
eXBlJiBtYXAsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXAsIE1l
bW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICBmb3IgKHR5cGVuYW1lIE1hcFR5
cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKQEAgLTMz
Niw3ICszNTgsNyBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
TWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0VAogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMaXN0SGFzaFNldFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkTGlz
dEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmIGhhc2hTZXQsIE1lbW9yeU9i
amVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQogewogICAgIGlmICh2
aXNpdGVkKCZoYXNoU2V0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ1LDcgKzM2Nyw3IEBAIHZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNl
dFR5cGUmIGhhc2hTZXQsIE9iamVjCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBl
Pgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBl
JiB2ZWN0b3IsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQor
dm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2
ZWN0b3IsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5
KQogewogICAgIGlmICghdmVjdG9yLmRhdGEoKSB8fCB2aXNpdGVkKHZlY3Rvci5kYXRhKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0zNjYsNiArMzg4LDMyIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRh
dGlvCiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUobWVtb3J5T2Jq
ZWN0SW5mby5vYmplY3RUeXBlKCksIG1lbW9yeU9iamVjdEluZm8ub2JqZWN0U2l6ZSgpKTsKIH0K
IAorLy8gRXhwbGljaXQgc3BlY2lhbGl6YXRpb25zIGZvciBzb21lIHR5cGVzLgordGVtcGxhdGUg
PD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVj
dDxLVVJMPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBLVVJMKiBjb25zdCYsIE1lbW9y
eU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBLVVJMPihN
ZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBLVVJMKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5
cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PFN0cmluZz4oTWVtb3J5SW5zdHJ1
bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9y
eU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFp
dHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJpbmc+KE1lbW9yeUluc3RydW1lbnRh
dGlvbiosIGNvbnN0IFN0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25p
bmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6
OmFkZEluc3RydW1lbnRlZE9iamVjdDxTdHJpbmdJbXBsPihNZW1vcnlJbnN0cnVtZW50YXRpb24q
LCBjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmlu
Z1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFk
ZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJpbmdJbXBsPihNZW1vcnlJbnN0cnVtZW50YXRp
b24qLCBjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUpOworCit0ZW1wbGF0ZSA8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PEF0b21pY1N0cmluZz4oTWVtb3J5SW5zdHJ1bWVudGF0
aW9uKiwgY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9y
eU93bmluZ1R5cGUpOwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFp
dHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBBdG9taWNTdHJpbmc+KE1lbW9yeUluc3Ry
dW1lbnRhdGlvbiosIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlKTsKKworCisvLyBMaW5rIHRpbWUgZ3VhcmRzIHdpdGggbm8gYm9k
eS4KK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRPYmpl
Y3Q8S1VSTD4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgS1VSTCogY29uc3QmLCBNZW1v
cnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRPYmplY3Q8Y29uc3QgS1VSTD4oTWVtb3J5SW5zdHJ1
bWVudGF0aW9uKiwgY29uc3QgS1VSTCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFp
dHM6OmFkZE9iamVjdDxTdHJpbmc+KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFN0cmlu
ZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRl
IDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRPYmplY3Q8Y29uc3QgU3Ry
aW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5
T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRPYmplY3Q8U3RyaW5nSW1wbD4oTWVtb3J5SW5zdHJ1
bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VHJhaXRzOjphZGRPYmplY3Q8Y29uc3QgU3RyaW5nSW1wbD4oTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25p
bmdUeXBlKTsKKwordGVtcGxhdGUgPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6
OmFkZE9iamVjdDxBdG9taWNTdHJpbmc+KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IEF0
b21pY1N0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsK
K3RlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRPYmplY3Q8
Y29uc3QgQXRvbWljU3RyaW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBBdG9taWNT
dHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCmluZGV4IDQwOGY2ZjE1OTViMDY5OWIz
ZGFkNmE2ODg4OGJkZDVhMmJhOWExNWIuLjM2YzQzNTE5ODMzM2UwMzk0ZjBiMTcwYjU2MWEyNjYw
MmNiMTg1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsOjpwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpCiAg
ICAgfQogfQogCi12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OmNvdW50T2JqZWN0U2l6
ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsOjpjb3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBl
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBUeXBlVG9TaXplTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV90b3RhbFNpemVzLmFkZChvYmplY3RUeXBlLCBzaXplKTsKICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmgKaW5kZXggOWYzZWVjOGJkMGI3MzVhNDY3MzdmZGJhMzZkOTVkYmUzNDVl
ZDFiZi4uODVjYmM1ZTQ1MDk1ZTJkMDBmYWUxOGY3OTNiY2UwYzUxM2ViZWFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsKFZpc2l0ZWRPYmplY3RzJik7CiAKICAgICBzaXplX3Qgc2VsZlNpemUoKSBjb25z
dDsKLSAgICBzaXplX3QgdG90YWxTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29uc3QKKyAg
ICBzaXplX3QgdG90YWxTaXplKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29uc3QKICAg
ICB7CiAgICAgICAgIFR5cGVUb1NpemVNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3RvdGFsU2l6
ZXMuZmluZChvYmplY3RUeXBlKTsKICAgICAgICAgcmV0dXJuIGkgPT0gbV90b3RhbFNpemVzLmVu
ZCgpID8gMCA6IGktPnNlY29uZDsKQEAgLTYxLDEyICs2MSwxMiBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwg
c2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE1lbW9y
eU9iamVjdFR5cGUsIHNpemVfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlZmVySW5z
dHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpIE9W
RVJSSURFOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE9iamVjdFR5cGUsIHNpemVfdD4gVHlwZVRv
U2l6ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90PiBU
eXBlVG9TaXplTWFwOwogICAgIFR5cGVUb1NpemVNYXAgbV90b3RhbFNpemVzOwogICAgIFZpc2l0
ZWRPYmplY3RzJiBtX3Zpc2l0ZWRPYmplY3RzOwogICAgIFZlY3RvcjxPd25QdHI8SW5zdHJ1bWVu
dGVkUG9pbnRlckJhc2U+ID4gbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162241</attachid>
            <date>2012-09-05 07:23:39 -0700</date>
            <delta_ts>2012-09-05 07:49:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95834-20120905182320.patch</filename>
            <type>text/plain</type>
            <size>40366</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZGM2YWJmNzVlNjE5
NzEzMDgzYmNlYzNiZDIyZDVhNGE4YzM1My4uOGI2YTRjMjBjZDFhNzhkNmUxN2VlZDQxZGRjYWNm
MTQwOTNkNmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA5LTA1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IGV4dHJhY3Qgb3ZlcmxvYWRlZCBpbnN0cnVtZW50YXRpb24gbWVtYmVycyBmb3Ig
V2ViQ29yZSBjbGFzc2VzIGZyb20gY29yZSBOTUkgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSdkIGxpa2UgdG8gcmVtb3ZlIGN1c3RvbSBpbnN0
cnVtZW50YXRpb24gbWV0aG9kcyBmcm9tIE1lbW9yeUluc3RydW1lbnRhdGlvbiBjbGFzcworICAg
ICAgICBiZWZvcmUgdXBzdHJlYW1pbmcgaXQgdG8gV1RGLiBJJ3ZlIGRvbmUgaXQgd2l0aCBoZWxw
IG9mIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0cyB0ZW1wbGF0ZSBoZWxwZXIuCisKKyAgICAg
ICAgVW5mb3J0dW5hdGVseSBpdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRlbXBsYXRlIGNsYXNz
IGJlY2F1c2UgbWFjLWV3cyBib3QgcmVwb3J0cyB3YXJuaW5nOiByZWR1bmRhbnQgcmVkZWNsYXJh
dGlvbiBvZiAnc29tZXRoaW5nJyBpbiBzYW1lIHNjb3BlLgorICAgICAgICBJJ3ZlIGZvdW5kIHRo
YXQgaXQgaXMgYW4gb2xkIHByb2JsZW0gaW4gZ2NjIHRoYXQgaXMgZm9yY2VkIGJ5IC1XcmVkdW5k
YW50LWRlY2xzIGZsYWcgb24gdGhlIGJvdC4gU2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxs
YS9zaG93X2J1Zy5jZ2k/aWQ9MTU4NjcKKworICAgICAgICAqIGRvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6OjphZGRJbnN0cnVtZW50ZWRPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFp
dHMpOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRlcjo6SW5zdHJ1bWVudGVk
UG9pbnRlcik6CisgICAgICAgIChJbnN0cnVtZW50ZWRQb2ludGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkUmF3QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3duaW5nVHJhaXRzOjphZGRJbnN0cnVt
ZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
d25pbmdUcmFpdHM6OmFkZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjo6OmFkZEluc3RydW1l
bnRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjo6OmFkZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpNZW1vcnlPYmplY3RJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Om9iamVjdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0T2JqZWN0SW5mbyk6CisgICAgICAgIChNZW1vcnlPYmpl
Y3RJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6TWVtb3J5Q2xhc3NJ
bmZvKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaE1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
TWFwRW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZEluc3RydW1lbnRlZE1hcFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6YWRkVmVjdG9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b25JbXBsOjpjb3VudE9iamVjdFNpemUpOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b25JbXBsOjp0b3RhbFNpemUpOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCk6
CisKIDIwMTItMDktMDQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSTogcmVwbGFjZSBPYmplY3RUeXBlIGVudW0gd2l0
aCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nIGlkZW50aWZpZXJzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA3OTBhY2U1Njk3MGNkNWMyODY4
NThiN2ZmZDY3N2ZhOTFjZTQwZGY0Li45ZWI3ZGRmYWZlZWU2MmJmZWZmNTc3Y2EwYzY3ZDI3YmFh
YmZmNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtMzcsNTEgKzM3LDcxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hh
ciogTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlciA9ICJPdGhlciI7Ci1jb25zdCBjaGFyKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSA9ICJET00iOwotY29uc3QgY2hhciogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDU1MgPSAiQ1NTIjsKLWNvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6QmluZGluZyA9ICJCaW5kaW5nIjsKLWNvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6TG9hZGVyID0gIkxvYWRlciI7Ci1jb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyA9ICJNZW1vcnlDYWNoZVN0cnVjdHVyZXMiOwotY29u
c3QgY2hhciogTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSA9ICJDYWNoZWRS
ZXNvdXJjZSI7Ci1jb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291
cmNlQ1NTID0gIkNhY2hlZFJlc291cmNlQ1NTIjsKLWNvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VGb250ID0gIkNhY2hlZFJlc291cmNlRm9udCI7Ci1jb25z
dCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlSW1hZ2UgPSAiQ2Fj
aGVkUmVzb3VyY2VJbWFnZSI7Ci1jb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNh
Y2hlZFJlc291cmNlU2NyaXB0ID0gIkNhY2hlZFJlc291cmNlU2NyaXB0IjsKLWNvbnN0IGNoYXIq
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTVkcgPSAiQ2FjaGVkUmVzb3Vy
Y2VTVkciOwotY29uc3QgY2hhciogTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJj
ZVNoYWRlciA9ICJDYWNoZWRSZXNvdXJjZVNoYWRlciI7Ci1jb25zdCBjaGFyKiBNZW1vcnlJbnN0
cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlWFNMVCA9ICJDYWNoZWRSZXNvdXJjZVhTTFQiOwor
TWVtb3J5T2JqZWN0VHlwZSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyID0gIk90aGVyIjsK
K01lbW9yeU9iamVjdFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00gPSAiRE9NIjsKK01l
bW9yeU9iamVjdFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MgPSAiQ1NTIjsKK01lbW9y
eU9iamVjdFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nID0gIkJpbmRpbmciOwor
TWVtb3J5T2JqZWN0VHlwZSBNZW1vcnlJbnN0cnVtZW50YXRpb246OkxvYWRlciA9ICJMb2FkZXIi
OworTWVtb3J5T2JqZWN0VHlwZSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3Ry
dWN0dXJlcyA9ICJNZW1vcnlDYWNoZVN0cnVjdHVyZXMiOworTWVtb3J5T2JqZWN0VHlwZSBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlID0gIkNhY2hlZFJlc291cmNlIjsKK01l
bW9yeU9iamVjdFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUNTUyA9
ICJDYWNoZWRSZXNvdXJjZUNTUyI7CitNZW1vcnlPYmplY3RUeXBlIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q2FjaGVkUmVzb3VyY2VGb250ID0gIkNhY2hlZFJlc291cmNlRm9udCI7CitNZW1vcnlP
YmplY3RUeXBlIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFnZSA9ICJD
YWNoZWRSZXNvdXJjZUltYWdlIjsKK01lbW9yeU9iamVjdFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDYWNoZWRSZXNvdXJjZVNjcmlwdCA9ICJDYWNoZWRSZXNvdXJjZVNjcmlwdCI7CitNZW1v
cnlPYmplY3RUeXBlIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTVkcgPSAi
Q2FjaGVkUmVzb3VyY2VTVkciOworTWVtb3J5T2JqZWN0VHlwZSBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNhY2hlZFJlc291cmNlU2hhZGVyID0gIkNhY2hlZFJlc291cmNlU2hhZGVyIjsKK01lbW9y
eU9iamVjdFR5cGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTFQgPSAi
Q2FjaGVkUmVzb3VyY2VYU0xUIjsKIAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZElu
c3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBPYmplY3RU
eXBlIG9iamVjdFR5cGUsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlPD4gdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxTdHJpbmc+
KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBTdHJpbmcqIGNv
bnN0JiBzdHJpbmcsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25p
bmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgaWYgKCFzdHJpbmcgfHwgdmlzaXRlZChzdHJpbmcp
KQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0
PGNvbnN0IFN0cmluZz4oaW5zdHJ1bWVudGF0aW9uLCBzdHJpbmcsIG93bmVyT2JqZWN0VHlwZSwg
b3duaW5nVHlwZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25U
cmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJpbmc+KE1lbW9yeUluc3RydW1l
bnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0JiBzdHJpbmcsIE1l
bW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5
cGUpCit7CisgICAgaWYgKCFzdHJpbmcgfHwgaW5zdHJ1bWVudGF0aW9uLT52aXNpdGVkKHN0cmlu
ZykpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCi0g
ICAgICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzaXplb2YoU3RyaW5nKSk7Ci0gICAg
YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChzdHJpbmctPmltcGwoKSwgb2JqZWN0VHlwZSwgYnlQ
b2ludGVyKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUob3duZXJP
YmplY3RUeXBlLCBzaXplb2YoU3RyaW5nKSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0
cnVtZW50ZWRPYmplY3Qoc3RyaW5nLT5pbXBsKCksIG93bmVyT2JqZWN0VHlwZSk7Cit9CisKK3Rl
bXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRl
ZE9iamVjdDxTdHJpbmdJbXBsPihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlv
biwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZ0ltcGwsIE1lbW9yeU9iamVjdFR5cGUg
b3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8Y29uc3QgU3Ry
aW5nSW1wbD4oaW5zdHJ1bWVudGF0aW9uLCBzdHJpbmdJbXBsLCBvd25lck9iamVjdFR5cGUsIG93
bmluZ1R5cGUpOwogfQogCi12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbChjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYgc3RyaW5nSW1wbCwgT2JqZWN0
VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlKQordGVtcGxhdGU8PiB2b2lkIE1lbW9yeUluc3Ry
dW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PGNvbnN0IFN0cmluZ0ltcGw+
KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBTdHJpbmdJbXBs
KiBjb25zdCYgc3RyaW5nSW1wbCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1l
bW9yeU93bmluZ1R5cGUpCiB7Ci0gICAgaWYgKCFzdHJpbmdJbXBsIHx8IHZpc2l0ZWQoc3RyaW5n
SW1wbCkpCisgICAgaWYgKCFzdHJpbmdJbXBsIHx8IGluc3RydW1lbnRhdGlvbi0+dmlzaXRlZChz
dHJpbmdJbXBsKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RU
eXBlLCBzdHJpbmdJbXBsLT5zaXplSW5CeXRlcygpKTsKKyAgICBpbnN0cnVtZW50YXRpb24tPmNv
dW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHN0cmluZ0ltcGwtPnNpemVJbkJ5dGVzKCkp
OwogfQogCi12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0
SW1wbChjb25zdCBLVVJMKiBjb25zdCYgdXJsLCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIE93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25U
cmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxLVVJMPihNZW1vcnlJbnN0cnVtZW50YXRpb24q
IGluc3RydW1lbnRhdGlvbiwgY29uc3QgS1VSTCogY29uc3QmIHVybCwgTWVtb3J5T2JqZWN0VHlw
ZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKLSAgICBp
ZiAoIXVybCB8fCB2aXNpdGVkKHVybCkpCisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRz
OjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8Y29uc3QgS1VSTD4oaW5zdHJ1bWVudGF0aW9uLCB1cmws
IG93bmVyT2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBLVVJM
PihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgS1VSTCogY29u
c3QmIHVybCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5
cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpZiAoIXVybCB8fCBpbnN0cnVtZW50YXRpb24tPnZpc2l0
ZWQodXJsKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRl
cikKLSAgICAgICAgY291bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIHNpemVvZihLVVJMKSk7Ci0g
ICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KHVybC0+c3RyaW5nKCksIG9iamVjdFR5cGUpOworICAg
ICAgICBpbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNp
emVvZihLVVJMKSk7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3Qo
dXJsLT5zdHJpbmcoKSwgb3duZXJPYmplY3RUeXBlKTsKICAgICBpZiAodXJsLT5pbm5lclVSTCgp
KQotICAgICAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3QodXJsLT5pbm5lclVSTCgpLCBvYmplY3RU
eXBlKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QodXJs
LT5pbm5lclVSTCgpLCBvd25lck9iamVjdFR5cGUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8QXRvbWljU3Ry
aW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nKiBjb25zdCYgYXRvbWljU3RyaW5nLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0
VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQoreworICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PGNvbnN0IEF0b21pY1N0cmluZz4o
aW5zdHJ1bWVudGF0aW9uLCBhdG9taWNTdHJpbmcsIG93bmVyT2JqZWN0VHlwZSwgb3duaW5nVHlw
ZSk7CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmIGF0b21pY1N0cmluZywgT2JqZWN0VHlw
ZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit0ZW1wbGF0ZTw+IHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8Y29uc3QgQXRv
bWljU3RyaW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3Qg
QXRvbWljU3RyaW5nKiBjb25zdCYgYXRvbWljU3RyaW5nLCBNZW1vcnlPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewotICAgIGFkZEluc3Ry
dW1lbnRlZE9iamVjdEltcGwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBTdHJpbmcqIGNvbnN0Pihh
dG9taWNTdHJpbmcpLCBvYmplY3RUeXBlLCBvd25pbmdUeXBlKTsKKyAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJpbmc+KGluc3Ry
dW1lbnRhdGlvbiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTdHJpbmcqIGNvbnN0PihhdG9taWNT
dHJpbmcpLCBvd25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggMDc5NjM1MDQxZDdjZTFjYmQyMzdjMTMxOTM4ZjJhMWI5YmQ0ZTU4OC4uM2UwMDgyYmNiY2Rh
NzBjYzIxMTY5NWZhOTJhMjVhNzAyZWE1MDU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaApAQCAtNDAsMzggKzQwLDQ5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWY7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBEYXRhUmVmOwogY2xhc3MgS1VSTDsKIGNsYXNzIE1lbW9yeU9iamVj
dEluZm87CitjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb247CisKK3R5cGVkZWYgY29uc3QgY2hh
ciogTWVtb3J5T2JqZWN0VHlwZTsKK2VudW0gTWVtb3J5T3duaW5nVHlwZSB7CisgICAgYnlQb2lu
dGVyLAorICAgIGJ5UmVmZXJlbmNlCit9OworCitjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25U
cmFpdHMgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFk
ZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBUKiBjb25z
dCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBj
b25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworfTsK
IAogY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5N
ZW1vcnlJbnN0cnVtZW50YXRpb24oKSB7IH0KIAotICAgIHR5cGVkZWYgY29uc3QgY2hhciogT2Jq
ZWN0VHlwZTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBPdGhlcjsKLSAgICBzdGF0aWMgY29u
c3QgY2hhciogRE9NOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDU1M7Ci0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIEJpbmRpbmc7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIExvYWRlcjsKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOwotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBDYWNoZWRSZXNvdXJjZTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVz
b3VyY2VDU1M7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlRm9udDsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2VJbWFnZTsKLSAgICBzdGF0aWMgY29u
c3QgY2hhciogQ2FjaGVkUmVzb3VyY2VTY3JpcHQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIENh
Y2hlZFJlc291cmNlU1ZHOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZVNo
YWRlcjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2VYU0xUOwotCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkUm9vdE9iamVjdChjb25zdCBUJiB0KQorICAg
IHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIE90aGVyOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RU
eXBlIERPTTsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDU1M7CisgICAgc3RhdGljIE1l
bW9yeU9iamVjdFR5cGUgQmluZGluZzsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBMb2Fk
ZXI7CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOwor
ICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNlOworICAgIHN0YXRpYyBN
ZW1vcnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNlQ1NTOworICAgIHN0YXRpYyBNZW1vcnlPYmpl
Y3RUeXBlIENhY2hlZFJlc291cmNlRm9udDsKKyAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBD
YWNoZWRSZXNvdXJjZUltYWdlOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJl
c291cmNlU2NyaXB0OworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNl
U1ZHOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNlU2hhZGVyOwor
ICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNlWFNMVDsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkUm9vdE9iamVjdChjb25zdCBUJiB0KQogICAgIHsK
ICAgICAgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KHQsIE90aGVyKTsKICAgICAgICAgcHJvY2Vz
c0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29udGFpbmVyPiBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUo
Y29uc3QgQ29udGFpbmVyJiwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb250YWluZXI+IHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ29udGFpbmVyU2l6
ZShjb25zdCBDb250YWluZXImLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgY2xhc3MgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgewpAQCAtODEsODkgKzkyLDEw
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY291
bnRPYmplY3RTaXplKE9iamVjdFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b3VudE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihQYXNzT3duUHRyPEluc3RydW1lbnRlZFBv
aW50ZXJCYXNlPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJz
KCkgPSAwOwogCiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNzSW5mbzsKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgSW5zdHJ1bWVudGVkUG9pbnRlciA6IHB1YmxpYyBJbnN0cnVt
ZW50ZWRQb2ludGVyQmFzZSB7CisgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlv
blRyYWl0czsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEluc3RydW1lbnRlZFBv
aW50ZXIgOiBwdWJsaWMgSW5zdHJ1bWVudGVkUG9pbnRlckJhc2UgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgZXhwbGljaXQgSW5zdHJ1bWVudGVkUG9pbnRlcihjb25zdCBUKiBwb2ludGVyLCBPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgOiBtX3BvaW50ZXIocG9pbnRlciksIG1fb3duZXJPYmpl
Y3RUeXBlKG93bmVyT2JqZWN0VHlwZSkgeyB9CisgICAgICAgIGV4cGxpY2l0IEluc3RydW1lbnRl
ZFBvaW50ZXIoY29uc3QgVCogcG9pbnRlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUpIDogbV9wb2ludGVyKHBvaW50ZXIpLCBtX293bmVyT2JqZWN0VHlwZShvd25lck9iamVjdFR5
cGUpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRp
b24qKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFQqIG1fcG9pbnRl
cjsKLSAgICAgICAgY29uc3QgT2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlwZTsKKyAgICAgICAg
Y29uc3QgTWVtb3J5T2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlwZTsKICAgICB9OwogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2Jq
ZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQogICAgIHsK
ICAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RU
eXBlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVt
ZW50ZWRPYmplY3QoY29uc3QgVCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgT3du
aW5nVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RU
eXBlKTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRIYXNo
TWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZh
bHNlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaFNl
dChjb25zdCBIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxz
ZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2b2lkIGFkZEluc3Ry
dW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmLCBPYmplY3RUeXBlLCBib29s
IGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2
b2lkIGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYsIE9iamVjdFR5cGUp
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1h
cFZhbHVlcyhjb25zdCBNYXBUeXBlJiwgT2JqZWN0VHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNl
dFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBl
JiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLSAgICB2b2lkIGFkZFJh
d0J1ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBPYmplY3RUeXBlIG93bmVyT2JqZWN0
VHlwZSwgc2l6ZV90IHNpemUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUpIHsgT3duaW5nVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QodGhpcywgdCwgb3du
ZXJPYmplY3RUeXBlKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lk
IGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNv
bnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2
b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29s
IGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25U
eXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUm
LCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25z
dCBNYXBUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFw
VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYsIE1lbW9y
eU9iamVjdFR5cGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9p
ZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmLCBNZW1vcnlPYmplY3RUeXBl
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rv
clR5cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmLCBNZW1vcnlPYmplY3RUeXBl
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0
IHZvaWQqIGNvbnN0JiBidWZmZXIsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBz
aXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0ZWQoYnVmZmVy
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2Jq
ZWN0VHlwZSwgc2l6ZSk7CiAgICAgfQogCi0gICAgZW51bSBPd25pbmdUeXBlIHsKLSAgICAgICAg
YnlQb2ludGVyLAotICAgICAgICBieVJlZmVyZW5jZQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBPd25pbmdU
cmFpdHMgeyAvLyBEZWZhdWx0IGJ5UmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLgotICAgICAgICBz
dGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBp
bnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7
IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbCgmdCwgb3duZXJPYmpl
Y3RUeXBlLCBieVJlZmVyZW5jZSk7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkT2JqZWN0KE1l
bW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUJiB0LCBPYmplY3RU
eXBlIG93bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwoJnQs
IG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGFk
ZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlv
biwgY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVu
dGVkT2JqZWN0PFQ+KGluc3RydW1lbnRhdGlvbiwgJnQsIG93bmVyT2JqZWN0VHlwZSwgYnlSZWZl
cmVuY2UpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJ
bnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PFQ+KGluc3RydW1lbnRhdGlvbiwgJnQsIG93bmVy
T2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOworICAgICAgICB9CiAgICAgfTsKIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93
bmluZ1RyYWl0czxUKj4geyAvLyBDdXN0b20gYnlQb2ludGVyIGltcGxlbWVudGF0aW9uLgotICAg
ICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0
aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
dCwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFk
ZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCog
Y29uc3QmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+
YWRkT2JqZWN0SW1wbCh0LCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7IH0KKyAgICAgICAg
c3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiog
aW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlv
blRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PFQ+KGluc3RydW1lbnRhdGlvbiwgdCwgb3du
ZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lk
IGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3Qg
VCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQorICAgICAgICB7
CisgICAgICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZE9iamVjdDxUPihp
bnN0cnVtZW50YXRpb24sIHQsIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKKyAgICAgICAg
fQogICAgIH07CiAKLSAgICB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgU3Ry
aW5nKiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAgIHZvaWQgYWRkSW5zdHJ1
bWVudGVkT2JqZWN0SW1wbChjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE9iamVjdFR5cGUsIE93
bmluZ1R5cGUpOwotICAgIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBBdG9t
aWNTdHJpbmcqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRJ
bnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IEtVUkwqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3du
aW5nVHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVk
T2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYsIE9iamVjdFR5cGUsIE93bmluZ1R5cGUpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29u
c3QgRGF0YVJlZjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IE93
blB0cjxUPiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxU
PiogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsKLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBPYmplY3RUeXBlLCBP
d25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBs
KGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4q
IGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlw
ZSwgT3duaW5nVHlwZSk7Ci0KLSAgICAvLyBMaW5rIHRpbWUgZ3VhcmRzIGZvciBzcGVjaWFsIGNh
c2VzLgotICAgIHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBTdHJpbmcqIGNvbnN0JiwgT2JqZWN0
VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFN0cmluZ0lt
cGwqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Ci0gICAgdm9pZCBhZGRPYmplY3RJ
bXBsKGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBPYmplY3RUeXBlLCBPd25pbmdUeXBlKTsK
LSAgICB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgS1VSTCogY29uc3QmLCBPYmplY3RUeXBlLCBP
d25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRl
ZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25p
bmdUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9i
amVjdEltcGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1v
cnlPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUs
IE1lbW9yeU93bmluZ1R5cGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0
VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lk
IGFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwo
Y29uc3QgRGF0YVJlZjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdU
eXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdEltcGwoY29uc3Qg
T3duUHRyPFQ+KiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8
VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFk
ZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlv
biwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRJ
bnN0cnVtZW50ZWRPYmplY3RJbXBsKHQsIG93bmVyT2JqZWN0VHlwZSwgb3duaW5nVHlwZSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czo6YWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25z
dCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdElt
cGwodCwgb3duZXJPYmplY3RUeXBlLCBvd25pbmdUeXBlKTsKK30KKwogY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbyB7CiBwdWJsaWM6Ci0gICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50
YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKKyAgICBNZW1vcnlPYmplY3RJbmZvKE1lbW9yeUluc3Ry
dW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBNZW1vcnlPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSkKICAgICAgICAgOiBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlJbnN0
cnVtZW50YXRpb24pCiAgICAgICAgICwgbV9vYmplY3RUeXBlKG93bmVyT2JqZWN0VHlwZSkKICAg
ICAgICAgLCBtX29iamVjdFNpemUoMCkKICAgICB7IH0KIAotICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBl
OyB9CisgICAgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3RUeXBlOyB9CiAgICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25zdCB7IHJldHVybiBtX29i
amVjdFNpemU7IH0KIAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKCkgeyByZXR1cm4gbV9tZW1vcnlJbnN0cnVtZW50YXRpb247IH0KQEAgLTE3MSw3ICsx
OTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlDbGFzc0lu
Zm87CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRPYmplY3RJbmZvKE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3QgYWN0dWFs
U2l6ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydE9iamVjdEluZm8oTWVt
b3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3QgYWN0dWFsU2l6ZSkKICAgICB7CiAgICAg
ICAgIGlmICghbV9vYmplY3RTaXplKSB7CiAgICAgICAgICAgICBtX29iamVjdFNpemUgPSBhY3R1
YWxTaXplID8gYWN0dWFsU2l6ZSA6IHNpemVvZihUKTsKQEAgLTE4MSwxNCArMjAzLDE0IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbjsKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgbV9vYmpl
Y3RUeXBlOworICAgIE1lbW9yeU9iamVjdFR5cGUgbV9vYmplY3RUeXBlOwogICAgIHNpemVfdCBt
X29iamVjdFNpemU7CiB9OwogCiBjbGFzcyBNZW1vcnlDbGFzc0luZm8gewogcHVibGljOgotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE1lbW9yeUNsYXNzSW5mbyhNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvLCBjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBhY3R1YWxTaXplID0gMCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIE1lbW9yeUNsYXNzSW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvLCBjb25zdCBUKiwgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXpl
X3QgYWN0dWFsU2l6ZSA9IDApCiAgICAgICAgIDogbV9tZW1vcnlPYmplY3RJbmZvKG1lbW9yeU9i
amVjdEluZm8pCiAgICAgICAgICwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5T2JqZWN0
SW5mby0+bWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkpCiAgICAgewpAQCAtMTk2LDMxICsyMTgsMzEg
QEAgcHVibGljOgogICAgICAgICBtX29iamVjdFR5cGUgPSBtZW1vcnlPYmplY3RJbmZvLT5vYmpl
Y3RUeXBlKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlv
bi0+YWRkSW5zdHJ1bWVudGVkT2JqZWN0KG1lbWJlciwgbV9vYmplY3RUeXBlKTsgfQotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBNPiB2b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIpIHsgbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdChtZW1iZXIsIG1fb2JqZWN0VHlwZSk7IH0K
LQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRIYXNoTWFwKGNv
bnN0IEhhc2hNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEhhc2hN
YXAobWFwLCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhh
c2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaENvdW50
ZWRTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+
YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaFNldChjb25zdCBIYXNo
U2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRD
b2xsZWN0aW9uKHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZFZlY3Rvcihjb25zdCBWZWN0b3JU
eXBlJiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENv
bGxlY3Rpb24odmVjdG9yLCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkVmVjdG9yUHRyKGNvbnN0IE93
blB0cjxWZWN0b3JUeXBlPiYgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJ
bnN0cnVtZW50ZWRDb2xsZWN0aW9uKCp2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2UpOyB9Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkVmVj
dG9yUHRyKGNvbnN0IFZlY3RvclR5cGUqIGNvbnN0JiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oKnZlY3RvciwgbV9vYmplY3RUeXBl
LCBmYWxzZSk7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtYXAsIG1fb2JqZWN0VHlwZSk7IH0K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBW
YWx1ZXMoY29uc3QgTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJ
bnN0cnVtZW50ZWRNYXBWYWx1ZXMobWFwLCBtX29iamVjdFR5cGUpOyB9Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0
SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkTGlzdEhhc2hT
ZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZl
Y3RvclR5cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+YWRkVmVjdG9yKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0cnVl
KTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZFZlY3RvclB0
cihjb25zdCBWZWN0b3JUeXBlKiBjb25zdCB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmFkZFZlY3RvcigqdmVjdG9yLCBtX29iamVjdFR5cGUsIGZhbHNlKTsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE0+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IE0mIG1lbWJl
cikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkT2JqZWN0KG1lbWJl
ciwgbV9vYmplY3RUeXBlKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE0+IHZvaWQgYWRkTWVt
YmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0
KG1lbWJlciwgbV9vYmplY3RUeXBlKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaE1h
cFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoTWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3Qg
SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaFNldChz
ZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0
VHlwZT4gdm9pZCBhZGRIYXNoQ291bnRlZFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVl
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEluc3RydW1l
bnRlZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRh
dGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRl
ZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24odmVjdG9yLCBtX29iamVjdFR5cGUsIHRydWUp
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRWZWN0b3JQdHIoY29uc3QgT3duUHRyPFZlY3RvclR5cGU+JiB2ZWN0b3IpIHsgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oKnZlY3RvciwgbV9vYmpl
Y3RUeXBlLCBmYWxzZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lk
IGFkZEluc3RydW1lbnRlZFZlY3RvclB0cihjb25zdCBWZWN0b3JUeXBlKiBjb25zdCYgdmVjdG9y
KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKCp2
ZWN0b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2UpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFw
VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCkg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtYXAs
IG1fb2JqZWN0VHlwZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFk
ZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0
cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtYXAsIG1fb2JqZWN0VHlwZSk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhh
c2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmFkZExpc3RIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUm
IHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkVmVjdG9yKHZlY3RvciwgbV9v
YmplY3RUeXBlLCB0cnVlKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZv
aWQgYWRkVmVjdG9yUHRyKGNvbnN0IFZlY3RvclR5cGUqIGNvbnN0IHZlY3RvcikgeyBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+YWRkVmVjdG9yKCp2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2Up
OyB9CiAgICAgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgc2l6
ZV90IHNpemUpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFJhd0J1ZmZlcihidWZmZXIs
IG1fb2JqZWN0VHlwZSwgc2l6ZSk7IH0KIAogcHJpdmF0ZToKICAgICBNZW1vcnlPYmplY3RJbmZv
KiBtX21lbW9yeU9iamVjdEluZm87CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9y
eUluc3RydW1lbnRhdGlvbjsKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUg
bV9vYmplY3RUeXBlOworICAgIE1lbW9yeU9iamVjdFR5cGUgbV9vYmplY3RUeXBlOwogfTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBs
KGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0g
YnlSZWZlcmVuY2UpIHsKICAgICAgICAgTWVtb3J5T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZv
KHRoaXMsIG93bmVyT2JqZWN0VHlwZSk7CkBAIC0yMzIsNTYgKzI1NCw1NiBAQCB2b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBUKiBjb25z
dCYgb2JqZWN0LCBPYgogICAgIH0KIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBEYXRh
UmVmPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5n
VHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNv
bnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25p
bmdUeXBlIG93bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQog
ICAgICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkp
OwogICAgIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmpl
Y3RUeXBlLCBieVBvaW50ZXIpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IE93blB0
cjxUPiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE93bmluZ1R5
cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdU
eXBlIG93bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQogICAg
ICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwog
ICAgIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RU
eXBlLCBieVBvaW50ZXIpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxU
PiogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE93bmluZ1R5cGUg
b3duaW5nVHlwZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBv
YmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBl
IG93bmluZ1R5cGUpCiB7CiAgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQogICAgICAg
ICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwogICAg
IGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RUeXBl
LCBieVBvaW50ZXIpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IERhdGFSZWY8VD4qIGNvbnN0JiBvYmpl
Y3QsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dEltcGwoY29uc3QgRGF0YVJlZjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBv
d25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAo
b3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9i
amVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CiAgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdl
dCgpLCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgT3du
UHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5n
VHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwg
TWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5n
VHlwZSkKIHsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIpCiAgICAgICAgIGNvdW50
T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0KSk7CiAgICAgYWRkT2Jq
ZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9i
amVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxU
PiogY29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9y
eU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50
ZXIpCiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2Jq
ZWN0KSk7CiAgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25lck9iamVjdFR5cGUs
IGJ5UG9pbnRlcik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwgT2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25z
dCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVt
b3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQogewogICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQo
b2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxLDcgKzMxMyw3IEBAIHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE9i
amVjdFR5cGUgb3duCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hNYXBUeXBlPgotdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hN
YXAsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQordm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hN
YXAsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQog
ewogICAgIGlmICh2aXNpdGVkKCZoYXNoTWFwKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5LDE1
ICszMjEsMTUgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3Qg
SGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVjdFR5cGUgb3cKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFNldFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaFNldChj
b25zdCBIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJv
b2wgY29udGVudE9ubHkpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaFNldChj
b25zdCBIYXNoU2V0VHlwZSYgaGFzaFNldCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CiAgICAgaWYgKHZpc2l0ZWQoJmhhc2hTZXQpKQogICAg
ICAgICByZXR1cm47CiAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgY2FsY3Vs
YXRlQ29udGFpbmVyU2l6ZShoYXNoU2V0LCBjb250ZW50T25seSkpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwg
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJ
bnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBN
ZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsKICAg
ICBpZiAodmlzaXRlZCgmY29sbGVjdGlvbikpCiAgICAgICAgIHJldHVybjsKQEAgLTMxNyw4ICsz
MzksOCBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkQ29sbGVj
dGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbAogICAgICAgICBhZGRJbnN0cnVtZW50ZWRP
YmplY3QoKmksIG93bmVyT2JqZWN0VHlwZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBNYXBU
eXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcEVudHJp
ZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKK3RlbXBs
YXRlPHR5cGVuYW1lIE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5z
dHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiBtYXAsIE1lbW9yeU9iamVjdFR5cGUg
b3duZXJPYmplY3RUeXBlKQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1hcC5lbmQoKTsKICAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewpAQCAtMzI3LDggKzM0OSw4IEBA
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNv
bnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0CiAgICAgfQogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
TWFwVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBW
YWx1ZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0VHlw
ZSBvd25lck9iamVjdFR5cGUpCiB7CiAgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWFwLmVuZCgpOwogICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRl
cmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQpAQCAtMzM2LDcgKzM1OCw3IEBA
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29u
c3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RIYXNo
U2V0VHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldChjb25z
dCBMaXN0SGFzaFNldFR5cGUmIGhhc2hTZXQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBi
b29sIGNvbnRlbnRPbmx5KQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZExpc3RIYXNo
U2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgaGFzaFNldCwgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CiAgICAgaWYgKHZpc2l0ZWQoJmhhc2hT
ZXQpKQogICAgICAgICByZXR1cm47CkBAIC0zNDQsMTUgKzM2NiwxNSBAQCB2b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNo
U2V0LCBPYmplYwogICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemUpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yLCBPYmplY3RUeXBlIG93
bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3Rv
clR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkVmVjdG9yKGNvbnN0IFZlY3Rv
clR5cGUmIHZlY3RvciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29u
dGVudE9ubHkpCiB7CiAgICAgaWYgKCF2ZWN0b3IuZGF0YSgpIHx8IHZpc2l0ZWQodmVjdG9yLmRh
dGEoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RU
eXBlLCBjYWxjdWxhdGVDb250YWluZXJTaXplKHZlY3RvciwgY29udGVudE9ubHkpKTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5l
cj4KIHNpemVfdCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmNhbGN1bGF0ZUNvbnRhaW5lclNpemUo
Y29uc3QgQ29udGFpbmVyJiBjb250YWluZXIsIGJvb2wgY29udGVudE9ubHkpCiB7CiAgICAgcmV0
dXJuIChjb250ZW50T25seSA/IDAgOiBzaXplb2YoY29udGFpbmVyKSkgKyBjb250YWluZXIuY2Fw
YWNpdHkoKSAqIHNpemVvZih0eXBlbmFtZSBDb250YWluZXI6OlZhbHVlVHlwZSk7CkBAIC0zNjYs
NiArMzg4LDMyIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2lu
dGVyPFQ+Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGlvCiAgICAgbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5jb3VudE9iamVjdFNpemUobWVtb3J5T2JqZWN0SW5mby5vYmplY3RUeXBlKCksIG1l
bW9yeU9iamVjdEluZm8ub2JqZWN0U2l6ZSgpKTsKIH0KIAorLy8gRXhwbGljaXQgc3BlY2lhbGl6
YXRpb25zIGZvciBzb21lIHR5cGVzLgordGVtcGxhdGU8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PEtVUkw+KE1lbW9yeUluc3RydW1lbnRh
dGlvbiosIGNvbnN0IEtVUkwqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSk7Cit0ZW1wbGF0ZTw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJ
bnN0cnVtZW50ZWRPYmplY3Q8Y29uc3QgS1VSTD4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29u
c3QgS1VSTCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKKwor
dGVtcGxhdGU8PiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVu
dGVkT2JqZWN0PFN0cmluZz4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nKiBj
b25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGU8PiB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PGNv
bnN0IFN0cmluZz4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nKiBjb25zdCYs
IE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZTw+IHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8U3RyaW5n
SW1wbD4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwgY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBN
ZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlPD4gdm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdDxjb25zdCBTdHJp
bmdJbXBsPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYs
IE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZTw+IHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8QXRvbWlj
U3RyaW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcqIGNvbnN0
JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Cit0ZW1wbGF0ZTw+IHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8Y29uc3Qg
QXRvbWljU3RyaW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcq
IGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKKworLy8gTGlu
ayB0aW1lIGd1YXJkcyB3aXRoIG5vIGJvZHkuCit0ZW1wbGF0ZTw+IHZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVHJhaXRzOjphZGRPYmplY3Q8S1VSTD4oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiwg
Y29uc3QgS1VSTCogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsK
K3RlbXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZE9iamVjdDxj
b25zdCBLVVJMPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBLVVJMKiBjb25zdCYsIE1l
bW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOworCit0ZW1wbGF0ZTw+IHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRPYmplY3Q8U3RyaW5nPihNZW1vcnlJbnN0cnVt
ZW50YXRpb24qLCBjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5
T3duaW5nVHlwZSk7Cit0ZW1wbGF0ZTw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRz
OjphZGRPYmplY3Q8Y29uc3QgU3RyaW5nPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBT
dHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKK3Rl
bXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZE9iamVjdDxTdHJp
bmdJbXBsPihNZW1vcnlJbnN0cnVtZW50YXRpb24qLCBjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYs
IE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwordGVtcGxhdGU8PiB2b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PGNvbnN0IFN0cmluZ0ltcGw+KE1l
bW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiwgTWVtb3J5T2Jq
ZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisKK3RlbXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb25UcmFpdHM6OmFkZE9iamVjdDxBdG9taWNTdHJpbmc+KE1lbW9yeUluc3RydW1l
bnRhdGlvbiosIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBN
ZW1vcnlPd25pbmdUeXBlKTsKK3RlbXBsYXRlPD4gdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25U
cmFpdHM6OmFkZE9iamVjdDxjb25zdCBBdG9taWNTdHJpbmc+KE1lbW9yeUluc3RydW1lbnRhdGlv
biosIGNvbnN0IEF0b21pY1N0cmluZyogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKaW5kZXgg
NDA4ZjZmMTU5NWIwNjk5YjNkYWQ2YTY4ODg4YmRkNWEyYmE5YTE1Yi4uMzZjNDM1MTk4MzMzZTAz
OTRmMGIxNzBiNTYxYTI2NjAyY2IxODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OnByb2Nlc3NEZWZlcnJlZEluc3RydW1l
bnRlZFBvaW50ZXJzKCkKICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1w
bDo6Y291bnRPYmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCit2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OmNvdW50T2JqZWN0U2l6ZShNZW1vcnlPYmpl
Y3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogewogICAgIFR5cGVUb1NpemVNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX3RvdGFsU2l6ZXMuYWRkKG9iamVjdFR5cGUsIHNpemUpOwogICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAppbmRleCA5ZjNlZWM4YmQwYjczNWE0Njcz
N2ZkYmEzNmQ5NWRiZTM0NWVkMWJmLi44NWNiYzVlNDUwOTVlMmQwMGZhZTE4Zjc5M2JjZTBjNTEz
ZWJlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwoVmlzaXRlZE9iamVjdHMmKTsKIAogICAgIHNpemVf
dCBzZWxmU2l6ZSgpIGNvbnN0OwotICAgIHNpemVfdCB0b3RhbFNpemUoT2JqZWN0VHlwZSBvYmpl
Y3RUeXBlKSBjb25zdAorICAgIHNpemVfdCB0b3RhbFNpemUoTWVtb3J5T2JqZWN0VHlwZSBvYmpl
Y3RUeXBlKSBjb25zdAogICAgIHsKICAgICAgICAgVHlwZVRvU2l6ZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaSA9IG1fdG90YWxTaXplcy5maW5kKG9iamVjdFR5cGUpOwogICAgICAgICByZXR1cm4gaSA9
PSBtX3RvdGFsU2l6ZXMuZW5kKCkgPyAwIDogaS0+c2Vjb25kOwpAQCAtNjEsMTIgKzYxLDEyIEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0
U2l6ZShPYmplY3RUeXBlLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb3Vu
dE9iamVjdFNpemUoTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5zdHJ1bWVudGVk
UG9pbnRlckJhc2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2
b2lkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJlZEluc3RydW1l
bnRlZFBvaW50ZXJzKCkgT1ZFUlJJREU7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8T2JqZWN0VHlw
ZSwgc2l6ZV90PiBUeXBlVG9TaXplTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxNZW1vcnlPYmpl
Y3RUeXBlLCBzaXplX3Q+IFR5cGVUb1NpemVNYXA7CiAgICAgVHlwZVRvU2l6ZU1hcCBtX3RvdGFs
U2l6ZXM7CiAgICAgVmlzaXRlZE9iamVjdHMmIG1fdmlzaXRlZE9iamVjdHM7CiAgICAgVmVjdG9y
PE93blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4gPiBtX2RlZmVycmVkSW5zdHJ1bWVudGVk
UG9pbnRlcnM7Cg==
</data>
<flag name="review"
          id="173285"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>