<?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>27276</bug_id>
          
          <creation_ts>2009-07-14 15:18:49 -0700</creation_ts>
          <short_desc>Some constructor objects exposed on Window have the wrong prototype chain</short_desc>
          <delta_ts>2009-07-17 16:13:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27088</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131702</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-14 15:18:49 -0700</bug_when>
    <thetext>Some constructor objects exposed on Window have the wrong prototype chain

I&apos;m going to start by making the constructors on Window be consistent in their prototype chains.  Fixing the more general case will require adding a backpointer from every DOMObject to the global object it was created from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131705</commentid>
    <comment_count>1</comment_count>
      <attachid>32739</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-14 15:26:46 -0700</bug_when>
    <thetext>Created attachment 32739
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131706</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-14 15:27:28 -0700</bug_when>
    <thetext>CCing participants from the webkit-dev discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132162</commentid>
    <comment_count>3</comment_count>
      <attachid>32739</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-15 23:31:38 -0700</bug_when>
    <thetext>Comment on attachment 32739
patch

This looks great!  A few nits below.

&gt; +for (property in window) {
&gt; +    windowProperites.push(property);
&gt; +}

No braces here.

I&apos;m surprised we don&apos;t see a lot of junk from the testing code.  Maybe it&apos;s better to enumerate the subframe&apos;s properties?

&gt; +for (var x = 0; x &lt; windowProperites.length; x++) {

Preincrement.

&gt;  JSAudioConstructor::JSAudioConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
&gt; -    : DOMObject(JSAudioConstructor::createStructure(exec-&gt;lexicalGlobalObject()-&gt;objectPrototype()))
&gt; -    , m_globalObject(globalObject)
&gt; +    : DOMObject(JSAudioConstructor::createStructure(globalObject-&gt;objectPrototype()))
&gt; +       , m_globalObject(globalObject)

Extra space added here.

&gt; -JSXSLTProcessorConstructor::JSXSLTProcessorConstructor(ExecState* exec)
&gt; -    : DOMObject(JSXSLTProcessorConstructor::createStructure(exec-&gt;lexicalGlobalObject()-&gt;objectPrototype()))
&gt; +JSXSLTProcessorConstructor::JSXSLTProcessorConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
&gt; +    : DOMObject(JSXSLTProcessorConstructor::createStructure(globalObject-&gt;objectPrototype()))
&gt;  {
&gt; -    putDirect(exec-&gt;propertyNames().prototype, JSXSLTProcessorPrototype::self(exec, exec-&gt;lexicalGlobalObject()), None);
&gt; +    putDirect(exec-&gt;propertyNames().prototype, JSXSLTProcessorPrototype::self(exec, globalObject), None);
&gt; +    putDirect(exec-&gt;propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);

Where did this length line come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132505</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-17 00:20:24 -0700</bug_when>
    <thetext>Assigning to Eric because he has some nits to fix, making this not actionable by anyone else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132738</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-17 15:37:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 32739 [details])
&gt; This looks great!  A few nits below.
&gt; 
&gt; &gt; +for (property in window) {
&gt; &gt; +    windowProperites.push(property);
&gt; &gt; +}
&gt; 
&gt; No braces here.

Fixed.

&gt; I&apos;m surprised we don&apos;t see a lot of junk from the testing code.  Maybe it&apos;s
&gt; better to enumerate the subframe&apos;s properties?
&gt; 
&gt; &gt; +for (var x = 0; x &lt; windowProperites.length; x++) {
&gt; 
&gt; Preincrement.

Doesn&apos;t matter.  Why?  (The JS engine will actually make it a pre-increment under the covers anyway.)

&gt; &gt;  JSAudioConstructor::JSAudioConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
&gt; &gt; -    : DOMObject(JSAudioConstructor::createStructure(exec-&gt;lexicalGlobalObject()-&gt;objectPrototype()))
&gt; &gt; -    , m_globalObject(globalObject)
&gt; &gt; +    : DOMObject(JSAudioConstructor::createStructure(globalObject-&gt;objectPrototype()))
&gt; &gt; +       , m_globalObject(globalObject)
&gt; 
&gt; Extra space added here.

Fixed.

&gt; &gt; -JSXSLTProcessorConstructor::JSXSLTProcessorConstructor(ExecState* exec)
&gt; &gt; -    : DOMObject(JSXSLTProcessorConstructor::createStructure(exec-&gt;lexicalGlobalObject()-&gt;objectPrototype()))
&gt; &gt; +JSXSLTProcessorConstructor::JSXSLTProcessorConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
&gt; &gt; +    : DOMObject(JSXSLTProcessorConstructor::createStructure(globalObject-&gt;objectPrototype()))
&gt; &gt;  {
&gt; &gt; -    putDirect(exec-&gt;propertyNames().prototype, JSXSLTProcessorPrototype::self(exec, exec-&gt;lexicalGlobalObject()), None);
&gt; &gt; +    putDirect(exec-&gt;propertyNames().prototype, JSXSLTProcessorPrototype::self(exec, globalObject), None);
&gt; &gt; +    putDirect(exec-&gt;propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);
&gt; 
&gt; Where did this length line come from?

It was missing a length member, so I guessed.  But it&apos;s an unrelated change, so I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132758</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-17 16:13:10 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/dom/prototype-inheritance-expected.txt
	A	LayoutTests/fast/dom/prototype-inheritance.html
	A	LayoutTests/fast/dom/resources/prototype-inheritance.js
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSAudioConstructor.cpp
	M	WebCore/bindings/js/JSDOMBinding.h
	M	WebCore/bindings/js/JSDOMGlobalObject.h
	M	WebCore/bindings/js/JSDOMWindowCustom.cpp
	M	WebCore/bindings/js/JSImageConstructor.cpp
	M	WebCore/bindings/js/JSMessageChannelConstructor.cpp
	M	WebCore/bindings/js/JSOptionConstructor.cpp
	M	WebCore/bindings/js/JSWebKitCSSMatrixConstructor.cpp
	M	WebCore/bindings/js/JSWebKitCSSMatrixConstructor.h
	M	WebCore/bindings/js/JSWebKitPointConstructor.cpp
	M	WebCore/bindings/js/JSWebKitPointConstructor.h
	M	WebCore/bindings/js/JSWorkerConstructor.cpp
	M	WebCore/bindings/js/JSWorkerConstructor.h
	M	WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
	M	WebCore/bindings/js/JSXSLTProcessorConstructor.cpp
	M	WebCore/bindings/js/JSXSLTProcessorConstructor.h
	M	WebCore/bindings/scripts/CodeGeneratorJS.pm
Committed r46068
	M	WebCore/ChangeLog
	M	WebCore/bindings/scripts/CodeGeneratorJS.pm
	M	WebCore/bindings/js/JSXSLTProcessorConstructor.h
	M	WebCore/bindings/js/JSWorkerConstructor.cpp
	M	WebCore/bindings/js/JSDOMGlobalObject.h
	M	WebCore/bindings/js/JSWebKitPointConstructor.cpp
	M	WebCore/bindings/js/JSOptionConstructor.cpp
	M	WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp
	M	WebCore/bindings/js/JSImageConstructor.cpp
	M	WebCore/bindings/js/JSWebKitPointConstructor.h
	M	WebCore/bindings/js/JSDOMBinding.h
	M	WebCore/bindings/js/JSAudioConstructor.cpp
	M	WebCore/bindings/js/JSWebKitCSSMatrixConstructor.cpp
	M	WebCore/bindings/js/JSDOMWindowCustom.cpp
	M	WebCore/bindings/js/JSWebKitCSSMatrixConstructor.h
	M	WebCore/bindings/js/JSXSLTProcessorConstructor.cpp
	M	WebCore/bindings/js/JSMessageChannelConstructor.cpp
	M	WebCore/bindings/js/JSWorkerConstructor.h
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/dom/resources/prototype-inheritance.js
	A	LayoutTests/fast/dom/prototype-inheritance-expected.txt
	A	LayoutTests/fast/dom/prototype-inheritance.html
r46068 = 29ffe78e086c9016bbf5bd143fd4d2feedde6138 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46068</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32739</attachid>
            <date>2009-07-14 15:26:46 -0700</date>
            <delta_ts>2009-07-15 23:31:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27276-20090714152645.patch</filename>
            <type>text/plain</type>
            <size>38881</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzE4YmU3Li5mMGZmNzhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDct
MTQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgY29uc3RydWN0b3Igb2JqZWN0cyBleHBv
c2VkIG9uIFdpbmRvdyBoYXZlIHRoZSB3cm9uZyBwcm90b3R5cGUgY2hhaW4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3Mjc2CisKKyAgICAgICAgKiBm
YXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vcmVzb3VyY2VzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qczogQWRkZWQuCisK
IDIwMDktMDctMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NTk0Njc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1
MCBAQAorTWFrZSBzdXJlIHByb3RvdHlwZXMgYXJlIHNldCB1cCB1c2luZyB0aGUgd2luZG93IGEg
cHJvcGVydHkgY2FtZSBmcm9tLCBpbnN0ZWFkIG9mIHRoZSBsZXhpY2FsIGdsb2JhbCBvYmplY3Qu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlubmVyLkF0dHIuaXNJbm5l
ciBpcyB0cnVlCitQQVNTIGlubmVyLkF1ZGlvLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5D
REFUQVNlY3Rpb24uaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkNTU0NoYXJzZXRSdWxlLmlz
SW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5DU1NGb250RmFjZVJ1bGUuaXNJbm5lciBpcyB0cnVl
CitQQVNTIGlubmVyLkNTU0ltcG9ydFJ1bGUuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkNT
U01lZGlhUnVsZS5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuQ1NTUGFnZVJ1bGUuaXNJbm5l
ciBpcyB0cnVlCitQQVNTIGlubmVyLkNTU1ByaW1pdGl2ZVZhbHVlLmlzSW5uZXIgaXMgdHJ1ZQor
UEFTUyBpbm5lci5DU1NSdWxlLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5DU1NSdWxlTGlz
dC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuQ1NTU3R5bGVEZWNsYXJhdGlvbi5pc0lubmVy
IGlzIHRydWUKK1BBU1MgaW5uZXIuQ1NTU3R5bGVSdWxlLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBp
bm5lci5DU1NTdHlsZVNoZWV0LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5DU1NWYWx1ZS5p
c0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuQ1NTVmFsdWVMaXN0LmlzSW5uZXIgaXMgdHJ1ZQor
UEFTUyBpbm5lci5DU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi5pc0lubmVyIGlzIHRydWUKK1BBU1Mg
aW5uZXIuQ1NTVmFyaWFibGVzUnVsZS5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5DaGFyYWN0ZXJE
YXRhLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5DbGllbnRSZWN0LmlzSW5uZXIgaXMgdHJ1
ZQorUEFTUyBpbm5lci5DbGllbnRSZWN0TGlzdC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIu
Q2xpcGJvYXJkLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5Db21tZW50LmlzSW5uZXIgaXMg
dHJ1ZQorUEFTUyBpbm5lci5Db3VudGVyLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5ET01F
eGNlcHRpb24uaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkRPTUltcGxlbWVudGF0aW9uLmlz
SW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5ET01QYXJzZXIuaXNJbm5lciBpcyB0cnVlCitQQVNT
IGlubmVyLkRvY3VtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5Eb2N1bWVudEZyYWdt
ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5Eb2N1bWVudFR5cGUuaXNJbm5lciBpcyB0
cnVlCitQQVNTIGlubmVyLkVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkVudGl0
eS5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuRW50aXR5UmVmZXJlbmNlLmlzSW5uZXIgaXMg
dHJ1ZQorUEFTUyBpbm5lci5FdmFsRXJyb3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkV2
ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5FdmVudEV4Y2VwdGlvbi5pc0lubmVyIGlz
IHRydWUKK1BBU1MgaW5uZXIuRmlsZS5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuRmlsZUxp
c3QuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxBbmNob3JFbGVtZW50LmlzSW5uZXIg
aXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MQXBwbGV0RWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIuSFRNTEFyZWFFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1M
QXVkaW9FbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MQlJFbGVtZW50Lmlz
SW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MQmFzZUVsZW1lbnQuaXNJbm5lciBpcyB0cnVl
CitQQVNTIGlubmVyLkhUTUxCYXNlRm9udEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlu
bmVyLkhUTUxCbG9ja3F1b3RlRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRN
TEJvZHlFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MQnV0dG9uRWxlbWVu
dC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTENhbnZhc0VsZW1lbnQuaXNJbm5lciBp
cyB0cnVlCitQQVNTIGlubmVyLkhUTUxDb2xsZWN0aW9uLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBp
bm5lci5IVE1MRExpc3RFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MRGF0
YUdyaWRDZWxsRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTERhdGFHcmlk
Q29sRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTERhdGFHcmlkRWxlbWVu
dC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTERpcmVjdG9yeUVsZW1lbnQuaXNJbm5l
ciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxEaXZFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFT
UyBpbm5lci5IVE1MRG9jdW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxFbGVt
ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MRW1iZWRFbGVtZW50LmlzSW5uZXIg
aXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MRmllbGRTZXRFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQor
UEFTUyBpbm5lci5IVE1MRm9udEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhU
TUxGb3JtRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTEZyYW1lRWxlbWVu
dC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTEZyYW1lU2V0RWxlbWVudC5pc0lubmVy
IGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTEhSRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1Mg
aW5uZXIuSFRNTEhlYWRFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MSGVh
ZGluZ0VsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxIdG1sRWxlbWVudC5p
c0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTElGcmFtZUVsZW1lbnQuaXNJbm5lciBpcyB0
cnVlCitQQVNTIGlubmVyLkhUTUxJbWFnZUVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlu
bmVyLkhUTUxJbnB1dEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxJc0lu
ZGV4RWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTExJRWxlbWVudC5pc0lu
bmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTExhYmVsRWxlbWVudC5pc0lubmVyIGlzIHRydWUK
K1BBU1MgaW5uZXIuSFRNTExlZ2VuZEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVy
LkhUTUxMaW5rRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTE1hcEVsZW1l
bnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxNYXJxdWVlRWxlbWVudC5pc0lubmVy
IGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTE1lZGlhRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIuSFRNTE1lbnVFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1M
TWV0YUVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxNb2RFbGVtZW50Lmlz
SW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MT0xpc3RFbGVtZW50LmlzSW5uZXIgaXMgdHJ1
ZQorUEFTUyBpbm5lci5IVE1MT2JqZWN0RWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5u
ZXIuSFRNTE9wdEdyb3VwRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTE9w
dGlvbkVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxQYXJhZ3JhcGhFbGVt
ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MUGFyYW1FbGVtZW50LmlzSW5uZXIg
aXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MUHJlRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1Mg
aW5uZXIuSFRNTFF1b3RlRWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuSFRNTFNj
cmlwdEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxTZWxlY3RFbGVtZW50
LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MU3R5bGVFbGVtZW50LmlzSW5uZXIgaXMg
dHJ1ZQorUEFTUyBpbm5lci5IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5pc0lubmVyIGlzIHRydWUK
K1BBU1MgaW5uZXIuSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlu
bmVyLkhUTUxUYWJsZUNvbEVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxU
YWJsZUVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxUYWJsZVJvd0VsZW1l
bnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmlz
SW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MVGV4dEFyZWFFbGVtZW50LmlzSW5uZXIgaXMg
dHJ1ZQorUEFTUyBpbm5lci5IVE1MVGl0bGVFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBp
bm5lci5IVE1MVUxpc3RFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5IVE1MVmlk
ZW9FbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5JbWFnZS5pc0lubmVyIGlzIHRy
dWUKK1BBU1MgaW5uZXIuS2V5Ym9hcmRFdmVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIu
TWVkaWFFcnJvci5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuTWVkaWFMaXN0LmlzSW5uZXIg
aXMgdHJ1ZQorUEFTUyBpbm5lci5NZXNzYWdlQ2hhbm5lbC5pc0lubmVyIGlzIHRydWUKK1BBU1Mg
aW5uZXIuTWVzc2FnZUV2ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5NZXNzYWdlUG9y
dC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuTWltZVR5cGUuaXNJbm5lciBpcyB0cnVlCitQ
QVNTIGlubmVyLk1pbWVUeXBlQXJyYXkuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLk1vdXNl
RXZlbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLk11dGF0aW9uRXZlbnQuaXNJbm5lciBp
cyB0cnVlCitQQVNTIGlubmVyLk5hbWVkTm9kZU1hcC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5u
ZXIuTm9kZS5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuTm9kZUZpbHRlci5pc0lubmVyIGlz
IHRydWUKK1BBU1MgaW5uZXIuTm9kZUxpc3QuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLk5v
dGF0aW9uLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5PcHRpb24uaXNJbm5lciBpcyB0cnVl
CitQQVNTIGlubmVyLk92ZXJmbG93RXZlbnQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlBs
dWdpbi5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuUGx1Z2luQXJyYXkuaXNJbm5lciBpcyB0
cnVlCitQQVNTIGlubmVyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIuUHJvZ3Jlc3NFdmVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuUmFuZ2Uu
aXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlJhbmdlRXJyb3IuaXNJbm5lciBpcyB0cnVlCitQ
QVNTIGlubmVyLlJhbmdlRXhjZXB0aW9uLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5SZWN0
LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5SZWZlcmVuY2VFcnJvci5pc0lubmVyIGlzIHRy
dWUKK1BBU1MgaW5uZXIuU1ZHQW5nbGUuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlNWR0Nv
bG9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5TVkdFeGNlcHRpb24uaXNJbm5lciBpcyB0
cnVlCitQQVNTIGlubmVyLlNWR0dyYWRpZW50RWxlbWVudC5pc0lubmVyIGlzIHRydWUKK1BBU1Mg
aW5uZXIuU1ZHTGVuZ3RoLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5TVkdNYXJrZXJFbGVt
ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5TVkdQYWludC5pc0lubmVyIGlzIHRydWUK
K1BBU1MgaW5uZXIuU1ZHUGF0aFNlZy5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuU1ZHUmVuZGVyaW5n
SW50ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5TVkdUZXh0Q29udGVudEVsZW1lbnQu
aXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlNWR1RleHRQYXRoRWxlbWVudC5pc0lubmVyIGlz
IHRydWUKK1BBU1MgaW5uZXIuU1ZHVHJhbnNmb3JtLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5l
ci5TVkdVbml0VHlwZXMuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlN0b3JhZ2UuaXNJbm5l
ciBpcyB0cnVlCitQQVNTIGlubmVyLlN0b3JhZ2VFdmVudC5pc0lubmVyIGlzIHRydWUKK1BBU1Mg
aW5uZXIuU3R5bGVTaGVldC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuU3R5bGVTaGVldExp
c3QuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlN5bnRheEVycm9yLmlzSW5uZXIgaXMgdHJ1
ZQorUEFTUyBpbm5lci5UZXh0LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5UZXh0RXZlbnQu
aXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlRleHRNZXRyaWNzLmlzSW5uZXIgaXMgdHJ1ZQor
UEFTUyBpbm5lci5UeXBlRXJyb3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlVJRXZlbnQu
aXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlVSSUVycm9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFT
UyBpbm5lci5XZWJLaXRBbmltYXRpb25FdmVudC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIu
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5XZWJLaXRDU1NNYXRy
aXguaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlz
SW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5XZWJLaXRQb2ludC5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIuV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5l
ci5XaGVlbEV2ZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5Xb3JrZXIuaXNJbm5lciBp
cyB0cnVlCitQQVNTIGlubmVyLlhNTERvY3VtZW50LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5l
ci5YTUxIdHRwUmVxdWVzdC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuWE1MSHR0cFJlcXVl
c3RFeGNlcHRpb24uaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlhNTEh0dHBSZXF1ZXN0VXBs
b2FkLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5YTUxTZXJpYWxpemVyLmlzSW5uZXIgaXMg
dHJ1ZQorUEFTUyBpbm5lci5YUGF0aEV2YWx1YXRvci5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5u
ZXIuWFBhdGhFeGNlcHRpb24uaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlhQYXRoUmVzdWx0
LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5YU0xUUHJvY2Vzc29yLmlzSW5uZXIgaXMgdHJ1
ZQorUEFTUyBpbm5lci5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pc0lubmVyIGlzIHRydWUKK0ZB
SUwgaW5uZXIuYWRkRXZlbnRMaXN0ZW5lci5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCitGQUlMIGlubmVyLmFsZXJ0LmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4K
K1BBU1MgaW5uZXIuYXBwbGVTY3JpcHRDb250cm9sbGVyLmlzSW5uZXIgaXMgdHJ1ZQorRkFJTCBp
bm5lci5hcHBsaWNhdGlvbkNhY2hlLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4K
K0ZBSUwgaW5uZXIuYXRvYi5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlM
IGlubmVyLmJsdXIuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5l
ci5idG9hLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIuY2Fw
dHVyZUV2ZW50cy5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVy
LmNsZWFySW50ZXJ2YWwuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBp
bm5lci5jbGVhclRpbWVvdXQuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJ
TCBpbm5lci5jbGllbnRJbmZvcm1hdGlvbi5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCitGQUlMIGlubmVyLmNsb3NlLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4K
K0ZBSUwgaW5uZXIuY29uZmlybS5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitG
QUlMIGlubmVyLmNvbnNvbGUuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJ
TCBpbm5lci5kZXZpY2VQaXhlbFJhdGlvLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxz
ZS4KK0ZBSUwgaW5uZXIuZGlzcGF0Y2hFdmVudC5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMg
ZmFsc2UuCitQQVNTIGlubmVyLmRvY3VtZW50LmlzSW5uZXIgaXMgdHJ1ZQorRkFJTCBpbm5lci5m
aW5kLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIuZm9jdXMu
aXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci5mcmFtZUVsZW1l
bnQuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBpbm5lci5mcmFtZXMu
aXNJbm5lciBpcyB0cnVlCitGQUlMIGlubmVyLmdldENvbXB1dGVkU3R5bGUuaXNJbm5lciBzaG91
bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci5nZXRNYXRjaGVkQ1NTUnVsZXMuaXNJ
bm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci5nZXRTZWxlY3Rpb24u
aXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBpbm5lci5oaXN0b3J5Lmlz
SW5uZXIgaXMgdHJ1ZQorRkFJTCBpbm5lci5pc0lubmVyLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUu
IFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIubG9jYWxTdG9yYWdlLmlzSW5uZXIgc2hvdWxkIGJlIHRy
dWUuIFdhcyBmYWxzZS4KK1BBU1MgaW5uZXIubG9jYXRpb24uaXNJbm5lciBpcyB0cnVlCitGQUlM
IGlubmVyLmxvY2F0aW9uYmFyLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZB
SUwgaW5uZXIubWVudWJhci5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlM
IGlubmVyLm1vdmVCeS5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlu
bmVyLm1vdmVUby5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVy
Lm5hbWUuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBpbm5lci5uYXZp
Z2F0aW9uQ29udHJvbGxlci5pc0lubmVyIGlzIHRydWUKK0ZBSUwgaW5uZXIubmF2aWdhdG9yLmlz
SW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIub2Zmc2NyZWVuQnVm
ZmVyaW5nLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIub3Bl
bi5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLm9wZW5EYXRh
YmFzZS5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLm91dGVy
SGVpZ2h0LmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIub3V0
ZXJXaWR0aC5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLnBl
cnNvbmFsYmFyLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgaW5uZXIu
cGxhaW5UZXh0LmlzSW5uZXIgaXMgdHJ1ZQorRkFJTCBpbm5lci5wb3N0TWVzc2FnZS5pc0lubmVy
IHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLnByaW50LmlzSW5uZXIgc2hv
dWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIucHJvbXB0LmlzSW5uZXIgc2hvdWxk
IGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIucmVsZWFzZUV2ZW50cy5pc0lubmVyIHNo
b3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIu
aXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci5yZXNpemVCeS5p
c0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLnJlc2l6ZVRvLmlz
SW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIuc2NyZWVuLmlzSW5u
ZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIuc2NyZWVuVG9wLmlzSW5u
ZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIuc2NyZWVuWS5pc0lubmVy
IHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLnNjcm9sbC5pc0lubmVyIHNo
b3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIGlubmVyLnNjcm9sbEJ5LmlzSW5uZXIgc2hv
dWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIuc2Nyb2xsVG8uaXNJbm5lciBzaG91
bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCBpbm5lci5zY3JvbGxiYXJzLmlzSW5uZXIgc2hv
dWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgaW5uZXIuc2VsZi5pc0lubmVyIGlzIHRydWUK
K0ZBSUwgaW5uZXIuc2Vzc2lvblN0b3JhZ2UuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZh
bHNlLgorRkFJTCBpbm5lci5zZXRJbnRlcnZhbC5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMg
ZmFsc2UuCitGQUlMIGlubmVyLnNldFRpbWVvdXQuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2Fz
IGZhbHNlLgorRkFJTCBpbm5lci5zdGF0dXNiYXIuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2Fz
IGZhbHNlLgorRkFJTCBpbm5lci5zdG9wLmlzSW5uZXIgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxz
ZS4KK0ZBSUwgaW5uZXIudG9vbGJhci5pc0lubmVyIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2Uu
CitGQUlMIGlubmVyLndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlLmlzSW5uZXIgc2hv
dWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgaW5uZXIud2Via2l0Q29udmVydFBvaW50RnJv
bVBhZ2VUb05vZGUuaXNJbm5lciBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBpbm5l
ci53aW5kb3cuaXNJbm5lciBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJv
dG90eXBlLWluaGVyaXRhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUt
aW5oZXJpdGFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTA5
MDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWlu
aGVyaXRhbmNlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVzb3VyY2VzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMDgzYjQ3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3Jlc291cmNlcy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMKQEAgLTAsMCArMSw0NSBA
QAorZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSBwcm90b3R5cGVzIGFyZSBzZXQgdXAgdXNpbmcgdGhl
IHdpbmRvdyBhIHByb3BlcnR5IGNhbWUgZnJvbSwgaW5zdGVhZCBvZiB0aGUgbGV4aWNhbCBnbG9i
YWwgb2JqZWN0LiIpCisKK3ZhciBzdWJmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdWJmcmFtZSk7Cit2YXIgaW5uZXIg
PSBzdWJmcmFtZS5jb250ZW50V2luZG93OyAvLyBDYWxsIGl0ICJpbm5lciIgdG8gbWFrZSBzaG91
bGRCZSBvdXRwdXQgc2hvcnRlcgorCit2YXIgc2tpcHBlZFByb3BlcnRpZXMgPSBbCisgICAgLy8g
VGhlc2UgcmVhY2ggb3V0c2lkZSB0aGUgZnJhbWU6CisgICAgInBhcmVudCIsICJ0b3AiLCAib3Bl
bmVyIiwKKyAgICAvLyBUaGVzZSBhcmUgZGVmaW5lZCBieSBEdW1wUmVuZGVyVHJlZQorICAgICJH
Q0NvbnRyb2xsZXIiLCAibGF5b3V0VGVzdENvbnRyb2xsZXIiLAorICAgICJvYmpDQ29udHJvbGxl
ciIsICJ0ZXh0SW5wdXRDb250cm9sbGVyIiwKKyAgICAiZXZlbnRTZW5kZXIiLCAib2JqQ1BsdWdp
biIsICJvYmpDUGx1Z2luRnVuY3Rpb24iLAorXTsKKwordmFyIHNraXBwZWRQcm9wZXJ0aWVzU2V0
ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IHNraXBwZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsr
KQorICBza2lwcGVkUHJvcGVydGllc1NldFtza2lwcGVkUHJvcGVydGllc1tpXV0gPSB0cnVlOwor
CisvLyBTdGFzaCBhIHByb3BlcnR5IG9uIHRoZSBwcm90b3R5cGVzLgord2luZG93Lk9iamVjdC5w
cm90b3R5cGUuaXNJbm5lciA9IGZhbHNlOworaW5uZXIuT2JqZWN0LnByb3RvdHlwZS5pc0lubmVy
ID0gdHJ1ZTsKKwordmFyIHdpbmRvd1Byb3Blcml0ZXMgPSBbXTsKK2ZvciAocHJvcGVydHkgaW4g
d2luZG93KSB7CisgICAgd2luZG93UHJvcGVyaXRlcy5wdXNoKHByb3BlcnR5KTsKK30KK3dpbmRv
d1Byb3BlcnRpZXMgPSB3aW5kb3dQcm9wZXJpdGVzLnNvcnQoKTsKKworZm9yICh2YXIgeCA9IDA7
IHggPCB3aW5kb3dQcm9wZXJpdGVzLmxlbmd0aDsgeCsrKSB7CisgICAgdmFyIHByb3BlcnR5ID0g
d2luZG93UHJvcGVyaXRlc1t4XTsKKyAgICBpZiAoc2tpcHBlZFByb3BlcnRpZXNTZXRbcHJvcGVy
dHldKQorICAgICAgICBjb250aW51ZTsKKworICAgIC8vIFNraXAgbnVsbCBwcm9wZXJ0aWVzIChs
aWtlIG9uKiBsaXN0ZW5lcnMpCisgICAgdmFyIHZhbHVlID0gaW5uZXJbcHJvcGVydHldOworICAg
IGlmICghdmFsdWUpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgc2hvdWxkQmVUcnVlKCJpbm5l
ci4iICsgcHJvcGVydHkgKyAiLmlzSW5uZXIiKQorfQorCitkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKHN1YmZyYW1lKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMGM0Nzcu
LmFkOTRiNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMDktMDctMTQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNvbWUgY29uc3RydWN0b3Igb2JqZWN0cyBleHBvc2VkIG9uIFdpbmRvdyBoYXZlIHRoZSB3
cm9uZyBwcm90b3R5cGUgY2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3Mjc2CisKKyAgICAgICAgU2V2ZXJhbCBDb25zdHJ1Y3RvciBjbGFzc2Vz
IHdlcmUgYWxyZWFkeSBiZWluZyBwYXNzZWQgYSBnbG9iYWwgb2JqZWN0CisgICAgICAgIGR1cmlu
ZyBjb25zdHJ1Y3Rpb24sIGJ1dCB0aGV5IHdlcmUgaWdub3JpbmcgaXQgZm9yIHByb3RvdHlwZSBs
b29rdXAuCisgICAgICAgIEkndmUgZml4ZWQgdGhvc2UgdG8gdXNlIHRoZSBwYXNzZWQgZ2xvYmFs
IG9iamVjdCBpbnN0ZWFkLgorCisgICAgICAgIE1vc3Qgb2YgdGhlc2UgQ29uc3RydWN0b3IgY2xh
c3NlcyBzaG91bGQganVzdCBiZSBhdXRvLWdlbmVyYXRlZCwgYnV0IEkKKyAgICAgICAgcmVmcmFp
bmVkIGZyb20gY2hhbmdpbmcgdGhlbSBvdmVyIHRvIGF1dG8tZ2VuIGluIHRoaXMgcGF0Y2guCisK
KyAgICAgICAgRml4ZWQgQ29kZUdlbmVyYXRvckpTIHRvIHBhc3MgYSBnbG9iYWwgb2JqZWN0IHRv
IGdldERPTUNvbnN0cnVjdG9yIHdoZW4KKyAgICAgICAgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVm
YXVsdCB0byBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpCisgICAgICAg
IHRvIG1hdGNoIGV4aXN0aW5nIGJlaGF2aW9yLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3By
b3RvdHlwZS1pbmhlcml0YW5jZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlv
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnN0cnVjdG9yOjpK
U0F1ZGlvQ29uc3RydWN0b3IpOiB1c2UgdGhlIGV4aXN0aW5nIGdsb2JhbE9iamVjdCBwb2ludGVy
IGZvciBwcm90b3R5cGUgbG9va3VwCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjpkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBl
KTogTWFrZSBpdCBlYXN5IHRvIGRldGVjdCB3aGVyZSB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBp
cyBiZWluZyB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDogcmVtb3ZlIGVy
cm9yLXByb25lIGdldERPTUNvbnN0cnVjdG9yLCByZXF1aXJlIHBhc3NpbmcgSlNET01HbG9iYWxP
YmplY3QqCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYktpdFBvaW50KTogcGFzcyAidGhpcyIgZm9y
IHRoZSBnbG9iYWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYktp
dENTU01hdHJpeCk6IHBhc3MgInRoaXMiIGZvciB0aGUgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93Ojp4c2x0UHJvY2Vzc29yKTogcGFzcyAidGhpcyIgZm9yIHRo
ZSBnbG9iYWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6Ondvcmtlcik6
IHBhc3MgInRoaXMiIGZvciB0aGUgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0
cnVjdG9yOjpKU0ltYWdlQ29uc3RydWN0b3IpOiB1c2UgdGhlIGV4aXN0aW5nIGdsb2JhbE9iamVj
dCBwb2ludGVyIGZvciBwcm90b3R5cGUgbG9va3VwCisgICAgICAgICogYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2Fn
ZUNoYW5uZWxDb25zdHJ1Y3Rvcjo6SlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yKTogdXNlIHRo
ZSBleGlzdGluZyBnbG9iYWxPYmplY3QgcG9pbnRlciBmb3IgcHJvdG90eXBlIGxvb2t1cAorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNPcHRpb25Db25zdHJ1Y3Rvcjo6SlNPcHRpb25Db25zdHJ1Y3Rvcik6IHVzZSB0aGUg
ZXhpc3RpbmcgZ2xvYmFsT2JqZWN0IHBvaW50ZXIgZm9yIHByb3RvdHlwZSBsb29rdXAKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3I6OkpTV2ViS2l0Q1NTTWF0
cml4Q29uc3RydWN0b3IpOiBhZGQgbmV3IGdsb2JhbE9iamVjdCBwYXJhbWV0ZXIgYW5kIHVzZSBp
dAorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRQb2ludENvbnN0cnVjdG9yOjpKU1dlYktpdFBvaW50Q29u
c3RydWN0b3IpOiBhZGQgbmV3IGdsb2JhbE9iamVjdCBwYXJhbWV0ZXIgYW5kIHVzZSBpdAorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrZXJDb25zdHJ1Y3Rvcjo6SlNXb3JrZXJDb25zdHJ1Y3Rvcik6IGFkZCBuZXcgZ2xvYmFs
T2JqZWN0IHBhcmFtZXRlciBhbmQgdXNlIGl0CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3I6OkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcik6IHVzZSB0aGUgZXhpc3RpbmcgZ2xv
YmFsT2JqZWN0IHBvaW50ZXIgZm9yIHByb3RvdHlwZSBsb29rdXAKKyAgICAgICAgIC0tIFhNTEh0
dHBSZXF1ZXN0IGNvbnN0cnVjdG9yIHdhcyBhbHNvIG1pc3NpbmcgYSBsZW5ndGguICBBZGRlZCBv
bmUuCisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I6OkpTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorCiAyMDA5LTA3LTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZlcnQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDU4
NjQgYWZ0ZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVj
dG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAppbmRl
eCA3NGJjYWQ1Li4zYTI4MmE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9Db25zdHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3Ry
dWN0b3IuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3Qg
Q2xhc3NJbmZvIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3Rv
ciIsIDAsIDAsIDAgfTsKIAogSlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDog
RE9NT2JqZWN0KEpTQXVkaW9Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpKQotICAgICwgbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NT2JqZWN0KEpTQXVkaW9Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQorICAgICAgICwg
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVChnbG9iYWxPYmplY3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwogCi0gICAgcHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEF1ZGlvRWxlbWVudFByb3RvdHlw
ZTo6c2VsZihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBOb25lKTsKKyAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVt
ZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwogICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCAxKSwgUmVh
ZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCmluZGV4IGUzZmQ0MTcuLmVlMzJhZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aApAQCAtODAsNiArODAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIEpTQzo6SlNPYmpl
Y3QqIGdldENhY2hlZERPTUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpD
bGFzc0luZm8qKTsKICAgICB2b2lkIGNhY2hlRE9NQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OkNsYXNzSW5mbyosIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yKTsKIAor
ICAgIGlubGluZSBKU0RPTUdsb2JhbE9iamVjdCogZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclBy
b3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBD
YWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzaW5nIHRoZSBnbG9iYWwgb2JqZWN0
CisgICAgICAgIC8vIGZyb20gd2hpY2ggdGhlIG9iamVjdCBpcyBiZWluZyBjcmVhdGVkLCBpbnN0
ZWFkIG9mIGFzc3VtaW5nIHRoZSBsZXhpY2FsIG9uZS4KKyAgICAgICAgLy8gZS5nLiBzdWJmcmFt
ZS5kb2N1bWVudC5ib2R5IHNob3VsZCB1c2UgdGhlIHN1YmZyYW1lJ3MgZ2xvYmFsIG9iamVjdCwg
bm90IHRoZSBsZXhpY2FsIG9uZS4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9N
U3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
ZXRDYWNoZWRET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCAmV3JhcHBlckNsYXNzOjpzX2luZm8p
KQpAQCAtODksNyArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8Y2xh
c3MgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBpcyB3cm9uZy4gIEl0IHVzZXMgdGhlIHdyb25nIGdsb2JhbCBvYmplY3Qg
Zm9yIGNyZWF0aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJlLgotICAgICAgICByZXR1cm4gZ2V0
RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICAgICAgcmV0dXJuIGdl
dERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RG
b3JQcm90b3R5cGUoZXhlYykpOwogICAgIH0KICAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggOGU0ZTgyMC4uYTFhMTYxNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtODksMTYgKzg5LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1
Y3RvckNsYXNzPgotICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBj
b25zdHJ1Y3RvciA9IGdldENhY2hlZERPTUNvbnN0cnVjdG9yKGV4ZWMsICZDb25zdHJ1Y3RvckNs
YXNzOjpzX2luZm8pKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotICAgICAgICBK
U0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQ29uc3RydWN0b3JDbGFzcyhl
eGVjKTsKLSAgICAgICAgY2FjaGVET01Db25zdHJ1Y3RvcihleGVjLCAmQ29uc3RydWN0b3JDbGFz
czo6c19pbmZvLCBjb25zdHJ1Y3Rvcik7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1Y3RvckNsYXNzPgogICAgIGlubGluZSBK
U0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChK
U0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+Y29uc3RydWN0b3JzKCku
Z2V0KCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCBjMDk1YmYyLi4wOTM2ZjExIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDQzLDEyICs0NDMsMTIgQEAgSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6YXVkaW8oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiBKU1ZhbHVlIEpT
RE9NV2luZG93Ojp3ZWJLaXRQb2ludChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcj4oZXhlYyk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcj4oZXhl
YywgdGhpcyk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OndlYktpdENTU01hdHJpeChFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV2Vi
S2l0Q1NTTWF0cml4Q29uc3RydWN0b3I+KGV4ZWMpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKIH0KICAKIEpT
VmFsdWUgSlNET01XaW5kb3c6OnhtbEh0dHBSZXF1ZXN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
QEAgLTQ1OSw3ICs0NTksNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojp4bWxIdHRwUmVxdWVzdChF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAjaWYgRU5BQkxFKFhTTFQpCiBKU1ZhbHVlIEpTRE9NV2lu
ZG93Ojp4c2x0UHJvY2Vzc29yKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I+KGV4ZWMpOworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvcj4oZXhl
YywgdGhpcyk7CiB9CiAjZW5kaWYKIApAQCAtNDczLDcgKzQ3Myw3IEBAIEpTVmFsdWUgSlNET01X
aW5kb3c6Om1lc3NhZ2VDaGFubmVsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICNpZiBFTkFCTEUo
V09SS0VSUykKIEpTVmFsdWUgSlNET01XaW5kb3c6OndvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2VyQ29uc3RydWN0b3I+
KGV4ZWMpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dvcmtlckNvbnN0cnVjdG9y
PihleGVjLCB0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggNGEyN2JiNC4uZWYyZDg3YiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNJbWFnZUNvbnN0cnVjdG9yKTsKIGNvbnN0IENsYXNzSW5mbyBK
U0ltYWdlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkltYWdlQ29uc3RydWN0b3IiLCAwLCAwLCAw
IH07CiAKIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IERPTU9iamVjdChK
U0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSkKKyAgICA6IERPTU9iamVjdChKU0ltYWdlQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkK
ICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKIAotICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQ
cm90b3R5cGU6OnNlbGYoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgTm9uZSk7
CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTElt
YWdlRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKIH0K
IAogRG9jdW1lbnQqIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6ZG9jdW1lbnQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDQ5NWJkNTMuLmJmOTdmZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjb25zdCBDbGFzc0luZm8gSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogCiBK
U01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3I6OkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBE
T01PYmplY3QoSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpCisgICAgOiBET01P
YmplY3QoSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IEpTTWVzc2FnZUNoYW5uZWxQcm90b3R5cGU6OnNlbGYoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIEpTTWVzc2FnZUNoYW5uZWxQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7CiB9CiAKIEpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcjo6fkpTTWVzc2Fn
ZUNoYW5uZWxDb25zdHJ1Y3RvcigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
T3B0aW9uQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcAppbmRleCA5ZTgxOGZmLi42ZDA1ZmU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTT3B0aW9uQ29uc3RydWN0b3IpOwogY29uc3QgQ2xhc3NJbmZvIEpT
T3B0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIk9wdGlvbkNvbnN0cnVjdG9yIiwgMCwgMCwg
MCB9OwogCiBKU09wdGlvbkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IERPTU9iamVj
dChKU09wdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpCisgICAgOiBET01PYmplY3QoSlNPcHRpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBl
KCkpKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVChn
bG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwogCi0gICAg
cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTE9wdGlvbkVs
ZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
Tm9uZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpT
SFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9u
ZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KGV4ZWMsIDQpLCBSZWFkT25seXxEb250RGVsZXRlfERvbnRFbnVtKTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggYzdmZTRhNS4uNTU3NWFmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IiLCAwLCAwLCAwIH07
CiAKLUpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3I6OkpTV2ViS2l0Q1NTTWF0cml4Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQotICAgIDogRE9NT2JqZWN0KEpTV2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pm9iamVjdFByb3RvdHlwZSgpKSkKK0pTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3I6OkpTV2Vi
S2l0Q1NTTWF0cml4Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NT2JqZWN0KEpTV2ViS2l0Q1NTTWF0cml4Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkK
IHsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNXZWJL
aXRDU1NNYXRyaXhQcm90b3R5cGU6OnNlbGYoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsIEpTV2ViS2l0Q1NTTWF0cml4UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCks
IE5vbmUpOwogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcihleGVjLCAxKSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5o
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgKaW5k
ZXggZDBlMGJkMS4uYWI5YzI4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yIDogcHVibGljIERP
TU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSopOworICAgIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNz
SW5mbyBzX2luZm87CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
S2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYzdkNGUzNi4uNWFjMjBiMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApAQCAtMzYs
MTAgKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dl
YktpdFBvaW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIldlYktpdFBvaW50Q29uc3RydWN0b3Ii
LCAwLCAwLCAwIH07CiAKLUpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcjo6SlNXZWJLaXRQb2ludENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKLSAgICA6IERPTU9iamVjdChKU1dlYktpdFBvaW50
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pm9iamVjdFByb3RvdHlwZSgpKSkKK0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcjo6SlNXZWJLaXRQ
b2ludENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKKyAgICA6IERPTU9iamVjdChKU1dlYktpdFBvaW50Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkKIHsKLSAgICBwdXRE
aXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNXZWJLaXRQb2ludFByb3Rv
dHlwZTo6c2VsZihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBOb25lKTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNXZWJLaXRQb2lu
dFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKICAgICBwdXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMiksIFJlYWRP
bmx5fERvbnREZWxldGV8RG9udEVudW0pOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdFBvaW50Q29uc3RydWN0b3IuaAppbmRleCBhNWJiNWMxLi4xZGExZjIyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1dlYktpdFBvaW50Q29uc3Ry
dWN0b3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBKU1dlYktpdFBvaW50Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBKU1dlYktpdFBvaW50Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBjb25zdCBK
U0M6OkNsYXNzSW5mbyBzX2luZm87CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnN0cnVjdG9yLmNwcAppbmRleCA4ZWE2NzE4Li5jNzY1M2YzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTQxLDEwICs0MSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJXb3JrZXJDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAotSlNXb3Jr
ZXJDb25zdHJ1Y3Rvcjo6SlNXb3JrZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCi0gICAg
OiBET01PYmplY3QoSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpKQorSlNXb3JrZXJDb25zdHJ1
Y3Rvcjo6SlNXb3JrZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBET01PYmplY3QoSlNXb3JrZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKQogewotICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1dvcmtlclByb3Rv
dHlwZTo6c2VsZihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBOb25lKTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNXb3JrZXJQcm90
b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiAgICAgcHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDEpLCBSZWFkT25seXxE
b250RGVsZXRlfERvbnRFbnVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
c3RydWN0b3IuaAppbmRleCBkMWRmN2ViLi4xYTA2YTU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29uc3RydWN0b3IuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBKU1dvcmtlckNvbnN0cnVjdG9yIDogcHVibGljIERPTU9iamVjdCB7
CiAgICAgcHVibGljOgotICAgICAgICBKU1dvcmtlckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
Kik7CisgICAgICAgIEpTV29ya2VyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENv
bnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0
cnVjdG9yLmNwcAppbmRleCA2NWNkZmMyLi40NDU1YzZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCkBAIC0zMywxMCArMzMs
MTAgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IpOwogY29uc3QgQ2xhc3NJbmZvIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNYTUxIdHRw
UmVxdWVzdENvbnN0cnVjdG9yOjpKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NT2JqZWN0
KEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpKQorICAgIDogRE9NT2JqZWN0KEpT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQog
ewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1hNTEh0
dHBSZXF1ZXN0UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSksIE5vbmUpOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBKU1hNTEh0dHBSZXF1ZXN0UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5v
bmUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1hNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3I6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcAppbmRleCA4MDdiMDE3Li45
OTI5MDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNv
bnN0cnVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNv
bnN0cnVjdG9yLmNwcApAQCAtNDEsMTAgKzQxLDExIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gSlNYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlhTTFRQcm9jZXNzb3JDb25zcnVjdG9y
IiwgMCwgMCwgMCB9OwogCi1KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvcjo6SlNYU0xUUHJvY2Vz
c29yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQotICAgIDogRE9NT2JqZWN0KEpTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpCitKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvcjo6
SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogRE9NT2JqZWN0KEpTWFNMVFByb2Nlc3NvckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
CiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTWFNM
VFByb2Nlc3NvclByb3RvdHlwZTo6c2VsZihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLCBOb25lKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgSlNYU0xUUHJvY2Vzc29yUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5v
bmUpOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cihleGVjLCAxKSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CiB9CiAKIHN0YXRpYyBK
U09iamVjdCogY29uc3RydWN0WFNMVFByb2Nlc3NvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiwgY29uc3QgQXJnTGlzdCYpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNM
VFByb2Nlc3NvckNvbnN0cnVjdG9yLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3NvckNvbnN0cnVjdG9yLmgKaW5kZXggNjRlZjk0NC4uNzRmYzM3YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU1hTTFRQcm9jZXNzb3JDb25z
dHJ1Y3RvciA6IHB1YmxpYyBET01PYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNYU0xUUHJv
Y2Vzc29yQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwog
ICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRi
Y2ZmZmYuLmE3MjZhNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNTIwLDcgKzUyMCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgbG9va3VwU2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpO1xuIikg
aWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTG9va3VwU2V0dGVyIn07
CiAKICAgICAjIENvbnN0cnVjdG9yIG9iamVjdCBnZXR0ZXIKLSAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlQ29u
c3RydWN0b3IifTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0
cnVjdG9yIn07CiAKICAgICBteSAkbnVtQ3VzdG9tRnVuY3Rpb25zID0gMDsKICAgICBteSAkbnVt
Q3VzdG9tQXR0cmlidXRlcyA9IDA7CkBAIC0xMTMyLDggKzExMzIsMTAgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAgbXkg
JGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUpOwogICAgICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBl
ID1+IHMvQ29uc3RydWN0b3IkLy87Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90KTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6
OmdldENvbnN0cnVjdG9yKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PCRj
bGFzc05hbWUqPihhc09iamVjdChzbG90LnNsb3RCYXNlKCkpKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAjIENvbnN0cnVjdG9yIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgYnkgRE9NV2luZG93
LmlkbCwgc28gaXQncyBjb3JyZWN0IHRvIHBhc3MgY2FzdGVkVGhpcyBhcyB0aGUgZ2xvYmFsIG9i
amVjdAorICAgICAgICAgICAgICAgICAgICAjIE9uY2UgRE9NT2JqZWN0cyBoYXZlIGEgYmFjay1w
b2ludGVyIHRvIHRoZSBnbG9iYWxPYmplY3Qgd2UgY2FuIHBhc3MgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBjYXN0
ZWRUaGlzKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdl
dHRlckV4Y2VwdGlvbnN9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
JHBvZFR5cGUpIHsKQEAgLTExOTEsOSArMTE5Myw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2Vu
ZXJhdGVDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JilcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90
LnNsb3RCYXNlKCkpKS0+Z2V0Q29uc3RydWN0b3IoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1
Y3RvcihleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpKTtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTEzMzgsOCArMTM0MCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkdlbmVyYXRlQ29uc3RydWN0b3IifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpT
VmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpXG57XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPihleGVjKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NO
YW1lfUNvbnN0cnVjdG9yPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
ICAgICB9CiAKQEAgLTIwMjcsMTAgKzIwMjksMTAgQEAgc3ViIGNvbnN0cnVjdG9yRm9yCiBteSAk
aW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKIGNsYXNzICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIDog
cHVibGljIERPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgJHtjbGFzc05hbWV9Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQotICAgICAgICA6IERPTU9iamVjdCgke2NsYXNzTmFtZX1Db25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0
UHJvdG90eXBlKCkpKQorICAgICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBET01PYmplY3Qo
JHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSkKICAgICB7Ci0gICAgICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6c2VsZihleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBOb25lKTsKKyAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsICR7cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGds
b2JhbE9iamVjdCksIE5vbmUpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNf
aW5mbzsgfQ==
</data>
<flag name="review"
          id="17117"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>