<?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>163381</bug_id>
          
          <creation_ts>2016-10-12 23:07:19 -0700</creation_ts>
          <short_desc>[WebIDL] Add support to bindings generator for half-open dictionaries</short_desc>
          <delta_ts>2022-02-27 23:10:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rawinder Singh">rawinder.webkit</reporter>
          <assigned_to name="Rawinder Singh">rawinder.webkit</assigned_to>
          <cc>annevk</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239702</commentid>
    <comment_count>0</comment_count>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-12 23:07:19 -0700</bug_when>
    <thetext>This bug has superseded Bug #158509 ([WebIDL] Add support for sequence&lt;Dictionary&gt;).

Add support to bindings generator for half-open dictionaries, e.g.:
(see Bug #158509, comment #14 for further discussion of why this feature is being added)

[
    OpenPropertyType=DOMString
]
dictionary OpenPropertyTypeDictionary1 {
   ...
};

This will be used for the Web Animations API implementation (see Bug #158508). Further test cases for this feature will be added as part of the implementation of Bug #158508.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239704</commentid>
    <comment_count>1</comment_count>
      <attachid>291457</attachid>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-12 23:20:40 -0700</bug_when>
    <thetext>Created attachment 291457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239707</commentid>
    <comment_count>2</comment_count>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-12 23:24:03 -0700</bug_when>
    <thetext>*** Bug 158509 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239710</commentid>
    <comment_count>3</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2016-10-12 23:39:47 -0700</bug_when>
    <thetext>Note the discussion in https://github.com/heycam/webidl/pull/180. You might want to align your syntax or give input with respect to the requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239711</commentid>
    <comment_count>4</comment_count>
      <attachid>291458</attachid>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-12 23:40:38 -0700</bug_when>
    <thetext>Created attachment 291458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239713</commentid>
    <comment_count>5</comment_count>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-12 23:55:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Note the discussion in https://github.com/heycam/webidl/pull/180. You might
&gt; want to align your syntax or give input with respect to the requirements.

Okay, thanks for the link - I&apos;ll have a look and possibly update the patch.

In the meanwhile, could Sam or Chris have a look at the general implementation and let me know if you have any comments (as this overlaps with changes you have both been making in the generators and converters recently).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239794</commentid>
    <comment_count>6</comment_count>
      <attachid>291458</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-13 09:24:25 -0700</bug_when>
    <thetext>Comment on attachment 291458
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        WebKit IDL extended dictionary attribute &quot;OpenPropertyType&quot;.

Can you point me to the specification for this? I cannot find OpenPropertyType at https://heycam.github.io/webidl/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239796</commentid>
    <comment_count>7</comment_count>
      <attachid>291458</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-13 09:32:58 -0700</bug_when>
    <thetext>Comment on attachment 291458
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:345
&gt; +    template&lt;typename ReturnType, typename T&gt; bool addResultIfValid(ReturnType &amp;result, WTF::Optional&lt;T&gt; &amp;value)

&amp; is on the wrong side.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:638
&gt; +template&lt;typename IDLType&gt; HashMap&lt;String, typename IDLType::ImplementationType&gt; convertDictionaryProperties(JSC::ExecState&amp; state, JSC::JSObject&amp; object)

I think there should be &quot;Open&quot; somewhere in the name. Maybe convertOpenDictionary? or convertOpenDictionaryType?

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:648
&gt; +        result.add(propertyName.string(), value);

WTFMove(value) ?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1154
&gt; +    # 6. Process WebKit extended IDL attribute (OpenPropertyType) for half-open dictionary:

The steps numbering currently match the specification. However, I cannot find this new step in the spec?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1155
&gt; +    my $idlOpenPropertyType = $dictionary-&gt;extendedAttributes-&gt;{&quot;OpenPropertyType&quot;};

quotes are not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239799</commentid>
    <comment_count>8</comment_count>
      <attachid>291458</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-13 09:34:51 -0700</bug_when>
    <thetext>Comment on attachment 291458
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        WebKit IDL extended dictionary attribute &quot;OpenPropertyType&quot;.
&gt; 
&gt; Can you point me to the specification for this? I cannot find OpenPropertyType at https://heycam.github.io/webidl/

Ok, I found https://github.com/heycam/webidl/pull/180 in the comments. Should we wait until people agree upon a given syntax before we land this patch? It seems the latest proposals look pretty different from what&apos;s implemented here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241734</commentid>
    <comment_count>9</comment_count>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-18 17:56:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 291458 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291458&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:9
&gt; &gt;&gt; +        WebKit IDL extended dictionary attribute &quot;OpenPropertyType&quot;.
&gt; &gt; 
&gt; &gt; Can you point me to the specification for this? I cannot find OpenPropertyType at https://heycam.github.io/webidl/
&gt; 
&gt; Ok, I found https://github.com/heycam/webidl/pull/180 in the comments.
&gt; Should we wait until people agree upon a given syntax before we land this
&gt; patch? It seems the latest proposals look pretty different from what&apos;s
&gt; implemented here.

&quot;OpenPropertyType&quot; is equivalent to the syntax that Sam described in Bug #158509, comment #14 (in his suggested syntax it was called &quot;HalfOpenType&quot;) - it is the specialised WebKit IDL extended attribute for dictionaries that was discussed.

According to Bug #158509, comment #5, the Web IDL syntax for open dictionaries is still being discussed and will not become stable for a while. I am worried that this will stall the Web Animations API implementation - I would like to put this in temporarily (maybe with a FIXME) and update the implementation when the Web IDL syntax does finally become stable - what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242207</commentid>
    <comment_count>10</comment_count>
      <attachid>292129</attachid>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-19 17:12:18 -0700</bug_when>
    <thetext>Created attachment 292129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242214</commentid>
    <comment_count>11</comment_count>
      <attachid>292131</attachid>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-19 17:19:31 -0700</bug_when>
    <thetext>Created attachment 292131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242247</commentid>
    <comment_count>12</comment_count>
      <attachid>292142</attachid>
    <who name="Rawinder Singh">rawinder.webkit</who>
    <bug_when>2016-10-19 19:33:09 -0700</bug_when>
    <thetext>Created attachment 292142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399128</commentid>
    <comment_count>13</comment_count>
      <attachid>292142</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-02-14 10:34:32 -0800</bug_when>
    <thetext>Comment on attachment 292142
Patch

Patches that have been up for review since 2016 are almost certainly too stale to be relevant to trunk in their current form.

If this patch is still important please rebase it and post it for review again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291457</attachid>
            <date>2016-10-12 23:20:40 -0700</date>
            <delta_ts>2016-10-12 23:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163381-20161013171617.patch</filename>
            <type>text/plain</type>
            <size>26230</size>
            <attacher name="Rawinder Singh">rawinder.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ1YTI1MjEzMDc4MWY2
NWMyZTdiZDcxNjlmMzhlZTNmMzRmM2RjMy4uOWJkY2RkNThhM2Y1ZGRiZjY5NjdkYjdiY2JkNGQw
YmJhMzcyMzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE2LTEwLTEyICBSYXdp
bmRlciBTaW5naCAgPHJhd2luZGVyLnNpbmdoLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CisK
KyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgdG8gYmluZGluZ3MgZ2VuZXJhdG9yIGZvciBo
YWxmLW9wZW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjMzODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29udmVydERpY3Rpb25hcnlQcm9wZXJ0aWVzIGFuZCBnZW5lcmF0
ZSBiaW5kaW5nIGNvZGUgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIGZvciAKKyAgICAgICAgV2ViS2l0
IElETCBleHRlbmRlZCBkaWN0aW9uYXJ5IGF0dHJpYnV0ZSAiT3BlblByb3BlcnR5VHlwZSIuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRldGFpbDo6YWRkUmVzdWx0SWZWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OkFy
cmF5Q29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9u
YXJ5UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAocGFy
c2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlOjpEaWN0aW9uYXJ5MT4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90
eXBlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGU6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Z2V0
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBwZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmlkbDogQWRkZWQuCisKIDIwMTYtMTAt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgSFRN
TFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcygpIHRvIGlnbm9yZSBuZXN0ZWQgb3B0Z3Jv
dXAgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5k
ZXggZDU1OGM2NzAzOGUxYzc3Y2RhNDNlZDA2MjUxNTEzY2RlMWMyOGRkOC4uODUwN2YzMGNlMGFh
NmQ0NjE1OGQzZGM0NTIxMmIzNDQ1OTg4ZDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmgKQEAgLTMzNSw2ICszMzUsMjIgQEAgbmFtZXNwYWNlIERldGFpbCB7
CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBWZWN0b3I8UmVmUHRyPFQ+PjsKICAgICB9Owog
CisgICAgLy8gQ2hlY2sgaWYgaW5wdXQgaXMgb3B0aW9uYWwgYW5kIGFkZCB0byB0aGUgcmVzdWx0
IChzbyB0aGF0IHdlIGNhbiBoYW5kbGUgaXQgZGlmZmVyZW50bHkpLgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+IGJvb2wgYWRkUmVzdWx0SWZWYWxpZChSZXR1
cm5UeXBlICZyZXN1bHQsIFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChX
VEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+IGJvb2wgYWRkUmVzdWx0SWZWYWxp
ZChSZXR1cm5UeXBlICZyZXN1bHQsIFdURjo6T3B0aW9uYWw8VD4gJnZhbHVlKQorICAgIHsKKyAg
ICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKnZh
bHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KICAgICBz
dHJ1Y3QgQXJyYXlDb252ZXJ0ZXIgOiBBcnJheUNvbnZlcnRlckJhc2U8SURMVHlwZT4gewogICAg
ICAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgQXJyYXlDb252ZXJ0ZXJCYXNlPElETFR5
cGU+OjpSZXR1cm5UeXBlOwpAQCAtMzU2LDcgKzM3Miw4IEBAIG5hbWVzcGFjZSBEZXRhaWwgewog
ICAgICAgICAgICAgICAgIGF1dG8gY29udmVydGVkVmFsdWUgPSBDb252ZXJ0ZXI8SURMVHlwZT46
OmNvbnZlcnQoKnN0YXRlLCBqc1ZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFhZGRSZXN1bHRJZlZhbGlkKHJlc3VsdCwgY29udmVydGVkVmFsdWUpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTYxOCw0ICs2MzUsMjIgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4gdHlwZW5hbWUgRGV0YWlsOjpWYXJpYWRpY0NvbnZlcnRlcjxJRExU
eXBlPjo6UmVzdWx0IGMKICAgICByZXR1cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9Owog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBIYXNoTWFwPFN0cmluZywgdHlwZW5hbWUg
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiBjb252ZXJ0RGljdGlvbmFyeVByb3BlcnRpZXMo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBvYmplY3QpCit7CisgICAgSGFz
aE1hcDxTdHJpbmcsIHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0
OworICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU0M6OlByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFt
ZXMoJnN0YXRlLCBKU0M6OlByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOworICAgIEpTQzo6SlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoJm9iamVjdCwgJnN0YXRlLCBwcm9wZXJ0eU5hbWVz
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKKworICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1l
IDogcHJvcGVydHlOYW1lcykgeworICAgICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSA9IG9iamVj
dC5nZXQoJnN0YXRlLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBhdXRvIHZhbHVlID0gQ29udmVy
dGVyPElETFR5cGU+Ojpjb252ZXJ0KHN0YXRlLCBqc1ZhbHVlKTsKKyAgICAgICAgcmVzdWx0LmFk
ZChwcm9wZXJ0eU5hbWUuc3RyaW5nKCksIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDg2OWE0NTRhMGU4MjA0
MmE1NmExZTkxZTVkYmE2ODlkMDI0YjBiYmMuLjFhODgyZTRlYzE3OWI0OGQ3M2I3YmVkZGUzYjJj
NTFlYTNmNjkyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMTUxLDYgKzExNTEsMTUgQEAgc3ViIEdlbmVyYXRlRGlj
dGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICB9CiAgICAgfQogCisgICAgIyA2
LiBQcm9jZXNzIFdlYktpdCBleHRlbmRlZCBJREwgYXR0cmlidXRlIChPcGVuUHJvcGVydHlUeXBl
KSBmb3IgaGFsZi1vcGVuIGRpY3Rpb25hcnk6CisgICAgbXkgJGlkbE9wZW5Qcm9wZXJ0eVR5cGUg
PSAkZGljdGlvbmFyeS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wZW5Qcm9wZXJ0eVR5cGUifTsK
KyAgICBpZiAoJGlkbE9wZW5Qcm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNET01Db252ZXJ0LmgifSA9IDE7CisgICAgICAgIG15ICRvcGVuUHJvcGVydHlUeXBlID0gR2V0
SURMVHlwZSgkZGljdGlvbmFyeSwgJGlkbE9wZW5Qcm9wZXJ0eVR5cGUpOworICAgICAgICAkcmVz
dWx0IC49ICIgICAgcmVzdWx0LnByb3BlcnRpZXMgPSBjb252ZXJ0RGljdGlvbmFyeVByb3BlcnRp
ZXM8JHtvcGVuUHJvcGVydHlUeXBlfT4oc3RhdGUsICpvYmplY3QpO1xuIjsKKyAgICAgICAgJHJl
c3VsdCAuPSAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7XG4i
OworICAgIH0KKwogICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpO1xu
IjsKICAgICAkcmVzdWx0IC49ICJ9XG5cbiI7CiAgICAgJHJlc3VsdCAuPSAiI2VuZGlmXG5cbiIg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbQppbmRleCBhYWJlOGJjZWNhMTRjODhlYzNjNDAyZmMxZDc5YTIwZGI5MzE2
YzQwLi4yMzkyYzg2OTZmMDM3OWM4MGEwMWFmMGE0ZDA0MTQzNWM0MWI5YjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMTgwMCw2ICsxODAw
LDEyIEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVzdAogICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIikiLCBfX0xJTkVfXyk7CiAgICAgICAg
IHJldHVybiAkYXR0cnM7CiAgICAgfQorICAgICMgUGVyZm9ybSBwcm9jZXNzaW5nIGZvciBzcGVj
aWFsIGNhc2UgV2ViS2l0IElETCBleHRlbmRlZCBkaWN0aW9uYXJ5IGF0dHJpYnV0ZSAiT3BlblBy
b3BlcnR5VHlwZSI6CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICI9IiAmJiAkbmFtZSBlcSAi
T3BlblByb3BlcnR5VHlwZSIpIHsKKyAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNl
bGYtPmdldFRva2VuKCksICI9IiwgX19MSU5FX18pOworICAgICAgICAkYXR0cnMtPnskbmFtZX0g
PSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgIHJldHVybiAkYXR0cnM7CisgICAgfQogICAg
IGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiPSIpIHsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI9IiwgX19MSU5FX18pOwogICAgICAgICAkYXR0cnMt
PnskbmFtZX0gPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mM2M3ZmRiZDNhMTNkNDg4MDM2MWM1NGQ1MDM1NjFkZWI3MTRhMWM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcApAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9vbCBpc051bGxPclVu
ZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgYXV0byogb2JqZWN0ID0g
aXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2JqZWN0KCk7CisgICAgaWYg
KFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICB9CisgICAgaWYgKFVOTElLRUxZKG9iamVjdCAmJiBvYmplY3QtPnR5cGUoKSA9PSBSZWdF
eHBPYmplY3RUeXBlKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2Nv
cGUpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9CisgICAgVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MSByZXN1bHQ7CisgICAgcmVzdWx0LnByb3BlcnRp
ZXMgPSBjb252ZXJ0RGljdGlvbmFyeVByb3BlcnRpZXM8SURMRE9NU3RyaW5nPihzdGF0ZSwgKm9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K2Jvb2wgc2V0SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
CitjbGFzcyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdERp
Y3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpT
Tm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZT47CisKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsK
KyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHRl
c3QxID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExEaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTE+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGU6OmNyZWF0ZShXVEZNb3ZlKHRlc3QxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92
ZShvYmplY3QpKSk7Cit9CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VE
X1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7
Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpwcm90b3R5cGUodm0s
ICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
JnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUi
KSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUi
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1
Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9y
KSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZVByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
aWVzKHZtLCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZTo6c19pbmZvID0geyAiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZSkgfTsKKworSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30K
KworSlNPYmplY3QqIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpjcmVhdGVQcm90
b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGU6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZT4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK3ZvaWQgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdERp
Y3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjp+SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGUoKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNl
dEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBkb21PYmplY3QtPnB1
dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpOworfQorCitKU1ZhbHVlIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK2Jvb2wgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVTlVT
RURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlT3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0
KQoreworICAgIGF1dG8qIGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlID0ganNDYXN0
PEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxs
KCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGUtPndyYXBwZWQoKSwganNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUp
OworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
ICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQq
IF9aVFZON1dlYkNvcmUzMFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUVbXTsgfQorI2Vu
ZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0
ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/
P183VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNl
CisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUzMFRlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUVbMl07CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAg
Ly8gSWYgdGhpcyBmYWlscyBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgZG9lcyBub3Qg
aGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAg
IHN0YXRpY19hc3NlcnQoX19pc19wb2x5bW9ycGhpYyhUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGUpLCAiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIGlzIG5vdCBwb2x5bW9ycGhp
YyIpOworI2VuZGlmCisjZW5kaWYKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlv
dSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0
b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
K30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUmIGlt
cGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSogSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
Kj4odmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmVjMjg4ZDZhNjM0NTkwYjQzZjI1YzM0ZGMyZDAy
MWUxOTRkNzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmgKQEAgLTAsMCAr
MSw5MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUg
IlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT47CisgICAgc3RhdGljIEpTVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZT4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSog
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+JiYpOworCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIH0KKworfTsKKwor
Y2xhc3MgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVPd25lciA6IHB1YmxpYyBKU0M6
OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQs
IEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFr
SGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGUqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVy
LmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGUqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2Jq
ZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlJik7CitpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUqIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKHN0YXRlLCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7
IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCBSZWY8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlPiYmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQo
c3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxs
KCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9
IEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOworfTsKK3RlbXBsYXRlPD4gT3B0aW9u
YWw8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MT4gY29udmVydERp
Y3Rpb25hcnk8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MT4oSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDc1YTdlNjk0ZjMzM2E3ODU2ZWQ1ZWNjNjM4ODUxNzhmOTkzYTNjNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGUuaWRsCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IENhbm9uIEluYy4gMjAxNgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0
b3IgZm9yIHRoZSBXZWJLaXQgZXh0ZW5kZWQgSURMCisvLyBhdHRyaWJ1dGUgKE9wZW5Qcm9wZXJ0
eVR5cGUpIGZvciBoYWxmLW9wZW4gZGljdGlvbmFyaWVzLgorWworICAgIE9wZW5Qcm9wZXJ0eVR5
cGU9RE9NU3RyaW5nCitdCitkaWN0aW9uYXJ5IE9wZW5Qcm9wZXJ0eVR5cGVEaWN0aW9uYXJ5MSB7
Cit9OworCitbCisgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8T3BlblByb3BlcnR5VHlwZURpY3Rp
b25hcnkxPiB0ZXN0MSkKK10gaW50ZXJmYWNlIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZSB7Cit9OworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291458</attachid>
            <date>2016-10-12 23:40:38 -0700</date>
            <delta_ts>2016-10-19 17:12:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163381-20161013173615.patch</filename>
            <type>text/plain</type>
            <size>26159</size>
            <attacher name="Rawinder Singh">rawinder.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ1YTI1MjEzMDc4MWY2
NWMyZTdiZDcxNjlmMzhlZTNmMzRmM2RjMy4uOWJkY2RkNThhM2Y1ZGRiZjY5NjdkYjdiY2JkNGQw
YmJhMzcyMzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE2LTEwLTEyICBSYXdp
bmRlciBTaW5naCAgPHJhd2luZGVyLnNpbmdoLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CisK
KyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgdG8gYmluZGluZ3MgZ2VuZXJhdG9yIGZvciBo
YWxmLW9wZW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjMzODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29udmVydERpY3Rpb25hcnlQcm9wZXJ0aWVzIGFuZCBnZW5lcmF0
ZSBiaW5kaW5nIGNvZGUgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIGZvciAKKyAgICAgICAgV2ViS2l0
IElETCBleHRlbmRlZCBkaWN0aW9uYXJ5IGF0dHJpYnV0ZSAiT3BlblByb3BlcnR5VHlwZSIuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRldGFpbDo6YWRkUmVzdWx0SWZWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OkFy
cmF5Q29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9u
YXJ5UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAocGFy
c2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlOjpEaWN0aW9uYXJ5MT4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90
eXBlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGU6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Z2V0
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBwZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmlkbDogQWRkZWQuCisKIDIwMTYtMTAt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgSFRN
TFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcygpIHRvIGlnbm9yZSBuZXN0ZWQgb3B0Z3Jv
dXAgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5k
ZXggZDU1OGM2NzAzOGUxYzc3Y2RhNDNlZDA2MjUxNTEzY2RlMWMyOGRkOC4uZGY3ZDQxYmJiMmU3
NTAyZGE2ZWFmZTRmYWZmOTMzNTliZGQ3MzMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmgKQEAgLTMzNSw2ICszMzUsMjIgQEAgbmFtZXNwYWNlIERldGFpbCB7
CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBWZWN0b3I8UmVmUHRyPFQ+PjsKICAgICB9Owog
CisgICAgLy8gQ2hlY2sgaWYgaW5wdXQgaXMgb3B0aW9uYWwgYW5kIGFkZCB0byB0aGUgcmVzdWx0
IChzbyB0aGF0IHdlIGNhbiBoYW5kbGUgaXQgZGlmZmVyZW50bHkpLgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+IGJvb2wgYWRkUmVzdWx0SWZWYWxpZChSZXR1
cm5UeXBlICZyZXN1bHQsIFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChX
VEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+IGJvb2wgYWRkUmVzdWx0SWZWYWxp
ZChSZXR1cm5UeXBlICZyZXN1bHQsIFdURjo6T3B0aW9uYWw8VD4gJnZhbHVlKQorICAgIHsKKyAg
ICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKnZh
bHVlKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KICAgICBz
dHJ1Y3QgQXJyYXlDb252ZXJ0ZXIgOiBBcnJheUNvbnZlcnRlckJhc2U8SURMVHlwZT4gewogICAg
ICAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgQXJyYXlDb252ZXJ0ZXJCYXNlPElETFR5
cGU+OjpSZXR1cm5UeXBlOwpAQCAtMzU2LDcgKzM3Miw4IEBAIG5hbWVzcGFjZSBEZXRhaWwgewog
ICAgICAgICAgICAgICAgIGF1dG8gY29udmVydGVkVmFsdWUgPSBDb252ZXJ0ZXI8SURMVHlwZT46
OmNvbnZlcnQoKnN0YXRlLCBqc1ZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFhZGRSZXN1bHRJZlZhbGlkKHJlc3VsdCwgY29udmVydGVkVmFsdWUpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTYxOCw0ICs2MzUsMjAgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4gdHlwZW5hbWUgRGV0YWlsOjpWYXJpYWRpY0NvbnZlcnRlcjxJRExU
eXBlPjo6UmVzdWx0IGMKICAgICByZXR1cm4geyBsZW5ndGgsIFdURk1vdmUocmVzdWx0KSB9Owog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBIYXNoTWFwPFN0cmluZywgdHlwZW5hbWUg
SURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiBjb252ZXJ0RGljdGlvbmFyeVByb3BlcnRpZXMo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBvYmplY3QpCit7CisgICAgSGFz
aE1hcDxTdHJpbmcsIHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0
OworCisgICAgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKCZzdGF0ZSwgSlND
OjpQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKTsKKyAgICBKU0M6OkpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKCZvYmplY3QsICZzdGF0ZSwgcHJvcGVydHlOYW1lcywgSlNDOjpFbnVtZXJh
dGlvbk1vZGUoKSk7CisKKyAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHByb3BlcnR5TmFt
ZXMpIHsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUgPSBvYmplY3QuZ2V0KCZzdGF0ZSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IENvbnZlcnRlcjxJRExUeXBlPjo6
Y29udmVydChzdGF0ZSwganNWYWx1ZSk7CisgICAgICAgIHJlc3VsdC5hZGQocHJvcGVydHlOYW1l
LnN0cmluZygpLCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4NjlhNDU0YTBlODIwNDJhNTZhMWU5MWU1ZGJh
Njg5ZDAyNGIwYmJjLi4xYTg4MmU0ZWMxNzliNDhkNzNiN2JlZGRlM2IyYzUxZWEzZjY5MjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQpAQCAtMTE1MSw2ICsxMTUxLDE1IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1l
bnRhdGlvbkNvbnRlbnQKICAgICAgICAgfQogICAgIH0KIAorICAgICMgNi4gUHJvY2VzcyBXZWJL
aXQgZXh0ZW5kZWQgSURMIGF0dHJpYnV0ZSAoT3BlblByb3BlcnR5VHlwZSkgZm9yIGhhbGYtb3Bl
biBkaWN0aW9uYXJ5OgorICAgIG15ICRpZGxPcGVuUHJvcGVydHlUeXBlID0gJGRpY3Rpb25hcnkt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcGVuUHJvcGVydHlUeXBlIn07CisgICAgaWYgKCRpZGxP
cGVuUHJvcGVydHlUeXBlKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQ29udmVydC5o
In0gPSAxOworICAgICAgICBteSAkb3BlblByb3BlcnR5VHlwZSA9IEdldElETFR5cGUoJGRpY3Rp
b25hcnksICRpZGxPcGVuUHJvcGVydHlUeXBlKTsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIHJl
c3VsdC5wcm9wZXJ0aWVzID0gY29udmVydERpY3Rpb25hcnlQcm9wZXJ0aWVzPCR7b3BlblByb3Bl
cnR5VHlwZX0+KHN0YXRlLCAqb2JqZWN0KTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpO1xuIjsKKyAgICB9CisKICAg
ICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTtcbiI7CiAgICAgJHJlc3Vs
dCAuPSAifVxuXG4iOwogICAgICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRjb25kaXRpb25h
bFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
UGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
aW5kZXggYWFiZThiY2VjYTE0Yzg4ZWMzYzQwMmZjMWQ3OWEyMGRiOTMxNmM0MC4uMjM5MmM4Njk2
ZjAzNzljODBhMDFhZjBhNGQwNDE0MzVjNDFiOWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTE4MDAsNiArMTgwMCwxMiBAQCBzdWIgcGFy
c2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUo
JHNlbGYtPmdldFRva2VuKCksICIpIiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJGF0dHJz
OwogICAgIH0KKyAgICAjIFBlcmZvcm0gcHJvY2Vzc2luZyBmb3Igc3BlY2lhbCBjYXNlIFdlYktp
dCBJREwgZXh0ZW5kZWQgZGljdGlvbmFyeSBhdHRyaWJ1dGUgIk9wZW5Qcm9wZXJ0eVR5cGUiOgor
ICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiPSIgJiYgJG5hbWUgZXEgIk9wZW5Qcm9wZXJ0eVR5
cGUiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigp
LCAiPSIsIF9fTElORV9fKTsKKyAgICAgICAgJGF0dHJzLT57JG5hbWV9ID0gJHNlbGYtPnBhcnNl
VHlwZSgpOworICAgICAgICByZXR1cm4gJGF0dHJzOworICAgIH0KICAgICBpZiAoJG5leHQtPnZh
bHVlKCkgZXEgIj0iKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5n
ZXRUb2tlbigpLCAiPSIsIF9fTElORV9fKTsKICAgICAgICAgJGF0dHJzLT57JG5hbWV9ID0gJHNl
bGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVSZXN0MigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNjN2ZkYmQzYTEz
ZDQ4ODAzNjFjNTRkNTAzNTYxZGViNzE0YTFjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZS5jcHAKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlOjpEaWN0aW9uYXJ5MT4gY29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZp
bmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNO
dWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgfQorICAgIGlm
IChVTkxJS0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgfQorICAgIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZTo6RGljdGlvbmFyeTEgcmVzdWx0OworICAgIHJlc3VsdC5wcm9wZXJ0aWVzID0gY29udmVydERp
Y3Rpb25hcnlQcm9wZXJ0aWVzPElETERPTVN0cmluZz4oc3RhdGUsICpvYmplY3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKK30KKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlw
ZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYpOworfTsKKwordXNpbmcgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVD
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGU+OworCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKGNh
c3RlZFRoaXMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byB0ZXN0MSA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6
OkRpY3Rpb25hcnkxPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IGF1dG8gb2JqZWN0ID0gVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpjcmVhdGUoV1RG
TW92ZSh0ZXN0MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRl
ZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwor
fQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7Cisg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIikpKSwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZUNvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51
bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcikgfSB9LAorfTsKKwor
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwor
fQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OnNf
aW5mbyA9IHsgIlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUp
IH07CisKK0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4mJiBpbXBs
KQorICAgIDogSlNET01XcmFwcGVyPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK0pTT2JqZWN0KiBK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30K
KworSlNPYmplY3QqIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRE
T01Qcm90b3R5cGU8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+KHZtLCBnbG9iYWxP
YmplY3QpOworfQorCit2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZTo6fkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Cit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUt
PnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30KKwor
SlNWYWx1ZSBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworfQorCitib29sIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRs
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRv
KiBqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSA9IGpzQ2FzdDxKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLT53
cmFwcGVkKCksIGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKTsKK30KKworI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRl
bnRpZmllcigiPz9fN1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUBXZWJDb3JlQEA2QkAi
KVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
MzBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVFW107IH0KKyNlbmRpZgorI2VuZGlmCisK
K0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIHZvaWQq
IGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0
cigpKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZUBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQqIGV4
cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMzBUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGVFWzJdOworI2lmIENPTVBJTEVSKENMQU5HKQorICAgIC8vIElmIHRoaXMgZmFp
bHMgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIGRvZXMgbm90IGhhdmUgYSB2dGFibGUs
IHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
IGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0
KF9faXNfcG9seW1vcnBoaWMoVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKSwgIlRlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSBpcyBub3QgcG9seW1vcnBoaWMiKTsKKyNlbmRpZgor
I2VuZGlmCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUg
YSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUg
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSB5b3UgdG8gb3B0IG91
dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZh
bGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBS
RUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRl
cik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlJiBpbXBsKQoreworICAgIHJl
dHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGUqIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSo+KHZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjZlYzI4OGQ2YTYzNDU5MGI0M2YyNWMzNGRjMmQwMjFlMTk0ZDc1MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgor
ICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZl
cnQuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
PiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGU+OworICAgIHN0YXRpYyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+JiYg
aW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAg
ICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUqIHRvV3JhcHBlZChKU0M6
OkpTVmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB9CisKK307CisKK2NsYXNzIEpTVGVzdERp
Y3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKwor
aW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKiB3
cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
UmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4mJik7CitpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxP
YmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBs
YXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZTsKK307Cit0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTE+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTE+KEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlKTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NWE3ZTY5NGYzMzNh
Nzg1NmVkNWVjYzYzODg1MTc4Zjk5M2EzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
LmlkbApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSBDYW5vbiBJbmMuIDIw
MTYKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZp
bGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGZvciB0aGUgV2Vi
S2l0IGV4dGVuZGVkIElETAorLy8gYXR0cmlidXRlIChPcGVuUHJvcGVydHlUeXBlKSBmb3IgaGFs
Zi1vcGVuIGRpY3Rpb25hcmllcy4KK1sKKyAgICBPcGVuUHJvcGVydHlUeXBlPURPTVN0cmluZwor
XQorZGljdGlvbmFyeSBPcGVuUHJvcGVydHlUeXBlRGljdGlvbmFyeTEgeworfTsKKworWworICAg
IENvbnN0cnVjdG9yKHNlcXVlbmNlPE9wZW5Qcm9wZXJ0eVR5cGVEaWN0aW9uYXJ5MT4gdGVzdDEp
CitdIGludGVyZmFjZSBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgeworfTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292129</attachid>
            <date>2016-10-19 17:12:18 -0700</date>
            <delta_ts>2016-10-19 17:19:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163381-20161020110744.patch</filename>
            <type>text/plain</type>
            <size>24728</size>
            <attacher name="Rawinder Singh">rawinder.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxYjk3ZTc1YmFiYzg3
ZDU1ZmYzYzY4OTgxNmYyYjQ2YmJiNDVjNC4uY2ZmZmI0ZmU2YWM1NzUzYzk1ZjQ2MjBkZmFkM2Q2
Y2I2MDg3ZDczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE2LTEwLTE5ICBSYXdp
bmRlciBTaW5naCAgPHJhd2luZGVyLnNpbmdoLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CisK
KyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgdG8gYmluZGluZ3MgZ2VuZXJhdG9yIGZvciBo
YWxmLW9wZW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjMzODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29udmVydERpY3Rpb25hcnlQcm9wZXJ0aWVzIGFuZCBnZW5lcmF0
ZSBiaW5kaW5nIGNvZGUgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIGZvcgorICAgICAgICBXZWJLaXQg
SURMIGV4dGVuZGVkIGRpY3Rpb25hcnkgYXR0cmlidXRlICJPcGVuUHJvcGVydHlUeXBlIi4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydE9wZW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9u
Q29udGVudCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAg
ICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVQcm90b3R5cGU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyOjpmaW5h
bGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsOiBBZGRlZC4KKwog
MjAxNi0xMC0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
bm5vdGF0ZSBtb3JlIERPTSBhbmQgSFRNTCBJRExzIHdpdGggQ0VSZWFjdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggMTFhOTQ3ZDIzZjRjMGU1ZWM4
NzZiODQ5YWQ2ZWZmYTg5NmFmZDE5MC4uZGNiMTVlNTlkNTJjOTRmYmEyZjcxMzllNjUyNzFmYzJk
NGNmODEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKQEAg
LTY2MCw0ICs2NjAsMjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEJ1ZmZlclNv
dXJjZT4gOiBEZWZhdWx0Q29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4KICAgICB9CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBIYXNoTWFwPFN0cmluZywgdHlwZW5hbWUgSURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlPiBjb252ZXJ0T3BlbkRpY3Rpb25hcnkoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBvYmplY3QpCit7CisgICAgSGFzaE1hcDxTdHJpbmcs
IHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0OworCisgICAgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKCZzdGF0ZSwgSlNDOjpQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzKTsKKyAgICBKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KCZvYmplY3QsICZzdGF0ZSwgcHJvcGVydHlOYW1lcywgSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7
CisKKyAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHByb3BlcnR5TmFtZXMpIHsKKyAgICAg
ICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUgPSBvYmplY3QuZ2V0KCZzdGF0ZSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydChzdGF0
ZSwganNWYWx1ZSk7CisgICAgICAgIHJlc3VsdC5hZGQocHJvcGVydHlOYW1lLnN0cmluZygpLCBX
VEZNb3ZlKHZhbHVlKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2ZDY1OWViZGZlMDk5MDc3MzViMDM3N2RmNThiYjVm
NTRiMDJkNzc0Li41Y2Q0MGE1Y2NhMDZkY2FkYjIzY2NiOGQwOWUzNjdkMzdmNzFlNDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMTE2NSw2ICsxMTY1LDE1IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRh
dGlvbkNvbnRlbnQKICAgICAgICAgfQogICAgIH0KIAorICAgICMgNi4gUHJvY2VzcyBXZWJLaXQg
ZXh0ZW5kZWQgSURMIGF0dHJpYnV0ZSAoT3BlblByb3BlcnR5VHlwZSkgZm9yIGhhbGYtb3BlbiBk
aWN0aW9uYXJ5OgorICAgIG15ICRpZGxPcGVuUHJvcGVydHlUeXBlID0gJGRpY3Rpb25hcnktPmV4
dGVuZGVkQXR0cmlidXRlcy0+e09wZW5Qcm9wZXJ0eVR5cGV9OworICAgIGlmICgkaWRsT3BlblBy
b3BlcnR5VHlwZSkgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUNvbnZlcnQuaCJ9ID0g
MTsKKyAgICAgICAgbXkgJG9wZW5Qcm9wZXJ0eVR5cGUgPSBHZXRJRExUeXBlKCRkaWN0aW9uYXJ5
LCAkaWRsT3BlblByb3BlcnR5VHlwZSk7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICByZXN1bHQu
cHJvcGVydGllcyA9IGNvbnZlcnRPcGVuRGljdGlvbmFyeTwke29wZW5Qcm9wZXJ0eVR5cGV9Pihz
dGF0ZSwgKm9iamVjdCk7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTtcbiI7CisgICAgfQorCiAgICAgJHJlc3VsdCAu
PSAiICAgIHJldHVybiByZXN1bHQ7XG4iOwogICAgICRyZXN1bHQgLj0gIn1cblxuIjsKICAgICAk
cmVzdWx0IC49ICIjZW5kaWZcblxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IGNkOTY4MzkxMmVlNDcx
MTU4Y2FiOTRiNzMyYmNhYTlmZmRhM2FlNmIuLmUzNWEwNTUyZjJmOGQwYzBiOWJmODc0Yzk5Yzcw
N2Q4NGI3MDczMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCkBAIC0xODE0LDYgKzE4MTQsMTIgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVS
ZXN0CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAi
KSIsIF9fTElORV9fKTsKICAgICAgICAgcmV0dXJuICRhdHRyczsKICAgICB9CisgICAgIyBQZXJm
b3JtIHByb2Nlc3NpbmcgZm9yIHNwZWNpYWwgY2FzZSBXZWJLaXQgSURMIGV4dGVuZGVkIGRpY3Rp
b25hcnkgYXR0cmlidXRlICJPcGVuUHJvcGVydHlUeXBlIjoKKyAgICBpZiAoJG5leHQtPnZhbHVl
KCkgZXEgIj0iICYmICRuYW1lIGVxICJPcGVuUHJvcGVydHlUeXBlIikgeworICAgICAgICAkc2Vs
Zi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIj0iLCBfX0xJTkVfXyk7Cisg
ICAgICAgICRhdHRycy0+eyRuYW1lfSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgcmV0
dXJuICRhdHRyczsKKyAgICB9CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICI9IikgewogICAg
ICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIj0iLCBfX0xJ
TkVfXyk7CiAgICAgICAgICRhdHRycy0+eyRuYW1lfSA9ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0
cmlidXRlUmVzdDIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxMWYyOTlmNTFhMjE5ZmI5YmFkZWIzNzY4ZTJjNTFm
ZmIxZTA2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuY3BwCkBAIC0wLDAg
KzEsMjQzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oIgorCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZTw+IFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTEgY29udmVydERp
Y3Rpb25hcnk8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MT4oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGJv
b2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGF1
dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9iamVj
dCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKFVOTElLRUxZKG9iamVjdCAmJiBvYmplY3QtPnR5cGUo
KSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxIHJlc3VsdDsKKyAgICByZXN1bHQucHJv
cGVydGllcyA9IGNvbnZlcnRPcGVuRGljdGlvbmFyeTxJRExET01TdHJpbmc+KHN0YXRlLCAqb2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5h
bE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9i
amVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mKTsKK307CisKK3VzaW5nIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlPjsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVj
U3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOworICAgIEFTU0VS
VChjYXN0ZWRUaGlzKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdGVzdDEgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlOjpEaWN0aW9uYXJ5MT4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBhdXRvIG9iamVjdCA9IFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRl
KFdURk1vdmUodGVzdDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNy
ZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkp
KTsKK30KKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0p
OworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVt
cGxhdGU8PiB2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9i
amVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmlu
ZyhBU0NJSUxpdGVyYWwoIlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSIpKSksIFJlYWRP
bmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGVDb25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgRG9u
dEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IpIH0gfSwKK307
CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
OjpzX2luZm8gPSB7ICJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlKSB9OworCitKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6SlNUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+JiYg
aW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCitKU09iamVj
dCogSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZVByb3RvdHlwZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdERp
Y3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6cHJvdG90
eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlPih2bSwgZ2xv
YmFsT2JqZWN0KTsKK30KKwordm9pZCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6
ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU6On5KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSgpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cit9
CisKK0pTVmFsdWUgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVD
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKK30KKworYm9vbCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAg
YXV0byoganNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgPSBqc0Nhc3Q8SlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Cisg
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZS0+d3JhcHBlZCgpLCBqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSk7Cit9CisKKyNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBf
X2lkZW50aWZpZXIoIj8/XzdUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVAV2ViQ29yZUBA
NkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2Vi
Q29yZTMwVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlRVtdOyB9CisjZW5kaWYKKyNlbmRp
ZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGU+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1w
bC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVAV2ViQ29yZUBANkJAIikpOworI2Vsc2UKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTMwVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlRVsyXTsKKyNpZiBDT01QSUxFUihDTEFORykKKyAgICAvLyBJZiB0aGlz
IGZhaWxzIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSBkb2VzIG5vdCBoYXZlIGEgdnRh
YmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fz
c2VydChfX2lzX3BvbHltb3JwaGljKFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSksICJU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgaXMgbm90IHBvbHltb3JwaGljIik7CisjZW5k
aWYKKyNlbmRpZgorICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBo
YXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBj
dXJyZW50bHkgcmVxdWlyZSBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgeW91IHRvIG9w
dCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFi
bGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisg
ICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBv
aW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSYgaW1wbCkKK3sKKyAg
ICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlKiBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUqPih2YWx1ZSkp
CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlY2QwZTcwNjJmNmM5MmUwN2UzZmU2N2U2ZGY2OGEwODk3OWRiNGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaApAQCAtMCwwICsxLDkyIEBACisv
KgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01D
b252ZXJ0LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlPjsKKyAgICBzdGF0aWMgSlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
PiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKiB0b1dyYXBwZWQo
SlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgfQorCit9OworCitjbGFzcyBKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRs
ZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90
VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZSopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9
CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZSogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisK
K0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFJlZjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+JiYpOworaW5saW5lIEpTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU7Cit9OwordGVtcGxhdGU8PiBUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTE+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NWE3ZTY5NGYzMzNhNzg1NmVk
NWVjYzYzODg1MTc4Zjk5M2EzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmlkbApA
QCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSBDYW5vbiBJbmMuIDIwMTYKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKKyAqIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZpbGUgaXMg
Zm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGZvciB0aGUgV2ViS2l0IGV4
dGVuZGVkIElETAorLy8gYXR0cmlidXRlIChPcGVuUHJvcGVydHlUeXBlKSBmb3IgaGFsZi1vcGVu
IGRpY3Rpb25hcmllcy4KK1sKKyAgICBPcGVuUHJvcGVydHlUeXBlPURPTVN0cmluZworXQorZGlj
dGlvbmFyeSBPcGVuUHJvcGVydHlUeXBlRGljdGlvbmFyeTEgeworfTsKKworWworICAgIENvbnN0
cnVjdG9yKHNlcXVlbmNlPE9wZW5Qcm9wZXJ0eVR5cGVEaWN0aW9uYXJ5MT4gdGVzdDEpCitdIGlu
dGVyZmFjZSBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgeworfTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292131</attachid>
            <date>2016-10-19 17:19:31 -0700</date>
            <delta_ts>2016-10-19 19:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163381-20161020111457.patch</filename>
            <type>text/plain</type>
            <size>24727</size>
            <attacher name="Rawinder Singh">rawinder.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxYjk3ZTc1YmFiYzg3
ZDU1ZmYzYzY4OTgxNmYyYjQ2YmJiNDVjNC4uY2ZmZmI0ZmU2YWM1NzUzYzk1ZjQ2MjBkZmFkM2Q2
Y2I2MDg3ZDczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE2LTEwLTE5ICBSYXdp
bmRlciBTaW5naCAgPHJhd2luZGVyLnNpbmdoLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CisK
KyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgdG8gYmluZGluZ3MgZ2VuZXJhdG9yIGZvciBo
YWxmLW9wZW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjMzODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29udmVydERpY3Rpb25hcnlQcm9wZXJ0aWVzIGFuZCBnZW5lcmF0
ZSBiaW5kaW5nIGNvZGUgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIGZvcgorICAgICAgICBXZWJLaXQg
SURMIGV4dGVuZGVkIGRpY3Rpb25hcnkgYXR0cmlidXRlICJPcGVuUHJvcGVydHlUeXBlIi4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydE9wZW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9u
Q29udGVudCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAg
ICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVQcm90b3R5cGU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyOjpmaW5h
bGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsOiBBZGRlZC4KKwog
MjAxNi0xMC0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
bm5vdGF0ZSBtb3JlIERPTSBhbmQgSFRNTCBJRExzIHdpdGggQ0VSZWFjdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggMTFhOTQ3ZDIzZjRjMGU1ZWM4
NzZiODQ5YWQ2ZWZmYTg5NmFmZDE5MC4uZGNiMTVlNTlkNTJjOTRmYmEyZjcxMzllNjUyNzFmYzJk
NGNmODEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKQEAg
LTY2MCw0ICs2NjAsMjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETEJ1ZmZlclNv
dXJjZT4gOiBEZWZhdWx0Q29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4KICAgICB9CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBIYXNoTWFwPFN0cmluZywgdHlwZW5hbWUgSURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlPiBjb252ZXJ0T3BlbkRpY3Rpb25hcnkoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBvYmplY3QpCit7CisgICAgSGFzaE1hcDxTdHJpbmcs
IHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gcmVzdWx0OworCisgICAgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKCZzdGF0ZSwgSlNDOjpQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzKTsKKyAgICBKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KCZvYmplY3QsICZzdGF0ZSwgcHJvcGVydHlOYW1lcywgSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7
CisKKyAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHByb3BlcnR5TmFtZXMpIHsKKyAgICAg
ICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUgPSBvYmplY3QuZ2V0KCZzdGF0ZSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydChzdGF0
ZSwganNWYWx1ZSk7CisgICAgICAgIHJlc3VsdC5hZGQocHJvcGVydHlOYW1lLnN0cmluZygpLCBX
VEZNb3ZlKHZhbHVlKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2ZDY1OWViZGZlMDk5MDc3MzViMDM3N2RmNThiYjVm
NTRiMDJkNzc0Li4xNTRjY2VlY2U5YWI1MTliM2MxNDMzNjZhNmU5NmIyZDFmYTk0MmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMTE2NSw2ICsxMTY1LDE1IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRh
dGlvbkNvbnRlbnQKICAgICAgICAgfQogICAgIH0KIAorICAgICMgKiBQcm9jZXNzIFdlYktpdCBl
eHRlbmRlZCBJREwgYXR0cmlidXRlIChPcGVuUHJvcGVydHlUeXBlKSBmb3IgaGFsZi1vcGVuIGRp
Y3Rpb25hcnk6CisgICAgbXkgJGlkbE9wZW5Qcm9wZXJ0eVR5cGUgPSAkZGljdGlvbmFyeS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57T3BlblByb3BlcnR5VHlwZX07CisgICAgaWYgKCRpZGxPcGVuUHJv
cGVydHlUeXBlKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQ29udmVydC5oIn0gPSAx
OworICAgICAgICBteSAkb3BlblByb3BlcnR5VHlwZSA9IEdldElETFR5cGUoJGRpY3Rpb25hcnks
ICRpZGxPcGVuUHJvcGVydHlUeXBlKTsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIHJlc3VsdC5w
cm9wZXJ0aWVzID0gY29udmVydE9wZW5EaWN0aW9uYXJ5PCR7b3BlblByb3BlcnR5VHlwZX0+KHN0
YXRlLCAqb2JqZWN0KTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpO1xuIjsKKyAgICB9CisKICAgICAkcmVzdWx0IC49
ICIgICAgcmV0dXJuIHJlc3VsdDtcbiI7CiAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogICAgICRy
ZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggY2Q5NjgzOTEyZWU0NzEx
NThjYWI5NGI3MzJiY2FhOWZmZGEzYWU2Yi4uZTM1YTA1NTJmMmY4ZDBjMGI5YmY4NzRjOTljNzA3
ZDg0YjcwNzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0KQEAgLTE4MTQsNiArMTgxNCwxMiBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJl
c3QKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIp
IiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJGF0dHJzOwogICAgIH0KKyAgICAjIFBlcmZv
cm0gcHJvY2Vzc2luZyBmb3Igc3BlY2lhbCBjYXNlIFdlYktpdCBJREwgZXh0ZW5kZWQgZGljdGlv
bmFyeSBhdHRyaWJ1dGUgIk9wZW5Qcm9wZXJ0eVR5cGUiOgorICAgIGlmICgkbmV4dC0+dmFsdWUo
KSBlcSAiPSIgJiYgJG5hbWUgZXEgIk9wZW5Qcm9wZXJ0eVR5cGUiKSB7CisgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9fTElORV9fKTsKKyAg
ICAgICAgJGF0dHJzLT57JG5hbWV9ID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICByZXR1
cm4gJGF0dHJzOworICAgIH0KICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIj0iKSB7CiAgICAg
ICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9fTElO
RV9fKTsKICAgICAgICAgJGF0dHJzLT57JG5hbWV9ID0gJHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRy
aWJ1dGVSZXN0MigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzExZjI5OWY1MWEyMTlmYjliYWRlYjM3NjhlMmM1MWZm
YjFlMDZjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5jcHAKQEAgLTAsMCAr
MSwyNDMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmgiCisKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRl
PD4gVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MSBjb252ZXJ0RGlj
dGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPihFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9v
bCBpc051bGxPclVuZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgYXV0
byogb2JqZWN0ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2JqZWN0
KCk7CisgICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICBpZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9iamVjdC0+dHlwZSgp
ID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTEgcmVzdWx0OworICAgIHJlc3VsdC5wcm9w
ZXJ0aWVzID0gY29udmVydE9wZW5EaWN0aW9uYXJ5PElETERPTVN0cmluZz4oc3RhdGUsICpvYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFs
T2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3Rv
dHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZT4o
dm0uaGVhcCkpIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpOworfTsKKwordXNpbmcgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGU+OworCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CisgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byB0ZXN0MSA9IGNvbnZl
cnQ8SURMU2VxdWVuY2U8SURMRGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGU6OkRpY3Rpb25hcnkxPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIGF1dG8gb2JqZWN0ID0gVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpjcmVhdGUo
V1RGTW92ZSh0ZXN0MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3Jl
YXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkp
OworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7
CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIikpKSwgUmVhZE9u
bHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZUNvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBEb250
RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcikgfSB9LAorfTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUi
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMp
OworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6
OnNfaW5mbyA9IHsgIlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGUpIH07CisKK0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpKU1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4mJiBp
bXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4o
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK0pTT2JqZWN0
KiBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
K30KKworSlNPYmplY3QqIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+KHZtLCBnbG9i
YWxPYmplY3QpOworfQorCit2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZTo6fkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30K
KworSlNWYWx1ZSBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOworfQorCitib29sIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGhh
bmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyOjpmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBh
dXRvKiBqc1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSA9IGpzQ2FzdDxKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
LT53cmFwcGVkKCksIGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKTsKK30KKworI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9f
aWRlbnRpZmllcigiPz9fN1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUBXZWJDb3JlQEA2
QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJD
b3JlMzBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVFW107IH0KKyNlbmRpZgorI2VuZGlm
CisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIHZv
aWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBs
LnB0cigpKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZUBXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQq
IGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMzBUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVFWzJdOworI2lmIENPTVBJTEVSKENMQU5HKQorICAgIC8vIElmIHRoaXMg
ZmFpbHMgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIGRvZXMgbm90IGhhdmUgYSB2dGFi
bGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNz
ZXJ0KF9faXNfcG9seW1vcnBoaWMoVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKSwgIlRl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSBpcyBub3QgcG9seW1vcnBoaWMiKTsKKyNlbmRp
ZgorI2VuZGlmCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1
cnJlbnRseSByZXF1aXJlIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSB5b3UgdG8gb3B0
IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJs
ZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAg
ICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9p
bnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlJiBpbXBsKQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUqIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSo+KHZhbHVlKSkK
KyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGVjZDBlNzA2MmY2YzkyZTA3ZTNmZTY3ZTZkZjY4YTA4OTc5ZGI0YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNv
bnZlcnQuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGU+OworICAgIHN0YXRpYyBKU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU+
JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAg
ICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUqIHRvV3JhcHBlZChK
U0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB9CisKK307CisKK2NsYXNzIEpTVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxl
T3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RW
aXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVy
KiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
KiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKwor
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9K
UyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4mJik7CitpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9i
YWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGU+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZTsKK307Cit0ZW1wbGF0ZTw+IFRlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTEgY29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUpOworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1YTdlNjk0ZjMzM2E3ODU2ZWQ1
ZWNjNjM4ODUxNzhmOTkzYTNjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIENhbm9uIEluYy4gMjAxNgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9y
IHRoZSBuYW1lcyBvZgorICogaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBm
b3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgZm9yIHRoZSBXZWJLaXQgZXh0
ZW5kZWQgSURMCisvLyBhdHRyaWJ1dGUgKE9wZW5Qcm9wZXJ0eVR5cGUpIGZvciBoYWxmLW9wZW4g
ZGljdGlvbmFyaWVzLgorWworICAgIE9wZW5Qcm9wZXJ0eVR5cGU9RE9NU3RyaW5nCitdCitkaWN0
aW9uYXJ5IE9wZW5Qcm9wZXJ0eVR5cGVEaWN0aW9uYXJ5MSB7Cit9OworCitbCisgICAgQ29uc3Ry
dWN0b3Ioc2VxdWVuY2U8T3BlblByb3BlcnR5VHlwZURpY3Rpb25hcnkxPiB0ZXN0MSkKK10gaW50
ZXJmYWNlIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSB7Cit9OworCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292142</attachid>
            <date>2016-10-19 19:33:09 -0700</date>
            <delta_ts>2022-02-27 23:10:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163381-20161020132835.patch</filename>
            <type>text/plain</type>
            <size>26037</size>
            <attacher name="Rawinder Singh">rawinder.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA5Yjg5NDYxNzc5ZWQ3
ODJhZTUwMzYzZmQ3NTgyZTczODZhNTgxMy4uMjRmNTNkNDFhZjlmZDk3M2U2Zjg2OTM0ODYwZGVj
OGQ5OGVlZDkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE2LTEwLTE5ICBSYXdp
bmRlciBTaW5naCAgPHJhd2luZGVyLnNpbmdoLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CisK
KyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgdG8gYmluZGluZ3MgZ2VuZXJhdG9yIGZvciBo
YWxmLW9wZW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjMzODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29udmVydE9wZW5EaWN0aW9uYXJ5IGFuZCBnZW5lcmF0ZSBiaW5k
aW5nIGNvZGUgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIGZvcgorICAgICAgICBXZWJLaXQgSURMIGV4
dGVuZGVkIGRpY3Rpb25hcnkgYXR0cmlidXRlICJPcGVuUHJvcGVydHlUeXBlIi4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWls
OjphZGRSZXN1bHRJZlZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbDo6QXJyYXlDb252
ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE9wZW5EaWN0aW9uYXJ5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0
cmlidXRlUmVzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERp
Y3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25h
cnkxPik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlP
cGVuUHJvcGVydHlUeXBlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGU6OkpTVGVzdERp
Y3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGlj
dGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRl
UHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpnZXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
aWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZU93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBl
cktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNO
ZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGUuaWRsOiBBZGRlZC4KKwogMjAxNi0xMC0xOSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWVuYWJsZSBV
UkxQYXJzZXIgZm9yIG5vbi1TYWZhcmkgQ29jb2EgYXBwcyBhZnRlciByMjA3MzIxCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDZlY2QzMWZhM2RmNWY3NWM1
MjhjNGZhODk2MDExYjE4MGE4MjhiYTguLmUwZDVkNjY1ZTA3ZmIwM2Q0OWI5ZWNjMzY4ZDIzMDVj
YzgzMjI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCkBA
IC0zNTgsNiArMzU4LDIyIEBAIG5hbWVzcGFjZSBEZXRhaWwgewogICAgICAgICB1c2luZyBSZXR1
cm5UeXBlID0gVmVjdG9yPFJlZlB0cjxUPj47CiAgICAgfTsKIAorICAgIC8vIENoZWNrIGlmIGlu
cHV0IGlzIG9wdGlvbmFsIGFuZCBhZGQgdG8gdGhlIHJlc3VsdCAoT3B0aW9uYWw8PiBpcyBoYW5k
bGVkIGRpZmZlcmVudGx5KS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBl
bmFtZSBUPiBib29sIGFkZFJlc3VsdElmVmFsaWQoUmV0dXJuVHlwZSYgcmVzdWx0LCBUJiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
LCB0eXBlbmFtZSBUPiBib29sIGFkZFJlc3VsdElmVmFsaWQoUmV0dXJuVHlwZSYgcmVzdWx0LCBX
VEY6Ok9wdGlvbmFsPFQ+JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiAgICAgc3RydWN0IEFycmF5Q29udmVydGVyIDog
QXJyYXlDb252ZXJ0ZXJCYXNlPElETFR5cGU+IHsKICAgICAgICAgdXNpbmcgUmV0dXJuVHlwZSA9
IHR5cGVuYW1lIEFycmF5Q29udmVydGVyQmFzZTxJRExUeXBlPjo6UmV0dXJuVHlwZTsKQEAgLTM3
OSw3ICszOTUsOCBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKICAgICAgICAgICAgICAgICBhdXRvIGNv
bnZlcnRlZFZhbHVlID0gQ29udmVydGVyPElETFR5cGU+Ojpjb252ZXJ0KCpzdGF0ZSwganNWYWx1
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
V1RGTW92ZShjb252ZXJ0ZWRWYWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0
SWZWYWxpZChyZXN1bHQsIGNvbnZlcnRlZFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CkBAIC03MjUsNCArNzQyLDIwIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExC
dWZmZXJTb3VyY2U+IDogRGVmYXVsdENvbnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+CiAgICAgfQog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gSGFzaE1hcDxTdHJpbmcsIHR5cGVuYW1l
IElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gY29udmVydE9wZW5EaWN0aW9uYXJ5KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgb2JqZWN0KQoreworICAgIEhhc2hNYXA8
U3RyaW5nLCB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHJlc3VsdDsKKwor
ICAgIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcygmc3RhdGUsIEpTQzo6UHJv
cGVydHlOYW1lTW9kZTo6U3RyaW5ncyk7CisgICAgSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcygmb2JqZWN0LCAmc3RhdGUsIHByb3BlcnR5TmFtZXMsIEpTQzo6RW51bWVyYXRpb25N
b2RlKCkpOworCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiBwcm9wZXJ0eU5hbWVzKSB7
CisgICAgICAgIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlID0gb2JqZWN0LmdldCgmc3RhdGUsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBDb252ZXJ0ZXI8SURMVHlwZT46OmNvbnZl
cnQoc3RhdGUsIGpzVmFsdWUpOworICAgICAgICByZXN1bHQuYWRkKHByb3BlcnR5TmFtZS5zdHJp
bmcoKSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZTE3YWNlMzZhZDU2YzhiMWZjYTdkMDUz
OTY3ODg3NjM2ZjQ4NDJkMS4uNTEzNWVmYjY0NDUwZjcwYmRhZGI2YzczOWEwMzlkOGUxMjU2Nzk0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTExNzAsNiArMTE3MCwxNSBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1w
bGVtZW50YXRpb25Db250ZW50CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAjICogUHJvY2VzcyBX
ZWJLaXQgZXh0ZW5kZWQgSURMIGF0dHJpYnV0ZSAoT3BlblByb3BlcnR5VHlwZSkgZm9yIGhhbGYt
b3BlbiBkaWN0aW9uYXJ5OgorICAgIG15ICRpZGxPcGVuUHJvcGVydHlUeXBlID0gJGRpY3Rpb25h
cnktPmV4dGVuZGVkQXR0cmlidXRlcy0+e09wZW5Qcm9wZXJ0eVR5cGV9OworICAgIGlmICgkaWRs
T3BlblByb3BlcnR5VHlwZSkgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUNvbnZlcnQu
aCJ9ID0gMTsKKyAgICAgICAgbXkgJG9wZW5Qcm9wZXJ0eVR5cGUgPSBHZXRJRExUeXBlKCRkaWN0
aW9uYXJ5LCAkaWRsT3BlblByb3BlcnR5VHlwZSk7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBy
ZXN1bHQucHJvcGVydGllcyA9IGNvbnZlcnRPcGVuRGljdGlvbmFyeTwke29wZW5Qcm9wZXJ0eVR5
cGV9PihzdGF0ZSwgKm9iamVjdCk7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIjsKKyAgICB9CisKICAgICAkcmVzdWx0
IC49ICIgICAgcmV0dXJuIHJlc3VsdDtcbiI7CiAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogICAg
ICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggY2Q5NjgzOTEyZWU0
NzExNThjYWI5NGI3MzJiY2FhOWZmZGEzYWU2Yi4uZTM1YTA1NTJmMmY4ZDBjMGI5YmY4NzRjOTlj
NzA3ZDg0YjcwNzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTE4MTQsNiArMTgxNCwxMiBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0
ZVJlc3QKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICIpIiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJGF0dHJzOwogICAgIH0KKyAgICAjIFBl
cmZvcm0gcHJvY2Vzc2luZyBmb3Igc3BlY2lhbCBjYXNlIFdlYktpdCBJREwgZXh0ZW5kZWQgZGlj
dGlvbmFyeSBhdHRyaWJ1dGUgIk9wZW5Qcm9wZXJ0eVR5cGUiOgorICAgIGlmICgkbmV4dC0+dmFs
dWUoKSBlcSAiPSIgJiYgJG5hbWUgZXEgIk9wZW5Qcm9wZXJ0eVR5cGUiKSB7CisgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9fTElORV9fKTsK
KyAgICAgICAgJGF0dHJzLT57JG5hbWV9ID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICBy
ZXR1cm4gJGF0dHJzOworICAgIH0KICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIj0iKSB7CiAg
ICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiPSIsIF9f
TElORV9fKTsKICAgICAgICAgJGF0dHJzLT57JG5hbWV9ID0gJHNlbGYtPnBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVSZXN0MigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhMmFkMDJiMWE5Yjc4NmM1ODIwYzM1ODE0NDg0
MDJjMzIwZmFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5jcHAKQEAgLTAs
MCArMSwyNDMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmgiCisKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBs
YXRlPD4gVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MSBjb252ZXJ0
RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
Ym9vbCBpc051bGxPclVuZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAg
YXV0byogb2JqZWN0ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2Jq
ZWN0KCk7CisgICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9iamVjdC0+dHlw
ZSgpID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6RGljdGlvbmFyeTEgcmVzdWx0OworICAgIHJlc3VsdC5w
cm9wZXJ0aWVzID0gY29udmVydE9wZW5EaWN0aW9uYXJ5PElETERPTVN0cmluZz4oc3RhdGUsICpv
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxP
YmplY3Q7CisgICAgc3RhdGljIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90
eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlPih2
bS5oZWFwKSkgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3Bl
cnR5VHlwZT47CisKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHRlc3QxID0gY29udmVy
dDxJRExTZXF1ZW5jZTxJRExEaWN0aW9uYXJ5PFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZTo6RGljdGlvbmFyeTE+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgYXV0byBvYmplY3QgPSBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmNyZWF0ZShX
VEZNb3ZlKHRlc3QxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVh
dGVkKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7
Cit9CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsK
KyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBs
YXRlPD4gdm9pZCBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmpl
Y3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmco
QVNDSUlMaXRlcmFsKCJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUiKSkpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRF
bnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUNvbnN0cnVjdG9yKSB9IH0sCit9Owor
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGVQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RGljdGlvbmFyeU9wZW5Q
cm9wZXJ0eVR5cGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZTo6
c19pbmZvID0geyAiVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZSkgfTsKKworSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OkpTVGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlPiYmIGlt
cGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlPihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKworSlNPYmplY3Qq
IEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3REaWN0
aW9uYXJ5T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
fQorCitKU09iamVjdCogSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OnByb3RvdHlw
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdl
dERPTVByb3RvdHlwZTxKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK3ZvaWQgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3REaWN0aW9uYXJ5T3BlblBy
b3BlcnR5VHlwZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlOjp+SlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUoKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5
VHlwZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworfQorCitib29sIHNldEpTVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBl
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0
ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpOworfQor
CitKU1ZhbHVlIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7Cit9CisKK2Jvb2wgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFu
ZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1
dG8qIGpzVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlID0ganNDYXN0PEpTVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1
dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUt
PndyYXBwZWQoKSwganNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUpOworfQorCisjaWYg
RU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19p
ZGVudGlmaWVyKCI/P183VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlQFdlYkNvcmVAQDZC
QCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNv
cmUzMFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZUVbXTsgfQorI2VuZGlmCisjZW5kaWYK
KworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlU
eXBlPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgdm9p
ZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwu
cHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlQFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNlCisgICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUzMFRlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZUVbMl07CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAgLy8gSWYgdGhpcyBm
YWlscyBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJs
ZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3Nl
cnQoX19pc19wb2x5bW9ycGhpYyhUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUpLCAiVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworI2VuZGlm
CisjZW5kaWYKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2
ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RGljdGlvbmFyeU9wZW5Qcm9w
ZXJ0eVR5cGUgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3Vy
cmVudGx5IHJlcXVpcmUgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIHlvdSB0byBvcHQg
b3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxl
VmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAg
IFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2lu
dGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUmIGltcGwpCit7CisgICAg
cmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZSogSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGU6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlKj4odmFsdWUpKQor
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZWNkMGU3MDYyZjZjOTJlMDdlM2ZlNjdlNmRmNjhhMDg5NzlkYjRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlLmgKQEAgLTAsMCArMSw5MiBAQAorLyoK
KyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
CisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5w
bC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29u
dmVydC5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVy
dHlUeXBlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3REaWN0aW9u
YXJ5T3BlblByb3BlcnR5VHlwZT47CisgICAgc3RhdGljIEpTVGVzdERpY3Rpb25hcnlPcGVuUHJv
cGVydHlUeXBlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZT4m
JiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGljdGlvbmFyeU9w
ZW5Qcm9wZXJ0eVR5cGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAg
ICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIFRlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZSogdG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisg
ICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0RGljdGlv
bmFyeU9wZW5Qcm9wZXJ0eVR5cGU+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIH0KKworfTsKKworY2xhc3MgSlNUZXN0
RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVP
d25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZp
c2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIq
IHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0
eVR5cGUqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3REaWN0aW9uYXJ5T3Bl
blByb3BlcnR5VHlwZU93bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQor
CitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUq
IHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVz
dERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5cGUqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pT
KHN0YXRlLCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
LCBSZWY8VGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlPiYmKTsKK2lubGluZSBKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0RGljdGlvbmFyeU9wZW5Qcm9wZXJ0eVR5
cGU+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2Jh
bE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVt
cGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3REaWN0aW9uYXJ5
T3BlblByb3BlcnR5VHlwZT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdERpY3Rp
b25hcnlPcGVuUHJvcGVydHlUeXBlOworfTsKK3RlbXBsYXRlPD4gVGVzdERpY3Rpb25hcnlPcGVu
UHJvcGVydHlUeXBlOjpEaWN0aW9uYXJ5MSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFy
eU9wZW5Qcm9wZXJ0eVR5cGU6OkRpY3Rpb25hcnkxPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSk7CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlw
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25h
cnlPcGVuUHJvcGVydHlUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzVhN2U2OTRmMzMzYTc4NTZlZDVl
Y2M2Mzg4NTE3OGY5OTNhM2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REaWN0aW9uYXJ5T3BlblByb3BlcnR5VHlwZS5pZGwKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgQ2Fub24gSW5jLiAyMDE2CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3Ig
dGhlIG5hbWVzIG9mCisgKiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZv
ciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBmb3IgdGhlIFdlYktpdCBleHRl
bmRlZCBJREwKKy8vIGF0dHJpYnV0ZSAoT3BlblByb3BlcnR5VHlwZSkgZm9yIGhhbGYtb3BlbiBk
aWN0aW9uYXJpZXMuCitbCisgICAgT3BlblByb3BlcnR5VHlwZT1ET01TdHJpbmcKK10KK2RpY3Rp
b25hcnkgT3BlblByb3BlcnR5VHlwZURpY3Rpb25hcnkxIHsKK307CisKK1sKKyAgICBDb25zdHJ1
Y3RvcihzZXF1ZW5jZTxPcGVuUHJvcGVydHlUeXBlRGljdGlvbmFyeTE+IHRlc3QxKQorXSBpbnRl
cmZhY2UgVGVzdERpY3Rpb25hcnlPcGVuUHJvcGVydHlUeXBlIHsKK307CisK
</data>
<flag name="review"
          id="315256"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>