<?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>158144</bug_id>
          
          <creation_ts>2016-05-26 20:09:41 -0700</creation_ts>
          <short_desc>Web Inspector: ReportExtraMemoryCost IDL attribute should also be used to generate estimatedSize method</short_desc>
          <delta_ts>2016-05-31 20:53:37 -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</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1196967</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-05-26 20:09:41 -0700</bug_when>
    <thetext>* SUMMARY
ReportExtraMemoryCost IDL attribute should also be used to generate estimatedSize method.

The pattern for including the JSCell estimatedSize() method is &quot;if a cell reports extra memory to the Heap, it should also include that in its estimated size&quot;. We were missing this for WebCore objects (of which there are only a few). The existing ReportExtraMemoryCost IDL attribute already handles reporting extra memory to the Heap using wrapper().memoryCost(). The exact same thing can be used in estimatedSize().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196968</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-05-26 20:11:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/26510790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196970</commentid>
    <comment_count>2</comment_count>
      <attachid>279942</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-05-26 20:15:41 -0700</bug_when>
    <thetext>Created attachment 279942
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197445</commentid>
    <comment_count>3</comment_count>
      <attachid>279942</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-28 21:19:04 -0700</bug_when>
    <thetext>Comment on attachment 279942
[PATCH] Proposed Fix

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1049
&gt; +    my $needsEstimatedSize = InstanceNeedsEstimatedSize($interface);

Seems better to just call this the one place it’s used instead of putting it into a local variable.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2012
&gt; +    my $needsEstimatedSize = InstanceNeedsEstimatedSize($interface);

Seems better to just call this the one place it’s used instead of putting it into a local variable.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3276
&gt; +        push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(thisObject, info());\n&quot;);

It seems peculiar to do this assertion after the jsCast. Doesn’t the JSCast do this check already? If it doesn’t then I’d suggest asserting first.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3278
&gt; +        push(@implContent, &quot;    size_t extraSize = thisObject-&gt;wrapped().memoryCost();\n&quot;);
&gt; +        push(@implContent, &quot;    return Base::estimatedSize(thisObject) + extraSize;\n&quot;);

This would read better without the local variable, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198013</commentid>
    <comment_count>4</comment_count>
      <attachid>280199</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-05-31 16:50:34 -0700</bug_when>
    <thetext>Created attachment 280199
[PATCH] For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198029</commentid>
    <comment_count>5</comment_count>
      <attachid>280199</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 17:44:42 -0700</bug_when>
    <thetext>Comment on attachment 280199
[PATCH] For Landing

Clearing flags on attachment: 280199

Committed r201541: &lt;http://trac.webkit.org/changeset/201541&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279942</attachid>
            <date>2016-05-26 20:15:41 -0700</date>
            <delta_ts>2016-05-30 10:20:22 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>estimated-size-webcore.patch</filename>
            <type>text/plain</type>
            <size>36368</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NWViNzFjLi5iYjFhZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjcg
QEAKIDIwMTYtMDUtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXBvcnRFeHRyYU1lbW9yeUNvc3QgSURMIGF0dHJpYnV0
ZSBzaG91bGQgYWxzbyBiZSB1c2VkIHRvIGdlbmVyYXRlIGVzdGltYXRlZFNpemUgbWV0aG9kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoSW5zdGFuY2VOZWVkc0VzdGlt
YXRlZFNpemUpOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIFdoZW4gYW4gaW50ZXJmYWNlIGluY2x1ZGVzIFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCwgZ2VuZXJhdGUgYW4gZXN0aW1hdGVkU2l6ZQorICAgICAgICBtZXRo
b2Qgd2hpY2ggaW5jbHVkZXMgdGhlIEJhc2U6OmVzdGltYXRlZFNpemUgYW5kIHRoZSBtZW1vcnlD
b3N0KCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01JbnRlcmZhY2VOYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAg
ICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwSW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICh3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX2ZpbmFsaXplKToKKyAgICAgICAg
KHdlYmtpdF9kb21faW50ZXJmYWNlX25hbWVfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0
X2RvbV9pbnRlcmZhY2VfbmFtZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21faW50
ZXJmYWNlX25hbWVfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NSW50ZXJmYWNlTmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6
OkpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFj
ZU5hbWVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6SlNJbnRlcmZhY2VOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpqc0lu
dGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0ludGVyZmFj
ZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6Omdl
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmVzdGltYXRlZFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcmZhY2VOYW1lT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZU93bmVy
OjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcmZhY2VOYW1lOjp0
b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFj
ZU5hbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVy
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05l
d2x5Q3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50
ZXJmYWNlTmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01JbnRlcmZhY2VOYW1lLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NSW50ZXJmYWNlTmFt
ZSBkZWFsbG9jXSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNlTmFtZUludGVybmFsLmg6IEFk
ZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0LmlkbDogQWRkZWQuCisgICAgICAgIEluY2x1ZGUgYSB0ZXN0IGZvciB0aGUgUmVwb3J0
RXh0cmFNZW1vcnlDb3N0IGF0dHJpYnV0ZS4KKworMjAxNi0wNS0yNiAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1lbW9yeSBU
aW1lbGluZSBzb21ldGltZXMgc2hvd3MgaW1wb3NzaWJsZSB2YWx1ZSBmb3IgYm1hbGxvYyBzaXpl
ICh1bmRlcmZsb3dlZCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODExMAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY0OTg1ODQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IGMzMzJmZTIuLjY4NWFmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNzM1LDYgKzczNSwxMiBAQCBzdWIgSW5zdGFu
Y2VOZWVkc1Zpc2l0Q2hpbGRyZW4KICAgICAgICAgfHwgSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcigk
aW50ZXJmYWNlKQogfQogCitzdWIgSW5zdGFuY2VOZWVkc0VzdGltYXRlZFNpemUKK3sKKyAgICBt
eSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgcmV0dXJuICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJSZXBvcnRFeHRyYU1lbW9yeUNvc3QifTsKK30KKwogc3ViIEdldEltcGxDbGFz
c05hbWUKIHsKICAgICBteSAkbmFtZSA9IHNoaWZ0OwpAQCAtMTA0MCw2ICsxMDQ2LDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgbXkgJGhhc1BhcmVudCA9ICRoYXNMZWdhY3lQYXJlbnQgfHwg
JGhhc1JlYWxQYXJlbnQ7CiAgICAgbXkgJHBhcmVudENsYXNzTmFtZSA9IEdldFBhcmVudENsYXNz
TmFtZSgkaW50ZXJmYWNlKTsKICAgICBteSAkbmVlZHNWaXNpdENoaWxkcmVuID0gSW5zdGFuY2VO
ZWVkc1Zpc2l0Q2hpbGRyZW4oJGludGVyZmFjZSk7CisgICAgbXkgJG5lZWRzRXN0aW1hdGVkU2l6
ZSA9IEluc3RhbmNlTmVlZHNFc3RpbWF0ZWRTaXplKCRpbnRlcmZhY2UpOwogCiAgICAgIyAtIEFk
ZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZSBhbmQgaGVhZGVyIHByb3RlY3Rpb24KICAgICBwdXNo
KEBoZWFkZXJDb250ZW50SGVhZGVyLCBHZW5lcmF0ZUhlYWRlckNvbnRlbnRIZWFkZXIoJGludGVy
ZmFjZSkpOwpAQCAtMTMxOCw2ICsxMzI1LDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoJG5lZWRzRXN0
aW1hdGVkU2l6ZSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBz
aXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTtcbiIpOworICAgIH0KKwogICAgIGlmICgkbnVt
Q3VzdG9tQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxu
ICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzXG4iKTsKIApAQCAtMTk5OCw2ICsyMDA5LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAk
Y29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGludGVyZmFjZSk7CiAgICAg
bXkgJGV2ZW50VGFyZ2V0ID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJFdmVudFRhcmdldCIpICYmICRpbnRlcmZhY2UtPm5hbWUgbmUgIkV2ZW50VGFyZ2V0
IjsKICAgICBteSAkbmVlZHNWaXNpdENoaWxkcmVuID0gSW5zdGFuY2VOZWVkc1Zpc2l0Q2hpbGRy
ZW4oJGludGVyZmFjZSk7CisgICAgbXkgJG5lZWRzRXN0aW1hdGVkU2l6ZSA9IEluc3RhbmNlTmVl
ZHNFc3RpbWF0ZWRTaXplKCRpbnRlcmZhY2UpOwogCiAgICAgbXkgJG5hbWVkR2V0dGVyRnVuY3Rp
b24gPSBHZXROYW1lZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwogICAgIG15ICRpbmRleGVk
R2V0dGVyRnVuY3Rpb24gPSBHZXRJbmRleGVkR2V0dGVyRnVuY3Rpb24oJGludGVyZmFjZSk7CkBA
IC0zMjU3LDYgKzMyNjksMTYgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICB9CiAKKyAgICBpZiAoJG5lZWRzRXN0aW1hdGVkU2l6ZSkgeworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInNpemVfdCAke2NsYXNzTmFtZX06OmVzdGltYXRlZFNpemUoSlND
ZWxsKiBjZWxsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtj
bGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNpemVfdCBleHRyYVNpemUgPSB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpICsgZXh0cmFTaXpl
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICB9CisKICAg
ICAjIENhY2hlZCBhdHRyaWJ1dGVzIGFyZSBpbmRlZWQgYWxsb3dlZCB3aGVuIHRoZXJlIGlzIGEg
Y3VzdG9tIG1hcmsvdmlzaXRDaGlsZHJlbiBmdW5jdGlvbi4KICAgICAjIFRoZSBjdXN0b20gZnVu
Y3Rpb24gbXVzdCBtYWtlIHN1cmUgdG8gYWNjb3VudCBmb3IgdGhlIGNhY2hlZCBhdHRyaWJ1dGUu
CiAgICAgIyBVbmNvbW1lbnQgdGhlIGJlbG93IGxpbmUgdG8gdGVtcG9yYXJpbHkgZW5mb3JjZSBn
ZW5lcmF0ZWQgbWFyayBmdW5jdGlvbnMgd2hlbiBjYWNoZWQgYXR0cmlidXRlcyBhcmUgcHJlc2Vu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTUludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NSW50ZXJmYWNlTmFtZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBiMGY1MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUludGVy
ZmFjZU5hbWUuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NSW50ZXJmYWNl
TmFtZS5oIgorCisjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5oIgorI2luY2x1ZGUgIkRPTU9iamVj
dENhY2hlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NSW50ZXJmYWNlTmFtZVBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVj
dC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2RlZmluZSBXRUJLSVRfRE9NX0lOVEVSRkFDRV9OQU1FX0dF
VF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX0RP
TV9UWVBFX0lOVEVSRkFDRV9OQU1FLCBXZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUludGVyZmFjZU5hbWVQcml2YXRlIHsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SW50ZXJmYWNlTmFtZT4gY29yZU9iamVjdDsKK30gV2ViS2l0RE9NSW50ZXJm
YWNlTmFtZVByaXZhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJLaXRET01JbnRlcmZh
Y2VOYW1lKiBraXQoV2ViQ29yZTo6SW50ZXJmYWNlTmFtZSogb2JqKQoreworICAgIGlmICghb2Jq
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RD
YWNoZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVybiBXRUJLSVRfRE9NX0lOVEVSRkFDRV9OQU1F
KHJldCk7CisKKyAgICByZXR1cm4gd3JhcEludGVyZmFjZU5hbWUob2JqKTsKK30KKworV2ViQ29y
ZTo6SW50ZXJmYWNlTmFtZSogY29yZShXZWJLaXRET01JbnRlcmZhY2VOYW1lKiByZXF1ZXN0KQor
eworICAgIHJldHVybiByZXF1ZXN0ID8gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SW50ZXJmYWNlTmFt
ZSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Cit9CisKK1dl
YktpdERPTUludGVyZmFjZU5hbWUqIHdyYXBJbnRlcmZhY2VOYW1lKFdlYkNvcmU6OkludGVyZmFj
ZU5hbWUqIGNvcmVPYmplY3QpCit7CisgICAgQVNTRVJUKGNvcmVPYmplY3QpOworICAgIHJldHVy
biBXRUJLSVRfRE9NX0lOVEVSRkFDRV9OQU1FKGdfb2JqZWN0X25ldyhXRUJLSVRfRE9NX1RZUEVf
SU5URVJGQUNFX05BTUUsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0RE9NSW50ZXJm
YWNlTmFtZSwgd2Via2l0X2RvbV9pbnRlcmZhY2VfbmFtZSwgV0VCS0lUX0RPTV9UWVBFX09CSkVD
VCkKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9pbnRlcmZhY2VfbmFtZV9maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0RE9NSW50ZXJmYWNlTmFtZVByaXZhdGUqIHByaXYg
PSBXRUJLSVRfRE9NX0lOVEVSRkFDRV9OQU1FX0dFVF9QUklWQVRFKG9iamVjdCk7CisKKyAgICBX
ZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CisK
KyAgICBwcml2LT5+V2ViS2l0RE9NSW50ZXJmYWNlTmFtZVByaXZhdGUoKTsKKyAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX3BhcmVudF9jbGFzcyktPmZpbmFsaXpl
KG9iamVjdCk7Cit9CisKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1l
X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwg
R09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmpl
Y3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21faW50ZXJmYWNlX25hbWVfcGFy
ZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBj
b25zdHJ1Y3RQcm9wZXJ0aWVzKTsKKworICAgIFdlYktpdERPTUludGVyZmFjZU5hbWVQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0RPTV9JTlRFUkZBQ0VfTkFNRV9HRVRfUFJJVkFURShvYmplY3QpOwor
ICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpJbnRlcmZhY2VOYW1l
Kj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpE
T01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CisKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2ludGVyZmFjZV9u
YW1lX2NsYXNzX2luaXQoV2ViS2l0RE9NSW50ZXJmYWNlTmFtZUNsYXNzKiByZXF1ZXN0Q2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1
ZXN0Q2xhc3MpOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNp
emVvZihXZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZSkpOworICAgIGdvYmplY3RDbGFzcy0+
Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX2NvbnN0cnVjdG9yOworICAg
IGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX2ZpbmFs
aXplOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX2luaXQoV2Vi
S2l0RE9NSW50ZXJmYWNlTmFtZSogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRET01JbnRlcmZhY2VO
YW1lUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fSU5URVJGQUNFX05BTUVfR0VUX1BSSVZBVEUo
cmVxdWVzdCk7CisgICAgbmV3IChwcml2KSBXZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZSgp
OworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjYjU1ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUludGVy
ZmFjZU5hbWUuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFdlYktpdERPTUludGVyZmFjZU5hbWVfaAorI2RlZmluZSBXZWJLaXRET01J
bnRlcmZhY2VOYW1lX2gKKworI2lmZGVmIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQorCisj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NT2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMtdW5zdGFibGUuaD4K
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9ET01fVFlQRV9JTlRFUkZBQ0VfTkFN
RSAgICAgICAgICAgICh3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX2dldF90eXBlKCkpCisjZGVm
aW5lIFdFQktJVF9ET01fSU5URVJGQUNFX05BTUUob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX0RPTV9UWVBFX0lOVEVSRkFDRV9OQU1FLCBX
ZWJLaXRET01JbnRlcmZhY2VOYW1lKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JTlRFUkZBQ0VfTkFN
RV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJL
SVRfRE9NX1RZUEVfSU5URVJGQUNFX05BTUUsIFdlYktpdERPTUludGVyZmFjZU5hbWVDbGFzcykK
KyNkZWZpbmUgV0VCS0lUX0RPTV9JU19JTlRFUkZBQ0VfTkFNRShvYmopICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9NX1RZUEVfSU5URVJGQUNFX05B
TUUpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX0lOVEVSRkFDRV9OQU1FX0NMQVNTKGtsYXNzKSAo
R19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9JTlRFUkZB
Q0VfTkFNRSkpCisjZGVmaW5lIFdFQktJVF9ET01fSU5URVJGQUNFX05BTUVfR0VUX0NMQVNTKG9i
aikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0RPTV9UWVBFX0lO
VEVSRkFDRV9OQU1FLCBXZWJLaXRET01JbnRlcmZhY2VOYW1lQ2xhc3MpKQorCitzdHJ1Y3QgX1dl
YktpdERPTUludGVyZmFjZU5hbWUgeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFu
Y2U7Cit9OworCitzdHJ1Y3QgX1dlYktpdERPTUludGVyZmFjZU5hbWVDbGFzcyB7CisgICAgV2Vi
S2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQor
d2Via2l0X2RvbV9pbnRlcmZhY2VfbmFtZV9nZXRfdHlwZSh2b2lkKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLworI2VuZGlmIC8qIFdl
YktpdERPTUludGVyZmFjZU5hbWVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NSW50ZXJmYWNlTmFtZVByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TUludGVyZmFjZU5hbWVQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzQxNTE1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUludGVyZmFjZU5hbWVQcml2YXRlLmgKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCisgKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJL
aXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTUludGVyZmFjZU5h
bWVQcml2YXRlX2gKKworI2luY2x1ZGUgIkludGVyZmFjZU5hbWUuaCIKKyNpbmNsdWRlIDx3ZWJr
aXRkb20vV2ViS2l0RE9NSW50ZXJmYWNlTmFtZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1dl
YktpdERPTUludGVyZmFjZU5hbWUqIHdyYXBJbnRlcmZhY2VOYW1lKFdlYkNvcmU6OkludGVyZmFj
ZU5hbWUqKTsKK1dlYktpdERPTUludGVyZmFjZU5hbWUqIGtpdChXZWJDb3JlOjpJbnRlcmZhY2VO
YW1lKik7CitXZWJDb3JlOjpJbnRlcmZhY2VOYW1lKiBjb3JlKFdlYktpdERPTUludGVyZmFjZU5h
bWUqKTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLyogV2ViS2l0RE9NSW50ZXJm
YWNlTmFtZVByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45MjE5MjI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTAs
MCArMSwyMTkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTSW50ZXJmYWNlTmFtZS5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQXR0cmlidXRlcworCitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3Qq
KTsKK2Jvb2wgc2V0SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNJbnRl
cmZhY2VOYW1lUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMg
SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU+KHZtLmhlYXApKSBKU0lu
dGVyZmFjZU5hbWVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05v
bkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKwordHlwZWRlZiBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU0ludGVyZmFjZU5hbWU+IEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9y
OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBnbG9iYWxP
YmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTSW50ZXJm
YWNlTmFtZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTSW50ZXJmYWNlTmFtZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFs
T2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiSW50ZXJmYWNlTmFtZSIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJJbnRlcmZhY2VOYW1lIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ludGVyZmFjZU5hbWVDb25z
dHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSW50ZXJmYWNl
TmFtZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IpIH0gfSwKK307CisK
K2NvbnN0IENsYXNzSW5mbyBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIklu
dGVyZmFjZU5hbWVQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSkgfTsKKwordm9pZCBKU0ludGVyZmFjZU5hbWVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0ludGVyZmFjZU5hbWVQ
cm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNJbnRl
cmZhY2VOYW1lOjpzX2luZm8gPSB7ICJJbnRlcmZhY2VOYW1lIiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0ludGVyZmFjZU5hbWUpIH07CisKK0pTSW50ZXJmYWNlTmFt
ZTo6SlNJbnRlcmZhY2VOYW1lKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW50ZXJmYWNlTmFtZT4mJiBpbXBsKQorICAgIDogSlNET01X
cmFwcGVyPEludGVyZmFjZU5hbWU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKQoreworfQorCitKU09iamVjdCogSlNJbnRlcmZhY2VOYW1lOjpjcmVhdGVQcm90b3R5cGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0lu
dGVyZmFjZU5hbWVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU0ludGVyZmFj
ZU5hbWVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU0ludGVyZmFjZU5h
bWU6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU0ludGVyZmFjZU5hbWU+KHZtLCBnbG9iYWxPYmpl
Y3QpOworfQorCit2b2lkIEpTSW50ZXJmYWNlTmFtZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBKU0ludGVyZmFjZU5hbWUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0lu
dGVyZmFjZU5hbWUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU0ludGVyZmFjZU5hbWU6On5K
U0ludGVyZmFjZU5hbWUoKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNJbnRlcmZhY2VOYW1lQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUsIEpTT2JqZWN0KikKK3sKKyAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNJbnRlcmZhY2VOYW1lOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9t
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNldEpTSW50ZXJmYWNlTmFtZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVy
biBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpOworfQorCitKU1ZhbHVlIEpTSW50ZXJmYWNlTmFtZTo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
K30KKwordm9pZCBKU0ludGVyZmFjZU5hbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
SW50ZXJmYWNlTmFtZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3Qt
PndyYXBwZWQoKS5tZW1vcnlDb3N0KCkpOworfQorCitzaXplX3QgSlNJbnRlcmZhY2VOYW1lOjpl
c3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTSW50ZXJmYWNlTmFtZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBzaXplX3QgZXh0cmFTaXplID0gdGhpc09iamVj
dC0+d3JhcHBlZCgpLm1lbW9yeUNvc3QoKTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6
ZSh0aGlzT2JqZWN0KSArIGV4dHJhU2l6ZTsKK30KKworYm9vbCBKU0ludGVyZmFjZU5hbWVPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0o
aGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEpTSW50ZXJmYWNlTmFtZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc0ludGVyZmFj
ZU5hbWUgPSBqc0Nhc3Q8SlNJbnRlcmZhY2VOYW1lKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNJbnRlcmZhY2VOYW1lLT53cmFwcGVk
KCksIGpzSW50ZXJmYWNlTmFtZSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdJbnRlcmZhY2VO
YW1lQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQqIF9aVFZON1dlYkNvcmUxM0ludGVyZmFjZU5hbWVFW107IH0KKyNlbmRpZgorI2VuZGlmCisK
K0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEludGVyZmFjZU5hbWU+JiYgaW1wbCkKK3sKKwor
I2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2lu
dGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOworI2lmIFBMQVRG
T1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9j
YXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdJbnRlcmZhY2VOYW1lQFdlYkNvcmVAQDZCQCIp
KTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNv
cmUxM0ludGVyZmFjZU5hbWVFWzJdOworI2lmIENPTVBJTEVSKENMQU5HKQorICAgIC8vIElmIHRo
aXMgZmFpbHMgSW50ZXJmYWNlTmFtZSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVl
ZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUg
dG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChfX2lzX3BvbHlt
b3JwaGljKEludGVyZmFjZU5hbWUpLCAiSW50ZXJmYWNlTmFtZSBpcyBub3QgcG9seW1vcnBoaWMi
KTsKKyNlbmRpZgorI2VuZGlmCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3Ug
ZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gSW50ZXJmYWNlTmFt
ZSBoYXMgc3ViY2xhc3Nlcy4gSWYgSW50ZXJmYWNlTmFtZSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdl
dCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgSW50ZXJmYWNl
TmFtZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGlu
ZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURM
IGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4
cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICBnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChpbXBsLT5tZW1vcnlDb3N0KCkpOworICAgIHJl
dHVybiBjcmVhdGVXcmFwcGVyPEpTSW50ZXJmYWNlTmFtZSwgSW50ZXJmYWNlTmFtZT4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRlcmZhY2VO
YW1lJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwp
OworfQorCitJbnRlcmZhY2VOYW1lKiBKU0ludGVyZmFjZU5hbWU6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
SW50ZXJmYWNlTmFtZSo+KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDhmNjA4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRlcmZhY2VOYW1lLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSlNJbnRlcmZhY2VOYW1lIDogcHVibGljIEpTRE9NV3JhcHBlcjxJbnRlcmZhY2VO
YW1lPiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXI8SW50ZXJmYWNlTmFtZT4g
QmFzZTsKKyAgICBzdGF0aWMgSlNJbnRlcmZhY2VOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEludGVyZmFj
ZU5hbWU+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTSW50ZXJmYWNlTmFtZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0ludGVyZmFjZU5hbWU+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNJbnRlcmZhY2VOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CisKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBJbnRlcmZhY2VOYW1lKiB0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xv
dFZpc2l0b3ImKTsKKworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsK
K3Byb3RlY3RlZDoKKyAgICBKU0ludGVyZmFjZU5hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxJbnRlcmZhY2VOYW1lPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB9CisKK307CisKK2Ns
YXNzIEpTSW50ZXJmYWNlTmFtZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYp
OworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIEludGVyZmFjZU5hbWUqKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU0ludGVyZmFjZU5hbWVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZv
d25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoSW50ZXJmYWNlTmFtZSog
d3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBJbnRl
cmZhY2VOYW1lJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRlcmZhY2VOYW1lKiBpbXBs
KSB7IHJldHVybiBpbXBsID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6
OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPEludGVyZmFjZU5hbWU+JiYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPEludGVyZmFjZU5hbWU+JiYgaW1wbCkg
eyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1w
bC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01JbnRlcmZhY2VOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01JbnRlcmZhY2VOYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmMyMDg0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWUuaApAQCAtMCwwICsxLDMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+
CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKK1dFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgRE9NSW50ZXJmYWNlTmFtZSA6IERPTU9iamVjdAorQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNlTmFt
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVy
ZmFjZU5hbWUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwNmFkOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTUludGVyZmFjZU5hbWUubW0KQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTUludGVy
ZmFjZU5hbWUuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJmYWNlTmFtZUludGVybmFsLmgiCisjaW1w
b3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisj
aW1wb3J0ICJJbnRlcmZhY2VOYW1lLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKKyNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5o
IgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorCisjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnRlcmZhY2VO
YW1lKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50YXRpb24gRE9NSW50ZXJmYWNlTmFtZQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVP
bk1haW5UaHJlYWQoW0RPTUludGVyZmFjZU5hbWUgY2xhc3NdLCBzZWxmKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKKworV2ViQ29yZTo6SW50ZXJmYWNlTmFtZSogY29y
ZShET01JbnRlcmZhY2VOYW1lICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnRlcmZhY2VOYW1lKj4od3JhcHBlci0+X2ludGVybmFs
KSA6IDA7Cit9CisKK0RPTUludGVyZmFjZU5hbWUgKmtpdChXZWJDb3JlOjpJbnRlcmZhY2VOYW1l
KiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwor
ICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgaWYgKERPTUludGVyZmFj
ZU5hbWUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01JbnRlcmZhY2VOYW1lICp3cmFw
cGVyID0gW1tET01JbnRlcmZhY2VOYW1lIGFsbG9jXSBfaW5pdF07CisgICAgd3JhcHBlci0+X2lu
dGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKKyAg
ICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7CisgICAg
cmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWVJbnRlcm5hbC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNl
TmFtZUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlNWU3
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTUludGVyZmFjZU5hbWVJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg
KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
KiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2ltcG9ydCA8V2ViQ29yZS9ET01JbnRlcmZhY2VOYW1lLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEludGVyZmFjZU5hbWU7Cit9CisKK1dFQkNPUkVfRVhQT1JUIFdlYkNvcmU6
OkludGVyZmFjZU5hbWUqIGNvcmUoRE9NSW50ZXJmYWNlTmFtZSAqKTsKK1dFQkNPUkVfRVhQT1JU
IERPTUludGVyZmFjZU5hbWUgKmtpdChXZWJDb3JlOjpJbnRlcmZhY2VOYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYWM1YWVmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmlkbApAQCAtMCwwICsxLDMw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IFJlcG9ydEV4dHJhTWVtb3J5Q29zdCwKK10gaW50ZXJmYWNlIEludGVyZmFjZU5hbWUgeworfTsK
Kwo=
</data>
<flag name="review"
          id="303950"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="303954"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280199</attachid>
            <date>2016-05-31 16:50:34 -0700</date>
            <delta_ts>2016-05-31 17:44:42 -0700</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>for-landing-2.patch</filename>
            <type>text/plain</type>
            <size>35103</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NWViNzFjLi5jYjA3Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTYtMDUtMzEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXBvcnRFeHRyYU1lbW9yeUNvc3QgSURMIGF0dHJpYnV0
ZSBzaG91bGQgYWxzbyBiZSB1c2VkIHRvIGdlbmVyYXRlIGVzdGltYXRlZFNpemUgbWV0aG9kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoSW5zdGFuY2VOZWVkc0VzdGltYXRl
ZFNpemUpOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIFdoZW4gYW4gaW50ZXJmYWNlIGluY2x1ZGVzIFJlcG9ydEV4
dHJhTWVtb3J5Q29zdCwgZ2VuZXJhdGUgYW4gZXN0aW1hdGVkU2l6ZQorICAgICAgICBtZXRob2Qg
d2hpY2ggaW5jbHVkZXMgdGhlIEJhc2U6OmVzdGltYXRlZFNpemUgYW5kIHRoZSBtZW1vcnlDb3N0
KCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01J
bnRlcmZhY2VOYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAg
IChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwSW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX2ludGVyZmFjZV9uYW1lX2ZpbmFsaXplKToKKyAgICAgICAgKHdl
YmtpdF9kb21faW50ZXJmYWNlX25hbWVfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0X2Rv
bV9pbnRlcmZhY2VfbmFtZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21faW50ZXJm
YWNlX25hbWVfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NSW50ZXJmYWNlTmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OkpT
SW50ZXJmYWNlTmFtZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5h
bWVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6SlNJbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW50ZXJmYWNlTmFtZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpqc0ludGVy
ZmFjZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0ludGVyZmFjZU5h
bWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmdldENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmVzdGltYXRlZFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcmZhY2VOYW1lT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZU93bmVyOjpm
aW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcmZhY2VOYW1lOjp0b1dy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5h
bWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ludGVyZmFjZU5hbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5
Q3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJm
YWNlTmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01JbnRlcmZhY2VOYW1lLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NSW50ZXJmYWNlTmFtZSBk
ZWFsbG9jXSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNlTmFtZUludGVybmFsLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0LmlkbDogQWRkZWQuCisgICAgICAgIEluY2x1ZGUgYSB0ZXN0IGZvciB0aGUgUmVwb3J0RXh0
cmFNZW1vcnlDb3N0IGF0dHJpYnV0ZS4KKwogMjAxNi0wNS0yNiAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1lbW9yeSBUaW1l
bGluZSBzb21ldGltZXMgc2hvd3MgaW1wb3NzaWJsZSB2YWx1ZSBmb3IgYm1hbGxvYyBzaXplICh1
bmRlcmZsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYzMzMmZlMi4uZmRmNWNkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTczNSw2ICs3
MzUsMTIgQEAgc3ViIEluc3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuCiAgICAgICAgIHx8IElzSlNC
dWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkKIH0KIAorc3ViIEluc3RhbmNlTmVlZHNFc3Rp
bWF0ZWRTaXplCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIHJldHVybiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlDb3N0In07Cit9
CisKIHN1YiBHZXRJbXBsQ2xhc3NOYW1lCiB7CiAgICAgbXkgJG5hbWUgPSBzaGlmdDsKQEAgLTEz
MTgsNiArMTMyNCwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIlxuIik7CiAgICAgfQogCisgICAgaWYgKEluc3RhbmNlTmVlZHNFc3RpbWF0ZWRT
aXplKCRpbnRlcmZhY2UpKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopO1xuIik7CisgICAgfQorCiAgICAgaWYg
KCRudW1DdXN0b21BdHRyaWJ1dGVzID4gMCkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiXG4gICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXNcbiIpOwogCkBAIC0zMjU3LDYgKzMyNjcsMTQg
QEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKKyAg
ICBpZiAoSW5zdGFuY2VOZWVkc0VzdGltYXRlZFNpemUoJGludGVyZmFjZSkpIHsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzaXplX3QgJHtjbGFzc05hbWV9Ojplc3RpbWF0ZWRTaXplKEpT
Q2VsbCogY2VsbClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7
Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpICsgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLm1lbW9yeUNvc3QoKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisgICAgfQorCiAgICAgIyBDYWNoZWQgYXR0cmlidXRlcyBhcmUgaW5kZWVkIGFsbG93
ZWQgd2hlbiB0aGVyZSBpcyBhIGN1c3RvbSBtYXJrL3Zpc2l0Q2hpbGRyZW4gZnVuY3Rpb24uCiAg
ICAgIyBUaGUgY3VzdG9tIGZ1bmN0aW9uIG11c3QgbWFrZSBzdXJlIHRvIGFjY291bnQgZm9yIHRo
ZSBjYWNoZWQgYXR0cmlidXRlLgogICAgICMgVW5jb21tZW50IHRoZSBiZWxvdyBsaW5lIHRvIHRl
bXBvcmFyaWx5IGVuZm9yY2UgZ2VuZXJhdGVkIG1hcmsgZnVuY3Rpb25zIHdoZW4gY2FjaGVkIGF0
dHJpYnV0ZXMgYXJlIHByZXNlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUludGVyZmFj
ZU5hbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYjBmNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAq
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
KiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYktpdERPTUludGVyZmFjZU5hbWUuaCIKKworI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIK
KyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dERPTUludGVyZmFjZU5hbWVQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5o
IgorI2luY2x1ZGUgImdvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIgorI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNkZWZpbmUgV0VCS0lUX0RP
TV9JTlRFUkZBQ0VfTkFNRV9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShvYmosIFdFQktJVF9ET01fVFlQRV9JTlRFUkZBQ0VfTkFNRSwgV2ViS2l0RE9NSW50ZXJm
YWNlTmFtZVByaXZhdGUpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01JbnRlcmZhY2VOYW1l
UHJpdmF0ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OkludGVyZmFjZU5hbWU+IGNvcmVPYmplY3Q7
Cit9IFdlYktpdERPTUludGVyZmFjZU5hbWVQcml2YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViS2l0RE9NSW50ZXJmYWNlTmFtZSoga2l0KFdlYkNvcmU6OkludGVyZmFjZU5hbWUqIG9i
aikKK3sKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZ3BvaW50
ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQorICAgICAgICByZXR1cm4gV0VCS0lU
X0RPTV9JTlRFUkZBQ0VfTkFNRShyZXQpOworCisgICAgcmV0dXJuIHdyYXBJbnRlcmZhY2VOYW1l
KG9iaik7Cit9CisKK1dlYkNvcmU6OkludGVyZmFjZU5hbWUqIGNvcmUoV2ViS2l0RE9NSW50ZXJm
YWNlTmFtZSogcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkludGVyZmFjZU5hbWUqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9i
amVjdCkgOiAwOworfQorCitXZWJLaXRET01JbnRlcmZhY2VOYW1lKiB3cmFwSW50ZXJmYWNlTmFt
ZShXZWJDb3JlOjpJbnRlcmZhY2VOYW1lKiBjb3JlT2JqZWN0KQoreworICAgIEFTU0VSVChjb3Jl
T2JqZWN0KTsKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9JTlRFUkZBQ0VfTkFNRShnX29iamVjdF9u
ZXcoV0VCS0lUX0RPTV9UWVBFX0lOVEVSRkFDRV9OQU1FLCAiY29yZS1vYmplY3QiLCBjb3JlT2Jq
ZWN0LCBudWxscHRyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitHX0RFRklORV9U
WVBFKFdlYktpdERPTUludGVyZmFjZU5hbWUsIHdlYmtpdF9kb21faW50ZXJmYWNlX25hbWUsIFdF
QktJVF9ET01fVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21faW50ZXJmYWNl
X25hbWVfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdERPTUludGVyZmFj
ZU5hbWVQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9JTlRFUkZBQ0VfTkFNRV9HRVRfUFJJVkFU
RShvYmplY3QpOworCisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNv
cmVPYmplY3QuZ2V0KCkpOworCisgICAgcHJpdi0+fldlYktpdERPTUludGVyZmFjZU5hbWVQcml2
YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9pbnRlcmZhY2VfbmFtZV9wYXJl
bnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgR09iamVjdCogd2Via2l0
X2RvbV9pbnRlcmZhY2VfbmFtZV9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVy
dGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9t
X2ludGVyZmFjZV9uYW1lX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVj
dFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisKKyAgICBXZWJLaXRET01J
bnRlcmZhY2VOYW1lUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fSU5URVJGQUNFX05BTUVfR0VU
X1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SW50ZXJmYWNlTmFtZSo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmpl
Y3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0Lmdl
dCgpLCBvYmplY3QpOworCisgICAgcmV0dXJuIG9iamVjdDsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9pbnRlcmZhY2VfbmFtZV9jbGFzc19pbml0KFdlYktpdERPTUludGVyZmFjZU5hbWVD
bGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZh
dGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NSW50ZXJmYWNlTmFtZVByaXZhdGUpKTsK
KyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9pbnRlcmZhY2VfbmFt
ZV9jb25zdHJ1Y3RvcjsKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9p
bnRlcmZhY2VfbmFtZV9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9pbnRl
cmZhY2VfbmFtZV9pbml0KFdlYktpdERPTUludGVyZmFjZU5hbWUqIHJlcXVlc3QpCit7CisgICAg
V2ViS2l0RE9NSW50ZXJmYWNlTmFtZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0lOVEVSRkFD
RV9OQU1FX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJpdikgV2ViS2l0RE9NSW50
ZXJmYWNlTmFtZVByaXZhdGUoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NSW50ZXJmYWNlTmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NSW50ZXJm
YWNlTmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkY2I1NWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRET01JbnRlcmZhY2VOYW1lX2gK
KyNkZWZpbmUgV2ViS2l0RE9NSW50ZXJmYWNlTmFtZV9oCisKKyNpZmRlZiBXRUJLSVRfRE9NX1VT
RV9VTlNUQUJMRV9BUEkKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Vi
a2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21k
ZWZpbmVzLXVuc3RhYmxlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfRE9N
X1RZUEVfSU5URVJGQUNFX05BTUUgICAgICAgICAgICAod2Via2l0X2RvbV9pbnRlcmZhY2VfbmFt
ZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lOVEVSRkFDRV9OQU1FKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQ
RV9JTlRFUkZBQ0VfTkFNRSwgV2ViS2l0RE9NSW50ZXJmYWNlTmFtZSkpCisjZGVmaW5lIFdFQktJ
VF9ET01fSU5URVJGQUNFX05BTUVfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RPTV9UWVBFX0lOVEVSRkFDRV9OQU1FLCBXZWJLaXRET01J
bnRlcmZhY2VOYW1lQ2xhc3MpCisjZGVmaW5lIFdFQktJVF9ET01fSVNfSU5URVJGQUNFX05BTUUo
b2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0RP
TV9UWVBFX0lOVEVSRkFDRV9OQU1FKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19JTlRFUkZBQ0Vf
TkFNRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJL
SVRfRE9NX1RZUEVfSU5URVJGQUNFX05BTUUpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lOVEVSRkFD
RV9OQU1FX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IFdFQktJVF9ET01fVFlQRV9JTlRFUkZBQ0VfTkFNRSwgV2ViS2l0RE9NSW50ZXJmYWNlTmFtZUNs
YXNzKSkKKworc3RydWN0IF9XZWJLaXRET01JbnRlcmZhY2VOYW1lIHsKKyAgICBXZWJLaXRET01P
YmplY3QgcGFyZW50X2luc3RhbmNlOworfTsKKworc3RydWN0IF9XZWJLaXRET01JbnRlcmZhY2VO
YW1lQ2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisK
K1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21faW50ZXJmYWNlX25hbWVfZ2V0X3R5cGUodm9p
ZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9B
UEkgKi8KKyNlbmRpZiAvKiBXZWJLaXRET01JbnRlcmZhY2VOYW1lX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUlu
dGVyZmFjZU5hbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MTUxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01JbnRlcmZhY2VO
YW1lUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgV2ViS2l0RE9NSW50ZXJmYWNlTmFtZVByaXZhdGVfaAorI2RlZmluZSBX
ZWJLaXRET01JbnRlcmZhY2VOYW1lUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJJbnRlcmZhY2VOYW1l
LmgiCisjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTUludGVyZmFjZU5hbWUuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitXZWJLaXRET01JbnRlcmZhY2VOYW1lKiB3cmFwSW50ZXJmYWNlTmFt
ZShXZWJDb3JlOjpJbnRlcmZhY2VOYW1lKik7CitXZWJLaXRET01JbnRlcmZhY2VOYW1lKiBraXQo
V2ViQ29yZTo6SW50ZXJmYWNlTmFtZSopOworV2ViQ29yZTo6SW50ZXJmYWNlTmFtZSogY29yZShX
ZWJLaXRET01JbnRlcmZhY2VOYW1lKik7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8qIFdlYktpdERPTUludGVyZmFjZU5hbWVQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmNzQ5YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVy
ZmFjZU5hbWUuY3BwCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVyZmFjZU5hbWUuaCIKKworI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8v
IEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0ludGVyZmFjZU5hbWVDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTT2JqZWN0Kik7Citib29sIHNldEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CisKK2NsYXNzIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbnRlcmZhY2VOYW1lUHJvdG90
eXBlPih2bS5oZWFwKSkgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK3R5cGVkZWYg
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNJbnRlcmZhY2VOYW1lPiBKU0ludGVy
ZmFjZU5hbWVDb25zdHJ1Y3RvcjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTSW50ZXJmYWNlTmFt
ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsK
KyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBs
YXRlPD4gdm9pZCBKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0ludGVyZmFjZU5hbWU6OnBy
b3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIkludGVyZmFjZU5hbWUiKSkpLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiSW50ZXJmYWNlTmFtZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNJbnRlcmZhY2VOYW1lUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTSW50ZXJmYWNlTmFtZUNvbnN0
cnVjdG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNJbnRlcmZhY2VOYW1lUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJJbnRlcmZhY2VOYW1lUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUpIH07CisKK3Zv
aWQgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2
bSwgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKK30KKworY29u
c3QgQ2xhc3NJbmZvIEpTSW50ZXJmYWNlTmFtZTo6c19pbmZvID0geyAiSW50ZXJmYWNlTmFtZSIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbnRlcmZhY2VOYW1lKSB9
OworCitKU0ludGVyZmFjZU5hbWU6OkpTSW50ZXJmYWNlTmFtZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEludGVyZmFjZU5hbWU+JiYg
aW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxJbnRlcmZhY2VOYW1lPihzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKworSlNPYmplY3QqIEpTSW50ZXJmYWNlTmFt
ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09i
amVjdCogSlNJbnRlcmZhY2VOYW1lOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNJbnRlcmZhY2VO
YW1lPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKwordm9pZCBKU0ludGVyZmFjZU5hbWU6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNJbnRlcmZhY2VOYW1lKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNJbnRlcmZhY2VOYW1lKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+
SlNJbnRlcmZhY2VOYW1lOjp+SlNJbnRlcmZhY2VOYW1lKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IGpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCBKU09iamVjdCopCit7CisgICAgSlNJbnRlcmZh
Y2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFt
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50ZXJmYWNlTmFtZTo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBz
ZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNJbnRlcmZh
Y2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFt
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0
YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30KKworSlNWYWx1ZSBK
U0ludGVyZmFjZU5hbWU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNJbnRl
cmZhY2VOYW1lQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNJbnRlcmZhY2VOYW1lOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0ludGVyZmFjZU5hbWUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCh0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpKTsKK30KKworc2l6ZV90
IEpTSW50ZXJmYWNlTmFtZTo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ludGVyZmFjZU5hbWUqPihjZWxsKTsKKyAgICByZXR1
cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0KSArIHRoaXNPYmplY3QtPndyYXBwZWQo
KS5tZW1vcnlDb3N0KCk7Cit9CisKK2Jvb2wgSlNJbnRlcmZhY2VOYW1lT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBK
U0ludGVyZmFjZU5hbWVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNJbnRlcmZhY2VOYW1lID0ganND
YXN0PEpTSW50ZXJmYWNlTmFtZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzSW50ZXJmYWNlTmFtZS0+d3JhcHBlZCgpLCBqc0ludGVy
ZmFjZU5hbWUpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183SW50ZXJmYWNlTmFtZUBXZWJDb3Jl
QEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdX
ZWJDb3JlMTNJbnRlcmZhY2VOYW1lRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxJbnRlcmZhY2VOYW1lPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisg
ICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
X19pZGVudGlmaWVyKCI/P183SW50ZXJmYWNlTmFtZUBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQor
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTNJbnRlcmZh
Y2VOYW1lRVsyXTsKKyNpZiBDT01QSUxFUihDTEFORykKKyAgICAvLyBJZiB0aGlzIGZhaWxzIElu
dGVyZmFjZU5hbWUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRo
ZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoX19pc19wb2x5bW9ycGhpYyhJbnRl
cmZhY2VOYW1lKSwgIkludGVyZmFjZU5hbWUgaXMgbm90IHBvbHltb3JwaGljIik7CisjZW5kaWYK
KyNlbmRpZgorICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZl
IGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIEludGVyZmFjZU5hbWUgaGFzIHN1YmNs
YXNzZXMuIElmIEludGVyZmFjZU5hbWUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisg
ICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIEludGVyZmFjZU5hbWUgeW91IHRv
IG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBW
VGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9u
CisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIpOworI2VuZGlmCisgICAgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAucmVwb3J0RXh0
cmFNZW1vcnlBbGxvY2F0ZWQoaW1wbC0+bWVtb3J5Q29zdCgpKTsKKyAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjxKU0ludGVyZmFjZU5hbWUsIEludGVyZmFjZU5hbWU+KGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50ZXJmYWNlTmFtZSYgaW1wbCkK
K3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworSW50
ZXJmYWNlTmFtZSogSlNJbnRlcmZhY2VOYW1lOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5h
bWUqPih2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uN2Q4ZjYwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW50ZXJmYWNlTmFtZS5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpT
SW50ZXJmYWNlTmFtZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8SW50ZXJmYWNlTmFtZT4geworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNET01XcmFwcGVyPEludGVyZmFjZU5hbWU+IEJhc2U7CisgICAg
c3RhdGljIEpTSW50ZXJmYWNlTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxJbnRlcmZhY2VOYW1lPiYmIGlt
cGwpCisgICAgeworICAgICAgICBKU0ludGVyZmFjZU5hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNJbnRlcmZhY2VOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTSW50ZXJmYWNlTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3Rh
dGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOworCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSW50ZXJmYWNlTmFtZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7Cisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7
CisKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7Citwcm90ZWN0ZWQ6
CisgICAgSlNJbnRlcmZhY2VOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8SW50ZXJmYWNlTmFtZT4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgfQorCit9OworCitjbGFzcyBKU0ludGVy
ZmFjZU5hbWVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4
dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01X
cmFwcGVyV29ybGQmLCBJbnRlcmZhY2VOYW1lKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SlNJbnRlcmZhY2VOYW1lT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7
Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KEludGVyZmFjZU5hbWUqIHdyYXBwYWJsZU9i
amVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSW50ZXJmYWNlTmFtZSYp
OworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50ZXJmYWNlTmFtZSogaW1wbCkgeyByZXR1cm4g
aW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsg
fQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxJbnRlcmZhY2VOYW1lPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxJbnRlcmZhY2VOYW1lPiYmIGltcGwpIHsgcmV0dXJuIGlt
cGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5v
bk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
SW50ZXJmYWNlTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NSW50ZXJmYWNlTmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJjMjA4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01JbnRlcmZhY2VOYW1lLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitXRUJLSVRf
Q0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERP
TUludGVyZmFjZU5hbWUgOiBET01PYmplY3QKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWUubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01JbnRlcmZhY2VOYW1lLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMDZhZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01JbnRl
cmZhY2VOYW1lLm1tCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01JbnRlcmZhY2VOYW1lLmgi
CisKKyNpbXBvcnQgIkRPTUludGVyZmFjZU5hbWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9k
ZUludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSW50
ZXJmYWNlTmFtZS5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0
ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQg
IldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW50ZXJmYWNlTmFtZSo+KF9pbnRl
cm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTUludGVyZmFjZU5hbWUKKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFk
KFtET01JbnRlcmZhY2VOYW1lIGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGRlYWxs
b2NdOworfQorCitAZW5kCisKK1dlYkNvcmU6OkludGVyZmFjZU5hbWUqIGNvcmUoRE9NSW50ZXJm
YWNlTmFtZSAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6SW50ZXJmYWNlTmFtZSo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQor
CitET01JbnRlcmZhY2VOYW1lICpraXQoV2ViQ29yZTo6SW50ZXJmYWNlTmFtZSogdmFsdWUpCit7
CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBpZiAoIXZh
bHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01JbnRlcmZhY2VOYW1lICp3cmFw
cGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCisgICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0
YWluXSBhdXRvcmVsZWFzZV07CisgICAgRE9NSW50ZXJmYWNlTmFtZSAqd3JhcHBlciA9IFtbRE9N
SW50ZXJmYWNlTmFtZSBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJl
ZigpOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3Jh
cHBlciBhdXRvcmVsZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01JbnRlcmZhY2VOYW1lSW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWVJbnRlcm5h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZTVlNzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01J
bnRlcmZhY2VOYW1lSW50ZXJuYWwuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
PFdlYkNvcmUvRE9NSW50ZXJmYWNlTmFtZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBJbnRlcmZhY2VOYW1lOworfQorCitXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpJbnRlcmZhY2VO
YW1lKiBjb3JlKERPTUludGVyZmFjZU5hbWUgKik7CitXRUJDT1JFX0VYUE9SVCBET01JbnRlcmZh
Y2VOYW1lICpraXQoV2ViQ29yZTo6SW50ZXJmYWNlTmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNWFl
ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5pZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBSZXBvcnRFeHRy
YU1lbW9yeUNvc3QsCitdIGludGVyZmFjZSBJbnRlcmZhY2VOYW1lIHsKK307CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>