<?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>17486</bug_id>
          
          <creation_ts>2008-02-21 21:34:44 -0800</creation_ts>
          <short_desc>Support HTML5 Canvas.getImageData API</short_desc>
          <delta_ts>2008-02-22 17:17:49 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>hyatt</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71460</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-21 21:34:44 -0800</bug_when>
    <thetext>See HTML5 getImageData spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71461</commentid>
    <comment_count>1</comment_count>
      <attachid>19272</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-21 21:39:13 -0800</bug_when>
    <thetext>Created attachment 19272
Woo! getImageData support!

In my defence layout tests and copyrights on new files make this patch look bigger than it is :-O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71475</commentid>
    <comment_count>2</comment_count>
      <attachid>19272</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-02-21 23:13:00 -0800</bug_when>
    <thetext>Comment on attachment 19272
Woo! getImageData support!

The canvas parts look good to me.  I&apos;d do something besides just returning 0 with no FIXME Or notimplemented in the ports impls though.

I&apos;d also leak test and make sure everything gets cleaned up.

Maybe Sam could comment on the CodeGenerator changes, since I don&apos;t really understand any of that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71483</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-21 23:41:11 -0800</bug_when>
    <thetext>As mentioned in IRC, I think the logic in the JSCanvasPixelArray indexGetter and indexSetter should be in the CanvasPixelArray class, not in the JS wrapper.  (Also, JSCanvasPixelArray::indexGetter should follow idiom and do a static_cast to get this without at type check.)

You should start your classes out with a ref-count of 1 by not explicitly calling RefCounted in the constructor.  This also requires changing your create functions to use adoptRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71488</commentid>
    <comment_count>4</comment_count>
      <attachid>19276</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-22 01:49:15 -0800</bug_when>
    <thetext>Created attachment 19276
Address weinig&apos;s commentary 

Hopefully i have sufficiently appeased the weinig</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71512</commentid>
    <comment_count>5</comment_count>
      <attachid>19276</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-22 13:24:39 -0800</bug_when>
    <thetext>Comment on attachment 19276
Address weinig&apos;s commentary 

For the indexGetter method, please look at the existing indexGetters for how to implement getting the index from the slot.  I also think you move details into the CanvasPixelArray object so that you don&apos;t access the vector directly in the JS wrapper.

+    double pvalue = value-&gt;toNumber(exec);
pvalue!  Really!

+CanvasPixelArray::CanvasPixelArray(unsigned size)
+    : RefCounted&lt;CanvasPixelArray&gt;()
No need to explicitly call RefCounted here.

+        void set(unsigned index, double value) {
+            if (!(value &gt; 0))
brace should go on it&apos;s own line.  Does this need to be inlined?

+        CanvasPixelArray(unsigned size);
New line after this.

+ImageData::ImageData(unsigned width, unsigned height)
+    : RefCounted&lt;ImageData&gt;()
+    , m_width(width)
+    , m_height(height)
+    , m_data(CanvasPixelArray::create(width * height * 4))
+{
+    
+}
No need to explicitly call RefCounted.  Extra newline in the body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71522</commentid>
    <comment_count>6</comment_count>
      <attachid>19283</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-22 15:59:21 -0800</bug_when>
    <thetext>Created attachment 19283
getImageData Redux

Now we report the extra memory usage to the collectorator and look pretty and stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71526</commentid>
    <comment_count>7</comment_count>
      <attachid>19283</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-22 16:07:17 -0800</bug_when>
    <thetext>Comment on attachment 19283
getImageData Redux

r+ but please 
+    else
+        return jsUndefined();
remove this else and
+    JSCanvasPixelArray* ret = static_cast&lt;JSCanvasPixelArray*&gt;(ScriptInterpreter::getDOMObject(pixels));
remove this cast and
remove the implementation of putImageData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71536</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-22 17:17:49 -0800</bug_when>
    <thetext>Landed r30506</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19272</attachid>
            <date>2008-02-21 21:39:13 -0800</date>
            <delta_ts>2008-02-22 01:49:15 -0800</delta_ts>
            <desc>Woo! getImageData support!</desc>
            <filename>getImageData.patch</filename>
            <type>text/plain</type>
            <size>78761</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YTg4ZDc0Li5lN2I0M2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMDIt
MjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTc0ODY6IFN1cHBvcnQgSFRNTDUgQ2Fu
dmFzLmdldEltYWdlRGF0YSBBUEkKKyAgICAgICAgU3VwcG9ydCBDYW52YXMuZ2V0SW1hZ2VEYXRh
IGFuZCBDYW52YXMuY3JlYXRlSW1hZ2VEYXRhCisKKyAgICAgICAgVGVzdCBjYXNlcyBmb3IgSW1h
Z2VEYXRhIGJlaGF2aW91ciBhbmQgZ2V0SW1hZ2VEYXRhIGNvcnJlY3RuZXNzCisKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZp
b3VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWdldElt
YWdlRGF0YS5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVo
YXZpb3VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
ZjUxMTdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LUltYWdlRGF0YS1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDggQEAKK1Nlcmll
cyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIgb2YgdGhlIEltYWdlRGF0YSBv
YmplY3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW1hZ2VEYXRhLndp
ZHRoIGlzIDIKK1BBU1MgaW1hZ2VEYXRhLmhlaWdodCBpcyAyCitQQVNTIGltYWdlRGF0YS5kYXRh
Lmxlbmd0aCBpcyAxNgorUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0
YS5kYXRhWzFdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBpbWFnZURh
dGEuZGF0YVszXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzRdIGlzIDAKK1BBU1MgaW1hZ2VE
YXRhLmRhdGFbNV0gaXMgMAorUEFTUyBpbWFnZURhdGEuZGF0YVs2XSBpcyAwCitQQVNTIGltYWdl
RGF0YS5kYXRhWzddIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbOF0gaXMgMAorUEFTUyBpbWFn
ZURhdGEuZGF0YVs5XSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzEwXSBpcyAwCitQQVNTIGlt
YWdlRGF0YS5kYXRhWzExXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzEyXSBpcyAwCitQQVNT
IGltYWdlRGF0YS5kYXRhWzEzXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzE0XSBpcyAwCitQ
QVNTIGltYWdlRGF0YS5kYXRhWzE1XSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gTmFO
LCBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gdHJ1ZSwg
aW1hZ2VEYXRhLmRhdGFbMF0gaXMgMQorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IGZhbHNlLCBp
bWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gImdhcmJhZ2Ui
LCBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLTEsIGlt
YWdlRGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMCIsIGltYWdl
RGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMSIsIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDEKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMiIsIGltYWdlRGF0YS5k
YXRhWzBdIGlzIDIKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSBJbmZpbml0eSwgaW1hZ2VEYXRh
LmRhdGFbMF0gaXMgMjU1CitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLUluZmluaXR5LCBpbWFn
ZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLTUsIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAtMC41LCBpbWFnZURhdGEu
ZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gMCwgaW1hZ2VEYXRhLmRhdGFb
MF0gaXMgMAorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IDAuNSwgaW1hZ2VEYXRhLmRhdGFbMF0g
aXMgMQorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IDUsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDUK
K1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSA1LjQsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDUKK1BB
U1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAyNTUsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDI1NQorUEFT
UyBpbWFnZURhdGEuZGF0YVswXSA9IDI1NiwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMjU1CitQQVNT
IGltYWdlRGF0YS5kYXRhWzBdID0gbnVsbCwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBp
bWFnZURhdGEuZGF0YVswXSA9IHVuZGVmaW5lZCwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MDNhZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2
aW91ci5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+Cis8c2NyaXB0IHNyYz0iY2FudmFzLUltYWdlRGF0
YS1iZWhhdmlvdXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDQxZDE5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMK
QEAgLTAsMCArMSwyMyBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUg
Y29ycmVjdCBiZWhhdmlvdXIgb2YgdGhlIEltYWdlRGF0YSBvYmplY3QiKTsKKworaW1hZ2VEYXRh
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuZ2V0
SW1hZ2VEYXRhKDAsMCwyLDIpOworCitzaG91bGRCZSgiaW1hZ2VEYXRhLndpZHRoIiwgIjIiKTsK
K3Nob3VsZEJlKCJpbWFnZURhdGEuaGVpZ2h0IiwgIjIiKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEu
ZGF0YS5sZW5ndGgiLCAiMTYiKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VEYXRhLmRhdGEu
bGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUoImltYWdlRGF0YS5kYXRhWyIraSsiXSIsICIwIik7
CisKK3ZhciB0ZXN0VmFsdWVzID0gW05hTiwgdHJ1ZSwgZmFsc2UsICJcImdhcmJhZ2VcIiIsICIt
MSIsCisgICAgICAgICAgICAgICAgICAiXCIwXCIiLCAiXCIxXCIiLCAiXCIyXCIiLCBJbmZpbml0
eSwgLUluZmluaXR5LAorICAgICAgICAgICAgICAgICAgLTUsIC0wLjUsIDAsIDAuNSwgNSwKKyAg
ICAgICAgICAgICAgICAgIDUuNCwgMjU1LCAyNTYsIG51bGwsIHVuZGVmaW5lZF07Cit2YXIgdGVz
dFJlc3VsdHMgPSBbMCwgMSwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAy
NTUsIDAsCisgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMSwgNSwKKyAgICAgICAgICAgICAg
ICAgICA1LCAyNTUsIDI1NSwgMCwgMF07Citmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RWYWx1ZXMu
bGVuZ3RoOyBpKyspIHsKKyAgICBzaG91bGRCZSgiaW1hZ2VEYXRhLmRhdGFbMF0gPSAiK3Rlc3RW
YWx1ZXNbaV0rIiwgaW1hZ2VEYXRhLmRhdGFbMF0iLCAiIit0ZXN0UmVzdWx0c1tpXSk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzBhYWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNTAgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgZ2V0SW1hZ2VEYXRhIHdvcmtz
IGNvcnJlY3RseS4KK1BBU1M6IHBpeGVsIGF0ICgwLDApIHdhcyBbMCwwLDAsMjU1XQorUEFTUzog
cGl4ZWwgYXQgKDQsMCkgd2FzIFswLDExLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDgsMCkgd2Fz
IFswLDIxLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDEyLDApIHdhcyBbMCwzMiwwLDI1NV0KK1BB
U1M6IHBpeGVsIGF0ICgxNiwwKSB3YXMgWzAsNDMsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoMjAs
MCkgd2FzIFswLDUzLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDI0LDApIHdhcyBbMCw2NCwwLDI1
NV0KK1BBU1M6IHBpeGVsIGF0ICgyOCwwKSB3YXMgWzAsNzQsMCwyNTVdCitQQVNTOiBwaXhlbCBh
dCAoMzIsMCkgd2FzIFswLDg1LDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDM2LDApIHdhcyBbMCw5
NiwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg0MCwwKSB3YXMgWzAsMTA2LDAsMjU1XQorUEFTUzog
cGl4ZWwgYXQgKDQ0LDApIHdhcyBbMCwxMTcsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNDgsMCkg
d2FzIFswLDEyOCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg1MiwwKSB3YXMgWzAsMTM4LDAsMjU1
XQorUEFTUzogcGl4ZWwgYXQgKDU2LDApIHdhcyBbMCwxNDksMCwyNTVdCitQQVNTOiBwaXhlbCBh
dCAoNjAsMCkgd2FzIFswLDE1OSwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg2NCwwKSB3YXMgWzAs
MTcwLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDY4LDApIHdhcyBbMCwxODEsMCwyNTVdCitQQVNT
OiBwaXhlbCBhdCAoNzIsMCkgd2FzIFswLDE5MSwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg3Niww
KSB3YXMgWzAsMjAyLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDgwLDApIHdhcyBbMCwyMTMsMCwy
NTVdCitQQVNTOiBwaXhlbCBhdCAoODQsMCkgd2FzIFswLDIyMywwLDI1NV0KK1BBU1M6IHBpeGVs
IGF0ICg4OCwwKSB3YXMgWzAsMjM0LDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDkyLDApIHdhcyBb
MCwyNDQsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOTYsMCkgd2FzIFswLDI1NSwwLDI1NV0KK1BB
U1M6IHBpeGVsIGF0ICg1LDUpIHdhcyBbNjQsMTI4LDE5MSwyNTVdCitQQVNTOiBDb3JyZWN0IGRh
dGEgZm9yIGNvbnRlbnQgb3V0c2lkZSBjYW52YXMgYm91bmRzCitQQVNTOiBwaXhlbCBhdCAoNTAs
NTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg1MCw1NCkgd2FzIFswLDAsMCwxXQor
UEFTUzogcGl4ZWwgYXQgKDUwLDU4KSB3YXMgWzAsMCwwLDJdCitQQVNTOiBwaXhlbCBhdCAoNTAs
NjIpIHdhcyBbMCwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNTAsNjYpIHdhcyBbMCwwLDAsMzJd
CitQQVNTOiBwaXhlbCBhdCAoNTAsNzApIHdhcyBbMCwwLDAsNjRdCitQQVNTOiBwaXhlbCBhdCAo
NTAsNzQpIHdhcyBbMCwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoNTAsNzgpIHdhcyBbMCwwLDAs
MTI4XQorUEFTUzogcGl4ZWwgYXQgKDUwLDgyKSB3YXMgWzAsMCwwLDE5Ml0KK1BBU1M6IHBpeGVs
IGF0ICg1MCw4Nikgd2FzIFswLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBhdCAoNTAsOTApIHdhcyBb
MCwwLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDU0LDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBw
aXhlbCBhdCAoNTQsNTQpIHdhcyBbMCwwLDAsMV0KK1BBU1M6IHBpeGVsIGF0ICg1NCw1OCkgd2Fz
IFswLDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDU0LDYyKSB3YXMgWzAsMCwwLDE2XQorUEFTUzog
cGl4ZWwgYXQgKDU0LDY2KSB3YXMgWzAsMCwwLDMyXQorUEFTUzogcGl4ZWwgYXQgKDU0LDcwKSB3
YXMgWzAsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQgKDU0LDc0KSB3YXMgWzAsMCwwLDk2XQorUEFT
UzogcGl4ZWwgYXQgKDU0LDc4KSB3YXMgWzEsMCwwLDEyOF0KK1BBU1M6IHBpeGVsIGF0ICg1NCw4
Mikgd2FzIFsxLDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNTQsODYpIHdhcyBbMSwwLDAsMjU0
XQorUEFTUzogcGl4ZWwgYXQgKDU0LDkwKSB3YXMgWzEsMCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0
ICg1OCw1MCkgd2FzIFswLDAsMCwwXQorUEFTUzogcGl4ZWwgYXQgKDU4LDU0KSB3YXMgWzAsMCww
LDFdCitQQVNTOiBwaXhlbCBhdCAoNTgsNTgpIHdhcyBbMCwwLDAsMl0KK1BBU1M6IHBpeGVsIGF0
ICg1OCw2Mikgd2FzIFswLDAsMCwxNl0KK1BBU1M6IHBpeGVsIGF0ICg1OCw2Nikgd2FzIFswLDAs
MCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg1OCw3MCkgd2FzIFszLDAsMCw2NF0KK1BBU1M6IHBpeGVs
IGF0ICg1OCw3NCkgd2FzIFsyLDAsMCw5Nl0KK1BBU1M6IHBpeGVsIGF0ICg1OCw3OCkgd2FzIFsx
LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoNTgsODIpIHdhcyBbMiwwLDAsMTkyXQorUEFTUzog
cGl4ZWwgYXQgKDU4LDg2KSB3YXMgWzIsMCwwLDI1NF0KK1BBU1M6IHBpeGVsIGF0ICg1OCw5MCkg
d2FzIFsyLDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNjIsNTApIHdhcyBbMCwwLDAsMF0KK1BB
U1M6IHBpeGVsIGF0ICg2Miw1NCkgd2FzIFswLDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDYyLDU4
KSB3YXMgWzAsMCwwLDJdCitQQVNTOiBwaXhlbCBhdCAoNjIsNjIpIHdhcyBbMTUsMCwwLDE2XQor
UEFTUzogcGl4ZWwgYXQgKDYyLDY2KSB3YXMgWzE1LDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg2
Miw3MCkgd2FzIFsxNSwwLDAsNjRdCitQQVNTOiBwaXhlbCBhdCAoNjIsNzQpIHdhcyBbMTUsMCww
LDk2XQorUEFTUzogcGl4ZWwgYXQgKDYyLDc4KSB3YXMgWzE1LDAsMCwxMjhdCitQQVNTOiBwaXhl
bCBhdCAoNjIsODIpIHdhcyBbMTUsMCwwLDE5Ml0KK1BBU1M6IHBpeGVsIGF0ICg2Miw4Nikgd2Fz
IFsxNiwwLDAsMjU0XQorUEFTUzogcGl4ZWwgYXQgKDYyLDkwKSB3YXMgWzE2LDAsMCwyNTVdCitQ
QVNTOiBwaXhlbCBhdCAoNjYsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg2Niw1
NCkgd2FzIFswLDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDY2LDU4KSB3YXMgWzAsMCwwLDJdCitQ
QVNTOiBwaXhlbCBhdCAoNjYsNjIpIHdhcyBbMzEsMCwwLDE2XQorUEFTUzogcGl4ZWwgYXQgKDY2
LDY2KSB3YXMgWzMxLDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg2Niw3MCkgd2FzIFszMSwwLDAs
NjRdCitQQVNTOiBwaXhlbCBhdCAoNjYsNzQpIHdhcyBbMzEsMCwwLDk2XQorUEFTUzogcGl4ZWwg
YXQgKDY2LDc4KSB3YXMgWzMxLDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoNjYsODIpIHdhcyBb
MzEsMCwwLDE5Ml0KK1BBU1M6IHBpeGVsIGF0ICg2Niw4Nikgd2FzIFszMiwwLDAsMjU0XQorUEFT
UzogcGl4ZWwgYXQgKDY2LDkwKSB3YXMgWzMyLDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNzAs
NTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg3MCw1NCkgd2FzIFswLDAsMCwxXQor
UEFTUzogcGl4ZWwgYXQgKDcwLDU4KSB3YXMgWzEyNywwLDAsMl0KK1BBU1M6IHBpeGVsIGF0ICg3
MCw2Mikgd2FzIFs2MywwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNzAsNjYpIHdhcyBbNjMsMCww
LDMyXQorUEFTUzogcGl4ZWwgYXQgKDcwLDcwKSB3YXMgWzYzLDAsMCw2NF0KK1BBU1M6IHBpeGVs
IGF0ICg3MCw3NCkgd2FzIFs2MywwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoNzAsNzgpIHdhcyBb
NjMsMCwwLDEyOF0KK1BBU1M6IHBpeGVsIGF0ICg3MCw4Mikgd2FzIFs2MywwLDAsMTkyXQorUEFT
UzogcGl4ZWwgYXQgKDcwLDg2KSB3YXMgWzY0LDAsMCwyNTRdCitQQVNTOiBwaXhlbCBhdCAoNzAs
OTApIHdhcyBbNjQsMCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg3NCw1MCkgd2FzIFswLDAsMCww
XQorUEFTUzogcGl4ZWwgYXQgKDc0LDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAo
NzQsNTgpIHdhcyBbMTI3LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDc0LDYyKSB3YXMgWzk1LDAs
MCwxNl0KK1BBU1M6IHBpeGVsIGF0ICg3NCw2Nikgd2FzIFs5NSwwLDAsMzJdCitQQVNTOiBwaXhl
bCBhdCAoNzQsNzApIHdhcyBbOTUsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQgKDc0LDc0KSB3YXMg
Wzk1LDAsMCw5Nl0KK1BBU1M6IHBpeGVsIGF0ICg3NCw3OCkgd2FzIFs5NSwwLDAsMTI4XQorUEFT
UzogcGl4ZWwgYXQgKDc0LDgyKSB3YXMgWzk1LDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNzQs
ODYpIHdhcyBbOTYsMCwwLDI1NF0KK1BBU1M6IHBpeGVsIGF0ICg3NCw5MCkgd2FzIFs5NiwwLDAs
MjU1XQorUEFTUzogcGl4ZWwgYXQgKDc4LDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBwaXhlbCBh
dCAoNzgsNTQpIHdhcyBbMjU1LDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDc4LDU4KSB3YXMgWzEy
NywwLDAsMl0KK1BBU1M6IHBpeGVsIGF0ICg3OCw2Mikgd2FzIFsxMjcsMCwwLDE2XQorUEFTUzog
cGl4ZWwgYXQgKDc4LDY2KSB3YXMgWzEyNywwLDAsMzJdCitQQVNTOiBwaXhlbCBhdCAoNzgsNzAp
IHdhcyBbMTI3LDAsMCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg3OCw3NCkgd2FzIFsxMjcsMCwwLDk2
XQorUEFTUzogcGl4ZWwgYXQgKDc4LDc4KSB3YXMgWzEyNywwLDAsMTI4XQorUEFTUzogcGl4ZWwg
YXQgKDc4LDgyKSB3YXMgWzEyNywwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDc4LDg2KSB3YXMg
WzEyNywwLDAsMjU0XQorUEFTUzogcGl4ZWwgYXQgKDc4LDkwKSB3YXMgWzEyOCwwLDAsMjU1XQor
UEFTUzogcGl4ZWwgYXQgKDgyLDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBwaXhlbCBhdCAoODIs
NTQpIHdhcyBbMjU1LDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDgyLDU4KSB3YXMgWzI1NSwwLDAs
Ml0KK1BBU1M6IHBpeGVsIGF0ICg4Miw2Mikgd2FzIFsxOTEsMCwwLDE2XQorUEFTUzogcGl4ZWwg
YXQgKDgyLDY2KSB3YXMgWzE5MSwwLDAsMzJdCitQQVNTOiBwaXhlbCBhdCAoODIsNzApIHdhcyBb
MTkxLDAsMCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg4Miw3NCkgd2FzIFsxOTEsMCwwLDk2XQorUEFT
UzogcGl4ZWwgYXQgKDgyLDc4KSB3YXMgWzE5MSwwLDAsMTI4XQorUEFTUzogcGl4ZWwgYXQgKDgy
LDgyKSB3YXMgWzE5MiwwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDgyLDg2KSB3YXMgWzE5MSww
LDAsMjU0XQorUEFTUzogcGl4ZWwgYXQgKDgyLDkwKSB3YXMgWzE5MiwwLDAsMjU1XQorUEFTUzog
cGl4ZWwgYXQgKDg2LDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBwaXhlbCBhdCAoODYsNTQpIHdh
cyBbMjU1LDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDg2LDU4KSB3YXMgWzI1NSwwLDAsMl0KK1BB
U1M6IHBpeGVsIGF0ICg4Niw2Mikgd2FzIFsyNTUsMCwwLDE2XQorUEFTUzogcGl4ZWwgYXQgKDg2
LDY2KSB3YXMgWzI1NSwwLDAsMzJdCitQQVNTOiBwaXhlbCBhdCAoODYsNzApIHdhcyBbMjU1LDAs
MCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg4Niw3NCkgd2FzIFsyNTUsMCwwLDk2XQorUEFTUzogcGl4
ZWwgYXQgKDg2LDc4KSB3YXMgWzI1MywwLDAsMTI4XQorUEFTUzogcGl4ZWwgYXQgKDg2LDgyKSB3
YXMgWzI1MywwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDg2LDg2KSB3YXMgWzI1MywwLDAsMjU0
XQorUEFTUzogcGl4ZWwgYXQgKDg2LDkwKSB3YXMgWzI1NCwwLDAsMjU1XQorUEFTUzogcGl4ZWwg
YXQgKDkwLDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBwaXhlbCBhdCAoOTAsNTQpIHdhcyBbMjU1
LDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDkwLDU4KSB3YXMgWzI1NSwwLDAsMl0KK1BBU1M6IHBp
eGVsIGF0ICg5MCw2Mikgd2FzIFsyNTUsMCwwLDE2XQorUEFTUzogcGl4ZWwgYXQgKDkwLDY2KSB3
YXMgWzI1NSwwLDAsMzJdCitQQVNTOiBwaXhlbCBhdCAoOTAsNzApIHdhcyBbMjU1LDAsMCw2NF0K
K1BBU1M6IHBpeGVsIGF0ICg5MCw3NCkgd2FzIFsyNTUsMCwwLDk2XQorUEFTUzogcGl4ZWwgYXQg
KDkwLDc4KSB3YXMgWzI1NSwwLDAsMTI4XQorUEFTUzogcGl4ZWwgYXQgKDkwLDgyKSB3YXMgWzI1
NSwwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDkwLDg2KSB3YXMgWzI1NSwwLDAsMjU0XQorUEFT
UzogcGl4ZWwgYXQgKDkwLDkwKSB3YXMgWzI1NSwwLDAsMjU1XQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTg2NTk2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEuaHRtbApAQCAtMCwwICsxLDk1IEBACitU
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IGdldEltYWdlRGF0YSB3b3JrcyBjb3JyZWN0bHkuCis8ZGl2
IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitjYW52YXMud2lkdGggPSAyMDA7
CitjYW52YXMuaGVpZ2h0ID0gMjAwOwordmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgi
MmQiKTsKKworZnVuY3Rpb24gbG9nKG1zZyl7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyLz4iOworfQorCitmdW5jdGlvbiBkYXRhVG9B
cnJheShkYXRhKSB7CisgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheShkYXRhLmxlbmd0aCkKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspCisgICAgICAgIHJlc3VsdFtp
XSA9IGRhdGFbaV07CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZ2V0UGl4ZWwo
Y3R4LCB4LCB5KSB7CisgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKHgseSwxLDEpOwor
ICAgIGlmICghZGF0YSkgLy8gZ2V0SW1hZ2VEYXRhIGZhaWxlZCwgd2hpY2ggc2hvdWxkIG5ldmVy
IGhhcHBlbgorICAgICAgICByZXR1cm4gWy0xLC0xLC0xLC0xXTsKKyAgICByZXR1cm4gZGF0YVRv
QXJyYXkoZGF0YS5kYXRhKTsKK30KKworZnVuY3Rpb24gcGl4ZWxTaG91bGRCZShjdHgsIHgsIHks
IGNvbG91cikgeworICAgIHZhciBjdHhDb2xvdXIgPSBnZXRQaXhlbChjdHgsIHgsIHkpOworICAg
IHZhciBjb3JyZWN0ID0gdHJ1ZTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKyAg
ICAgICAgaWYgKGNvbG91cltpXSAhPSBjdHhDb2xvdXJbaV0pIHsKKyAgICAgICAgICAgIGNvcnJl
Y3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgaWYgKGNvcnJl
Y3QpCisgICAgICAgIGxvZygiUEFTUzogcGl4ZWwgYXQgKCIrW3gseV0rIikgd2FzIFsiK2NvbG91
cisiXSIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlMOiBwaXhlbCBhdCAoIitbeCx5XSsi
KSB3YXMgWyIrY3R4Q29sb3VyKyJdLCBleHBlY3RlZCBbIitjb2xvdXIrIl0iKTsKK30KKworaWYg
KCFjb250ZXh0LnNldEZpbGxDb2xvcikKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvciA9IGZ1bmN0
aW9uKHIsZyxiLGEpIHsKKyAgICAgICAgdGhpcy5maWxsU3R5bGUgPSAicmdiYSgiK1tNYXRoLnJv
dW5kKHIqMjU1KSxNYXRoLnJvdW5kKGcqMjU1KSxNYXRoLnJvdW5kKGIqMjU1KSxNYXRoLnJvdW5k
KGEqMjU1KV0rIikiCisgICAgfQorCisvLyBDaGVjayB0aGF0IGdldEltYWdlRGF0YSBpcyByZXR1
cm4gdGhlIGRhdGEgZm9yIHRoZSByaWdodCBwb3J0aW9uIG9mIHRoZSBpbWFnZQorZm9yKHZhciB4
ID0gMDsgeCA8IDEwMDsgeCs9NCkgeworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKDAsIHgvOTYs
IDAsIDEpOworICAgIGNvbnRleHQuZmlsbFJlY3QoeCwwLDEsMSk7CisgICAgcGl4ZWxTaG91bGRC
ZShjb250ZXh0LCB4LCAwLCBbMCwgTWF0aC5yb3VuZCgyNTUqeC85NiksIDAsIDI1NV0pOworfQor
CisvLyBDaGVjayByZ2JhIG9yZGVyaW5nCitjb250ZXh0LmNsZWFyUmVjdCgwLDAsMTAwLDEwMCk7
Citjb250ZXh0LnNldEZpbGxDb2xvcigwLjI1LCAwLjUsIDAuNzUsIDEpOworY29udGV4dC5maWxs
UmVjdCg1LDUsMSwxKTsKK3BpeGVsU2hvdWxkQmUoY29udGV4dCwgNSwgNSwgW01hdGgucm91bmQo
MC4yNSoyNTUpLCBNYXRoLnJvdW5kKDAuNSoyNTUpLCBNYXRoLnJvdW5kKDAuNzUqMjU1KSwgMjU1
XSk7CisKKy8vIENoZWNrIHRoYXQgd2UgcmV0dXJuIHRyYW5zcGFyZW50IGJsYWNrIGZvciByZWdp
b25zIG91dHNpZGUgdGhlIGNhbnZhcyBwcm9wZXIKK2NvbnRleHQuZmlsbFN0eWxlID0gInJnYmEo
MjU1LDI1NSwyNTUsMjU1KSI7Citjb250ZXh0LmZpbGxSZWN0KDE5OCwgNSwgNCwgMSk7IC8vIGZp
bmFsIDIgcGl4ZWxzIGhvcml6b250YWxseSBzaG91bGQgYmUgY2xpcHBlZAordmFyIGNvbnRlbnQg
PSBkYXRhVG9BcnJheShjb250ZXh0LmdldEltYWdlRGF0YSgxOTgsIDUsIDQsIDEpLmRhdGEpOwor
dmFyIGV4cGVjdGVkID0gWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsCisgICAgICAg
ICAgICAgICAgMCwwLDAsMCwwLDAsMCwwXTsKK3ZhciBtYXRjaGVkID0gdHJ1ZTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICBpZiAoY29udGVudFtpXSAhPSBleHBlY3RlZFtpXSkg
eworICAgICAgICBtYXRjaGVkID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIH0KK2lmICht
YXRjaGVkKQorICAgIGxvZygiUEFTUzogQ29ycmVjdCBkYXRhIGZvciBjb250ZW50IG91dHNpZGUg
Y2FudmFzIGJvdW5kcyIpOworZWxzZQorICAgIGxvZygiRkFJTDogRGlkIG5vdCBnZXQgY29ycmVj
dCBkYXRhIGZvciBjb250ZW50IG91dHNpZGUgY2FudmFzIGJvdW5kczogIitjb250ZW50KTsKKwor
Ly8gRW5zdXJlIHJldHVybmVkIHZhbHVlcyBhcmUgbm90IHByZW11bHRpcGxpZWQKK3ZhciB2YWx1
ZXMgPSBbMCwxLDIsMTYsMzIsNjQsOTYsMTI4LDE5MiwyNTQsMjU1XTsKKworLy8gdGhpcyBmdW5j
dGlvbiBzaW1wbHkgYWNjb3VudHMgZm9yIHRydW5jYXRpb24gZHVlIHRvIHByZW11bHRpcGxpY2F0
aW9uIGluIHRoZSBjYW52YXMgaW1wbGVtZW50YXRpb24KK2Z1bmN0aW9uIHByZW11bHQodmFsdWUs
IGFscGhhKSB7CisgICAgcmV0dXJuIGFscGhhID8gTWF0aC5mbG9vcihNYXRoLnJvdW5kKHZhbHVl
KmFscGhhLzI1NSkqMjU1L2FscGhhKSA6IDA7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgdmFs
dWVzLmxlbmd0aDsgaSsrKSB7CisgICAgZm9yICh2YXIgYSA9IDA7IGEgPCB2YWx1ZXMubGVuZ3Ro
OyBhKyspIHsKKyAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmdiYSgiICsgW3ZhbHVlc1tp
XSwgMCwgMCwgdmFsdWVzW2FdLzI1NV0gKyIpIjsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCg1
MCtpKjQsNTArYSo0LDIsMik7CisgICAgICAgIHBpeGVsU2hvdWxkQmUoY29udGV4dCwgNTAraSo0
LCA1MCthKjQsIFtwcmVtdWx0KHZhbHVlc1tpXSwgdmFsdWVzW2FdKSwgMCwgMCwgdmFsdWVzW2Fd
XSk7CisgICAgfQorfQorCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNkOThlMS4uMjZhOGIxZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBA
QAorMjAwOC0wMi0yMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgQ2FudmFzLmdl
dEltYWdlRGF0YSBhbmQgQ2FudmFzLmNyZWF0ZUltYWdlRGF0YQorICAgICAgICAKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGFsbCB0aGUgcGl4ZWwgcmVhZGluZyBwb3J0aW9u
cworICAgICAgICBvZiB0aGUgSFRNTDUgQ2FudmFzIHNwZWMuICBUaGVyZSBhcmUgdHdvIG5ldyB0
eXBlcyBJbWFnZURhdGEKKyAgICAgICAgYW5kIENhbnZhc1BpeGVsQXJyYXkgd2hpY2ggYXJlIHVz
ZWQgdG8gcHJvdmlkZSB0aGUgSFRNTDUKKyAgICAgICAgSW1hZ2VEYXRhIG9iamVjdCwgYW5kIHRo
ZSByZXF1aXJlZCBzZW1hbnRpY3MgZm9yIGFzc2lnbm1lbnQKKyAgICAgICAgdG8gdGhlIEltYWdl
RGF0YSBkYXRhIGFycmF5LgorICAgICAgICAKKyAgICAgICAgV2Ugb25seSBpbXBsZW1lbnQgdGhl
IENHIHZlcnNpb24gb2YgSW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YSwKKyAgICAgICAgYnV0IHRo
ZSBsb2dpYyBpcyBudWxsIHNhZmUsIHNvIHRoaXMgd2lsbCBub3QgaW50cm9kdWNlIGFueQorICAg
ICAgICBjcmFzaGVzIGludG8gb3RoZXIgcGxhdGZvcm1zLCB1bmZvcnR1bmF0ZWx5IGl0IHdpbGwg
cmVzdWx0IGluCisgICAgICAgIEpTIE9iamVjdCBkZXRlY3Rpb24gImx5aW5nIiBvbiBub24tQ0cg
cGxhdGZvcm1zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRh
LWJlaGF2aW91ci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1h
Z2VEYXRhLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNQaXhlbEFycmF5OjppbmRleEdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Nh
bnZhc1BpeGVsQXJyYXk6OmluZGV4U2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogaHRtbC9DYW52YXNQaXhlbEFycmF5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQaXhlbEFycmF5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGl4ZWxBcnJheTo6Q2FudmFzUGl4ZWxBcnJheSk6
CisgICAgICAgICogaHRtbC9DYW52YXNQaXhlbEFycmF5Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUGl4ZWxBcnJheTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQ
aXhlbEFycmF5OjpsZW5ndGgpOgorICAgICAgICAqIGh0bWwvQ2FudmFzUGl4ZWxBcnJheS5pZGw6
IEFkZGVkLgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVtcHR5SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAg
KiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNh
bFRvRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OkltYWdlRGF0YSk6Cisg
ICAgICAgICogaHRtbC9JbWFnZURhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURhdGE6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6aGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6ZGF0YSk6CisgICAgICAgICogaHRtbC9JbWFnZURh
dGEuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHA6CisKIDIwMDgtMDItMjEgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggYmQyOTE1MS4uNThmYzU3OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzI3LDYgKzMyNyw3IEBAIGFsbCA6IFwKICAgICBKU0NTU1ZhbHVlTGlzdC5oIFwKICAgICBK
U0NhbnZhc0dyYWRpZW50LmggXAogICAgIEpTQ2FudmFzUGF0dGVybi5oIFwKKyAgICBKU0NhbnZh
c1BpeGVsQXJyYXkuaCBcCiAgICAgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCiAgICAg
SlNDaGFyYWN0ZXJEYXRhLmggXAogICAgIEpTQ29tbWVudC5oIFwKQEAgLTQxNCw2ICs0MTUsNyBA
QCBhbGwgOiBcCiAgICAgSlNIVE1MVUxpc3RFbGVtZW50LmggXAogICAgIEpTSFRNTFZpZGVvRWxl
bWVudC5oIFwKICAgICBKU0hpc3RvcnkuaCBcCisgICAgSlNJbWFnZURhdGEuaCBcCiAgICAgSlNL
ZXlib2FyZEV2ZW50LmggXAogICAgIEpTTG9jYXRpb24ubHV0LmggXAogICAgIEpTTWVkaWFFcnJv
ci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTNl
NWZmMy4uNmEwNTdmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3MTAsNiArMTcxMCwxNyBAQAogCQlBNzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0UgLyog
RHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMu
bW0gKi87IH07CiAJCUE3MzUyQzE5MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1MkMx
NzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovOyB9OwogCQlBNzM1MkMx
QTBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzUyQzE4MEIxQkI4OUQwMEE5ODZEMCAvKiBS
ZW5kZXJTVkdCbG9jay5oICovOyB9OworCQlBNzY2RjM1MzBENkJERTM1MDBBQkREQjMgLyogSlND
YW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NjZGMzUyMEQ2QkRFMzUwMEFCRERCMyAvKiBKU0NhbnZhc1BpeGVs
QXJyYXlDdXN0b20uY3BwICovOyB9OworCQlBNzc5NzkxNjBENkI5RDBDMDAzODUxQjkgLyogQ2Fu
dmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzc5NzkxMDBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAg
Ki87IH07CisJCUE3Nzk3OTE3MEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxMTBE
NkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oICovOyB9OworCQlBNzc5NzkxODBE
NkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTEyMEQ2QjlEMEMwMDM4NTFCOSAv
KiBDYW52YXNQaXhlbEFycmF5LmlkbCAqLzsgfTsKKwkJQTc3OTc5MTkwRDZCOUQwQzAwMzg1MUI5
IC8qIEltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCAqLzsgfTsK
KwkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5
IC8qIEltYWdlRGF0YS5oICovOyB9OworCQlBNzc5NzkxQjBENkI5RDBDMDAzODUxQjkgLyogSW1h
Z2VEYXRhLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwgKi87IH07CisJCUE3
Nzk3OTI2MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MjIwRDZCOUU2NDAw
Mzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5jcHAgKi87IH07CisJCUE3Nzk3OTI3MEQ2QjlF
NjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTIzMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0Nh
bnZhc1BpeGVsQXJyYXkuaCAqLzsgfTsKKwkJQTc3OTc5MjgwRDZCOUU2NDAwMzg1MUI5IC8qIEpT
SW1hZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Nzk3OTI0MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAgKi87IH07CisJ
CUE3Nzk3OTI5MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MjUwRDZCOUU2NDAwMzg1MUI5
IC8qIEpTSW1hZ2VEYXRhLmggKi87IH07CiAJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBD
bGlwYm9hcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgKi87IH07CiAJCUE3
OTU0NjNFMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAv
KiBEcmFnRGF0YU1hYy5tbSAqLzsgfTsKIAkJQTc5NTQ2NDMwQjVDNENCNDAwN0I0MzhGIC8qIERy
YWdEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3OTU0NjQyMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgKi87IH07CkBAIC01OTA4
LDYgKzU5MTksMTcgQEAKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9s
bGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0Nv
bnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzUyQzE3MEIx
QkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzM1MkMxODBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NjZGMzUyMEQ2QkRFMzUwMEFCRERCMyAvKiBKU0Nh
bnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc3OTc5MTAwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJheS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTExMEQ2QjlEMEMwMDM4NTFC
OSAvKiBDYW52YXNQaXhlbEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhbnZhc1BpeGVsQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3OTc5
MTIwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IENhbnZhc1BpeGVsQXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTE1MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEltYWdlRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3Nzk3OTIyMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVs
QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNQ
aXhlbEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3OTc5MjMwRDZC
OUU2NDAwMzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BpeGVsQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc3OTc5MjQwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW1hZ2VEYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3OTc5MjUwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1h
Z2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW1hZ2VEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAv
KiBDbGlwYm9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
aXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OTU0NjNEMEI1QzRD
ODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEcmFnRGF0YU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTc5NTQ2NDIwQjVDNENCNDAwN0I0MzhGIC8qIERyYWdEYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYWdEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk3NzgsNiArOTgwMCwxMiBAQAogCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1
RDEgLyogaHRtbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQTc3OTc5MTAwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICovLAor
CQkJCUE3Nzk3OTExMEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmggKi8sCisJ
CQkJQTc3OTc5MTIwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuaWRsICovLAor
CQkJCUE3Nzk3OTEzMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAorCQkJCUE3
Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLywKKwkJCQlBNzc5NzkxNTBE
NkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLywKIAkJCQk5M0VFQzFGMDA5QzI4Nzc3
MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuY3BwICovLAogCQkJCTkzRUVDMUYxMDlDMjg3Nzcw
MEM1MTVEMSAvKiBDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTkzMENBQjg4MDlDNDlFRkEwMDIy
OUMwNCAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8sCkBAIC0xMDAzMSw2ICsxMDA1OSwxMCBAQAog
CQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTc3OTc5MjIwRDZCOUU2NDAwMzg1MUI5IC8qIEpT
Q2FudmFzUGl4ZWxBcnJheS5jcHAgKi8sCisJCQkJQTc3OTc5MjMwRDZCOUU2NDAwMzg1MUI5IC8q
IEpTQ2FudmFzUGl4ZWxBcnJheS5oICovLAorCQkJCUE3Nzk3OTI0MEQ2QjlFNjQwMDM4NTFCOSAv
KiBKU0ltYWdlRGF0YS5jcHAgKi8sCisJCQkJQTc3OTc5MjUwRDZCOUU2NDAwMzg1MUI5IC8qIEpT
SW1hZ2VEYXRhLmggKi8sCiAJCQkJNjVERjMyMzMwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFz
R3JhZGllbnQuY3BwICovLAogCQkJCTY1REYzMjM0MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZh
c0dyYWRpZW50LmggKi8sCiAJCQkJNjVERjMyMzUwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFz
UGF0dGVybi5jcHAgKi8sCkBAIC0xMTUzMiw2ICsxMTU2NCw3IEBACiAJCUJDNEVERUY3MEMwOEY0
MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCUE3NjZGMzUyMEQ2QkRFMzUwMEFCRERCMyAvKiBKU0NhbnZhc1BpeGVsQXJy
YXlDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJD
dXN0b20uY3BwICovLAogCQkJCTFBOUVGNDU2MEExQjk1N0QwMDMzMkI2MyAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJQkM0NkMxRUQwQzBEREJERjAwMjBD
RkMzIC8qIEpTQ1NTUnVsZUN1c3RvbS5jcHAgKi8sCkBAIC0xNDI0OSw2ICsxNDI4MiwxMCBAQAog
CQkJCUJDQzU3MzM1MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0M1NzMzODBENjk1QkQ3MDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVu
dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NzMzQTBENjk1QkYxMDA2RUY1MTcg
LyogRE9NVGV4dFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Nzk3OTE3MEQ2QjlEMEMw
MDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzc5Nzkx
QTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzc5
NzkyNzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMTQzNjEsNiArMTQzOTgsOCBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5
MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFF
N0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJQTc3OTc5MTgwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJy
YXkuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlBNzc5NzkxQjBENkI5RDBDMDAzODUxQjkgLyog
SW1hZ2VEYXRhLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTg0Miw2ICsxNTg4MSwxMSBAQAog
CQkJCUMwMjk0REYzMEQ1QTZGRDgwMENDN0Q2QiAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzN0Y4MThGRTBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVS
TFJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNTczMzYwRDY5NUJCRTAwNkVGNTE3
IC8qIERPTVByb2dyZXNzRXZlbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNzc5NzkxNjBENkI5
RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
Nzc5NzkxOTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUE3Nzk3OTI2MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTc3OTc5MjgwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NjZGMzUzMEQ2QkRFMzUwMEFCRERCMyAvKiBKU0Nh
bnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWIxNzRmNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcApAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDYW52YXNQaXhlbEFycmF5LmgiCisKKyNp
bmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBLSlM7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSogSlNDYW52YXNQaXhlbEFycmF5OjppbmRleEdl
dHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CisgICAgdW5zaWduZWQgaW5kZXggPSBpZGVudGlmZXIudG9BcnJheUluZGV4KCZyZXN1bHQpOwor
ICAgIENhbnZhc1BpeGVsQXJyYXkqIGFycmF5ID0gdG9DYW52YXNQaXhlbEFycmF5KHRoaXNPYmop
OworICAgIGlmICghcmVzdWx0IHx8ICFhcnJheSB8fCBpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBqc051bWJlcihhcnJh
eS0+ZGF0YSgpW2luZGV4XSk7Cit9CisKK3ZvaWQgSlNDYW52YXNQaXhlbEFycmF5OjppbmRleFNl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKiB2YWx1ZSwgaW50
KQoreworICAgIGlmIChpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm47
CisgICAgZG91YmxlIHB2YWx1ZSA9IHZhbHVlLT50b051bWJlcihleGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIShwdmFsdWUgPiAw
KSkKKyAgICAgICAgcHZhbHVlID0gMDsKKyAgICBlbHNlIGlmIChwdmFsdWUgPiAyNTUpCisgICAg
ICAgIHB2YWx1ZSA9IDI1NTsKKyAgICBtX2ltcGwtPmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihyb3VuZChwdmFsdWUpKTsgICAgCit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXggNjgzMjhmNC4uNGE2MzkwZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKQEAgLTMzMyw0ICszMzMsOSBAQCBKU1ZhbHVlKiBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Y3JlYXRlUGF0dGVybihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmCiAgICAg
cmV0dXJuIDA7CiB9CiAKK0pTVmFsdWUqIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwdXRJ
bWFnZURhdGEoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0M2UwMmE5Li4xMjI5Nzgw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMz
NCwxMCArMzM0LDE4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgRGVzdHJ1Y3RvcgogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB+JGNsYXNzTmFtZSgpO1xuIikgaWYg
KCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2VOYW1lIGVxICJEb2N1bWVudCIpOwogCisgICAgbXkg
JGhhc0dldHRlciA9ICRudW1BdHRyaWJ1dGVzID4gMCAKKyAgICAgICAgICAgICAgICAgfHwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9IAorICAg
ICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRl
eEdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0KKyAgICAgICAgICAgICAgICAgfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0KKyAg
ICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFt
ZUdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ikhhc092ZXJyaWRpbmdOYW1lR2V0dGVyIn07CisKICAgICAjIEdldHRlcnMKLSAgICBp
ZiAoJG51bUF0dHJpYnV0ZXMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkdlbmVyYXRlQ29uc3RydWN0b3IifSkgeworICAgIGlmICgkaGFzR2V0dGVyKSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6UHJvcGVydHlT
bG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpTVmFs
dWUqIGdldFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0O1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiBnZXRW
YWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDtcbiIpIGlmICRu
dW1BdHRyaWJ1dGVzID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5l
cmF0ZUNvbnN0cnVjdG9yIn07CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9v
bCBjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Oklk
ZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In07CiAgICAgfQogCkBAIC0z
NDksOSArMzU3LDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgcHV0KEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIgPSBL
SlM6Ok5vbmUpO1xuIikgaWYgKCRoYXNSZWFkV3JpdGVQcm9wZXJ0aWVzIHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pOwotICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwg
aW50LCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0cik7XG4iKSBpZiAkaGFzUmVhZFdyaXRlUHJvcGVy
dGllczsKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgY3VzdG9tUHV0KEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0
dHIpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVu
Y3Rpb24ifTsKKyAgICBteSAkaGFzU2V0dGVyID0gJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMKKyAg
ICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
UHV0RnVuY3Rpb24ifQorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleFNldHRlciJ9OworCisgICAgIyBHZXR0ZXJzCisgICAg
aWYgKCRoYXNTZXR0ZXIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0
dWFsIHZvaWQgcHV0KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pT
OjpKU1ZhbHVlKiwgaW50IGF0dHIgPSBLSlM6Ok5vbmUpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwg
aW50LCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0cik7XG4iKSBpZiAkaGFzUmVhZFdyaXRlUHJvcGVy
dGllczsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGN1c3RvbVB1dChL
SlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6SlNWYWx1ZSosIGlu
dCBhdHRyKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1
dEZ1bmN0aW9uIn07CisgICAgfQogCiAgICAgIyBDbGFzcyBpbmZvCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2aXJ0dWFsIGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmaW5mbzsgfVxuIik7CkBAIC0zNzMsNyArMzg4LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImKTtcbiIp
IGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0ZVByb3BlcnR5
In07CiAKICAgICAjIEN1c3RvbSBnZXRQcm9wZXJ0eU5hbWVzIGZ1bmN0aW9uCi0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhLSlM6OkV4
ZWNTdGF0ZSosIEtKUzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlmICgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSk7CisgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhLSlM6OkV4ZWNT
dGF0ZSosIEtKUzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KTsKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIGJvb2wgY3VzdG9tR2V0UHJvcGVydHlOYW1lcyhLSlM6OkV4ZWNTdGF0
ZSosIEtKUzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifTsKIAogICAgICMgQ29uc3RydWN0
b3Igb2JqZWN0IGdldHRlcgpAQCAtNDUwLDEwICs0NjUsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAgICAgfQogICAgIH0KIAotICAgICMgSW5kZXggc2V0dGVyCi0gICAgaWYgKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn0pIHsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGluZGV4U2V0dGVyKEtKUzo6RXhlY1N0
YXRlKiwgdW5zaWduZWQgaW5kZXgsIEtKUzo6SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpOwotICAg
IH0KIAogICAgIGlmICghJGhhc1BhcmVudCkgewogICAgICAgICBpZiAoJHBvZFR5cGUpIHsKQEAg
LTQ3OCwxMCArNDg5LDE0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgICMgSW5k
ZXggZ2V0dGVyCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0lu
ZGV4R2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4i
KTsKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0
ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdl
dHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEtKUzo6
SlNWYWx1ZSogaW5kZXhHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTT2JqZWN0KiwgY29u
c3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAg
IH0KKworICAgICMgSW5kZXggc2V0dGVyCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2b2lkIGluZGV4U2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgdW5zaWduZWQg
aW5kZXgsIEtKUzo6SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpOworICAgIH0KICAgICAjIE5hbWUg
Z2V0dGVyCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVH
ZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNPdmVycmlkaW5n
TmFtZUdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2YXRlOlxu
Iik7CkBAIC01OTIsNyArNjA3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBw
dXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbmNsdWRlIFwiJGNsYXNzTmFtZS5oXCJcblxuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW5jbHVkZSA8d3RmL0dldFB0ci5oPlxu
XG4iKTsKIAotICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2luY2x1ZGUgPGtqcy9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPlxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzSW5kZXhHZXR0ZXIifTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbmNsdWRl
IDxranMvUHJvcGVydHlOYW1lQXJyYXkuaD5cbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIifTsKIAogICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgk
aW50ZXJmYWNlTmFtZSk7CiAKQEAgLTgyOCw4ICs4NDMsMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4gICAgU2NyaXB0SW50ZXJw
cmV0ZXI6OmZvcmdldERPTU9iamVjdChzdGF0aWNfY2FzdDwke2ltcGxDbGFzc05hbWV9Kj4oaW1w
bCgpKSk7XG59XG5cbiIpOwogICAgIH0KIAorICAgIG15ICRoYXNHZXR0ZXIgPSAkbnVtQXR0cmli
dXRlcyA+IDAgCisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkdlbmVyYXRlQ29uc3RydWN0b3IifSAKKyAgICAgICAgICAgICAgICAgfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifQorICAgICAgICAgICAg
ICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdl
dHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifQorICAgICAgICAgICAg
ICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNPdmVycmlkaW5nTmFt
ZUdldHRlciJ9OworCiAgICAgIyBBdHRyaWJ1dGVzCi0gICAgaWYgKCRudW1BdHRyaWJ1dGVzIG5l
IDApIHsKKyAgICBpZiAoJGhhc0dldHRlcikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
ImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogCkBAIC04NTEsNyArODc0LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICYkaGFzTmFtZUdldHRlckdl
bmVyYXRpb24oKTsKICAgICAgICAgfQogCi0gICAgICAgIG15ICRyZXF1aXJlc01hbnVhbExvb2t1
cCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9OworICAgICAg
ICBteSAkcmVxdWlyZXNNYW51YWxMb29rdXAgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ikhhc05hbWVHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXND
dXN0b21JbmRleEdldHRlciJ9OwogICAgICAgICBpZiAoJHJlcXVpcmVzTWFudWFsTG9va3VwKSB7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5ID0gTG9va3VwOjpmaW5kRW50cnkoJiR7Y2xhc3NOYW1lfVRhYmxlLCBwcm9wZXJ0eU5hbWUp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZW50cnkpIHtc
biIpOwpAQCAtODYwLDcgKzg4Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9
KSB7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRl
eEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUlu
ZGV4R2V0dGVyIn0pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wg
b2s7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuc2lnbmVkIGlu
ZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvaywgZmFsc2UpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAob2sgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwk
aW1wbENsYXNzTmFtZSo+KGltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKQEAgLTg3OCwxMDEgKzkw
MSwxMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoJG51
bUF0dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PCRjbGFzc05hbWUsIEJhc2U+KGV4ZWMsICYke2NsYXNz
TmFtZX1UYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAg
IH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtjbGFzc05hbWV9OjpnZXRWYWx1ZVByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdFxue1xuIik7CisgICAgICAgIGlmICgkbnVt
QXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1
ZSogJHtjbGFzc05hbWV9OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRv
a2VuKSBjb25zdFxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwog
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN3aXRjaCAodG9rZW4pIHtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3dpdGNoICh0b2tlbikge1xuIik7
CiAKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0cmlidXRl
c30pIHsKLSAgICAgICAgICAgIG15ICRnZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRv
ci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOworICAgICAgICAgICAg
Zm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAg
ICAgICAgICAgICBteSAkZ2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xj
Zmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKIAotICAgICAgICAgICAgbXkgJGlt
cGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gPSAiIjsKLSAgICAgICAgICAgIGlmICghJHBv
ZFR5cGUgYW5kICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxDbGFzc05h
bWUpIG9yICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8pKSB7Ci0gICAgICAgICAgICAg
ICAgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gPSAkaW1wbENsYXNzTmFtZTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBteSAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29u
dmVyc2lvbiA9ICIiOworICAgICAgICAgICAgICAgIGlmICghJHBvZFR5cGUgYW5kICgkY29kZUdl
bmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxDbGFzc05hbWUpIG9yICRhdHRyaWJ1dGUt
PnR5cGUgIX4gL15yZWFkb25seS8pKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsQ2xhc3NO
YW1lRm9yVmFsdWVDb252ZXJzaW9uID0gJGltcGxDbGFzc05hbWU7CisgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpCi0gICAgICAg
ICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQv
ID8gIkNvbnN0cnVjdG9yIiA6ICIiKQotICAgICAgICAgICAgICAgIC4gIkF0dHJOdW06IHtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1
Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKQorICAgICAgICAgICAgICAgICAgICAuICJBdHRy
TnVtOiB7XG4iKTsKIAotICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAKLSAgICAgICAgICAgICAgICAhJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNl
Y3VyaXR5In0gJiYKLSAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5T25HZXQifSkgewotICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIWFsbG93c0FjY2Vz
c0Zyb20oZXhlYykpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9t
YWluU2VjdXJpdHkifSAmJiAKKyAgICAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9ICYm
CisgICAgICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHlPbkdldCJ9KSB7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIWFsbG93c0FjY2Vzc0Zy
b20oZXhlYykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiAkZ2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMpO1xuIik7Ci0gICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja05vZGVTZWN1cml0eSJ9KSB7Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3sia2pzX2RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUq
PihpbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPiRnZXR0ZXJGdW5jdGlvbk5h
bWUoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGlt
cGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kZ2V0
dGVyRnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7Ci0gICAgICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
aGVja0ZyYW1lU2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRv
Y3VtZW50LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5o
In0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1w
bENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBj
aGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSA/ICIgLiBOYXRp
dmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAgMCwgJGltcGxDbGFzc05hbWUsICRp
bXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1l
KCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKLSAgICAgICAgICAg
ICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgJGNvbnN0cnVjdG9y
VHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldENvbnN0
cnVjdG9yKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lmICghQHskYXR0cmlidXRlLT5n
ZXR0ZXJFeGNlcHRpb25zfSkgewotICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJHBvZFR5cGUgaW1w
KCppbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxv
YXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgotICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1Zh
bHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wIikg
LiAiO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJGdldHRlckZ1bmN0aW9uTmFtZShl
eGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrTm9kZVNlY3VyaXR5In0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9
IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGNoZWNrTm9kZVNlY3Vy
aXR5KGV4ZWMsIGltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpKSA/ICIgLiBOYXRpdmVUb0pTVmFs
dWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05h
bWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIpIC4gIiA6
IGpzVW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0ZyYW1lU2VjdXJpdHkifSkg
eworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJEb2N1bWVudC5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFt
ZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2hlY2tO
b2RlU2VjdXJpdHkoZXhlYywgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENs
YXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpIikg
LiAiIDoganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgeworICAgICAgICAgICAg
ICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRjb25z
dHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4g
Ijo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgh
QHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoJHBvZFR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NW
R051bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
IDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGdldHRlckZ1bmN0aW9uTmFt
ZSgpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGdldHRlckZ1bmN0aW9uTmFtZSgpIikg
LiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4o
aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkY29kZUdl
bmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNv
bnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
UmVmUHRyPCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG9iai5n
ZXQoKSwgaW1wKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
ICRqc1R5cGU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nh
c3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIG15
ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFs
dWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05h
bWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtcbiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG9iai5n
ZXQoKSwgaW1wKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAoJHBvZFR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3Vs
dCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENs
YXNzTmFtZSwgIiIsICJpbXAuJGdldHRlckZ1bmN0aW9uTmFtZShlYykiKSAuICI7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJGpzVHlwZTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBp
bXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUq
IHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAk
aW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRn
ZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwog
Ci0gICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1
ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAs
ICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcC4kZ2V0dGVyRnVuY3Rpb25OYW1lKGVjKSIpIC4gIjtc
biIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8
JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVU
b0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxD
bGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoZWMp
IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIpOworICAgICAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlQ29uc3RydWN0
b3IifSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgQ29u
c3RydWN0b3JBdHRyTnVtOlxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBnZXRDb25zdHJ1Y3RvcihleGVjKTtcbiIpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgIH0K
IAotICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVD
b25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNl
IENvbnN0cnVjdG9yQXR0ck51bTpcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBnZXRDb25zdHJ1Y3RvcihleGVjKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gMDtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAwO1xufVxuXG4i
KTsKLQogICAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgYW55IHdyaXRhYmxlIGF0dHJpYnV0ZXMK
ICAgICAgICAgbXkgJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMgPSAwOwogICAgICAgICBmb3JlYWNo
IG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAg
JGhhc1JlYWRXcml0ZVByb3BlcnRpZXMgPSAxIGlmICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFk
b25seS87CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCRoYXNSZWFkV3JpdGVQcm9wZXJ0aWVzIHx8
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0pIHsK
KworICAgICAgICBteSAkaGFzU2V0dGVyID0gJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMKKyAgICAg
ICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bVB1dEZ1bmN0aW9uIn0KKyAgICAgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn07CisKKyAgICAgICAgaWYgKCRo
YXNTZXR0ZXIpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNz
TmFtZX06OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn0pIHsKQEAgLTk4Nyw2ICsxMDE5LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoY3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIp
KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
bjtcbiIpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoJGhhc1JlYWRXcml0ZVBy
b3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBsb29r
dXBQdXQ8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwg
JiR7Y2xhc3NOYW1lfVRhYmxlLCB0aGlzKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTEwNjIsMTQgKzEwOTUsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzSW5kZXhHZXR0ZXIifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcylcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tR2V0UHJvcGVydHlOYW1lcyJ9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoY3VzdG9tR2V0UHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5h
bWVzKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
bjtcbiIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KSB7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0pIHsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDwk
e2ltcGxDbGFzc05hbWV9Kj4oaW1wbCgpKS0+bGVuZ3RoKCk7ICsraSlcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZp
ZXI6OmZyb20oaSkpO1xuIik7CiAgICAgICAgIH0KQEAgLTE3MzUsNyArMTc2OCw3IEBAIHN1YiBX
cml0ZURhdGEKICAgICAgICAgY2xvc2UoJElNUEwpOwogICAgICAgICB1bmRlZigkSU1QTCk7CiAK
LSAgICAgICAgQGltcGxIZWFkZXJDb250ZW50ID0gKCk7CisgICAgICAgIEBpbXBsQ29udGVudEhl
YWRlciA9ICgpOwogICAgICAgICBAaW1wbENvbnRlbnQgPSAoKTsKICAgICAgICAgJWltcGxJbmNs
dWRlcyA9ICgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFy
cmF5LmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmY4YWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBDYW52YXNQaXhlbEFycmF5Ojpj
cmVhdGUodW5zaWduZWQgc2l6ZSkKK3sKKyAgICByZXR1cm4gbmV3IENhbnZhc1BpeGVsQXJyYXko
c2l6ZSk7Cit9CisKK0NhbnZhc1BpeGVsQXJyYXk6OkNhbnZhc1BpeGVsQXJyYXkodW5zaWduZWQg
c2l6ZSkKKyAgICA6IFJlZkNvdW50ZWQ8Q2FudmFzUGl4ZWxBcnJheT4oMCkKKyAgICAsIG1fZGF0
YShzaXplKQoreworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxB
cnJheS5oIGIvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zM2Y3YTcyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9o
dG1sL0NhbnZhc1BpeGVsQXJyYXkuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbnZhc1Bp
eGVsQXJyYXlfaAorI2RlZmluZSBDYW52YXNQaXhlbEFycmF5X2gKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBDYW52YXNQ
aXhlbEFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzUGl4ZWxBcnJheT4geworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzUGl4ZWxBcnJheT4gY3JlYXRl
KHVuc2lnbmVkIHNpemUpOworICAgICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGRhdGEoKSB7
IHJldHVybiBtX2RhdGE7IH0KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnNpemUoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FudmFzUGl4ZWxB
cnJheSh1bnNpZ25lZCBzaXplKTsKKyAgICAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0
YTsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2Fu
dmFzUGl4ZWxBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJh
eS5pZGwgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzI4ZmZmOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aHRtbC9DYW52YXNQaXhlbEFycmF5LmlkbApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBIYXNDdXN0b21JbmRleEdldHRlciwKKyAgICAg
ICAgSGFzQ3VzdG9tSW5kZXhTZXR0ZXIKKyAgICBdIENhbnZhc1BpeGVsQXJyYXkgeworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAzMjdhNDNlLi5kYWIzODc5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQu
aCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCisjaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJh
eS5oIgogI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC00MSw2ICs0Miw4IEBACiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlckhU
TUxDYW52YXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTE2Miw0ICsxMTY1LDQxIEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBz
dGF0ZSgpLm1fYXBwbGllZEZpbGxQYXR0ZXJuID0gdHJ1ZTsKIH0KIAorc3RhdGljIFBhc3NSZWZQ
dHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQor
eworICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBkYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICBtZW1zZXQoZGF0YS0+ZGF0YSgpLT5kYXRh
KCkuZGF0YSgpLCAwLCBkYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworUGFzc1JlZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3Jl
YXRlSW1hZ2VEYXRhKGZsb2F0IHN3LCBmbG9hdCBzaCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUg
dW5zY2FsZWRTaXplKHN3LCBzaCk7CisgICAgSW50U2l6ZSBzY2FsZWRTaXplOworICAgIGlmICht
X2NhbnZhcykKKyAgICAgICAgc2NhbGVkU2l6ZSA9IG1fY2FudmFzLT5jb252ZXJ0TG9naWNhbFRv
RGV2aWNlKHVuc2NhbGVkU2l6ZSk7CisgICAgZWxzZQorICAgICAgICBzY2FsZWRTaXplID0gSW50
U2l6ZShjZWlsZihzdyksIGNlaWxmKHNoKSk7CisgICAgaWYgKHNjYWxlZFNpemUud2lkdGgoKSA8
IDEpCisgICAgICAgIHNjYWxlZFNpemUuc2V0V2lkdGgoMSk7CisgICAgaWYgKHNjYWxlZFNpemUu
aGVpZ2h0KCkgPCAxKQorICAgICAgICBzY2FsZWRTaXplLnNldEhlaWdodCgxKTsKKyAgICAKKyAg
ICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoc2NhbGVkU2l6ZSk7Cit9CisKK1Bhc3NSZWZQ
dHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0YShmbG9h
dCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCkgY29uc3QKK3sKKyAgICBGbG9hdFJl
Y3QgdW5zY2FsZWRSZWN0KHN4LCBzeSwgc3csIHNoKTsKKyAgICBJbnRSZWN0IHNjYWxlZFJlY3Qg
PSBtX2NhbnZhcyA/IG1fY2FudmFzLT5jb252ZXJ0TG9naWNhbFRvRGV2aWNlKHVuc2NhbGVkUmVj
dCkgOiBlbmNsb3NpbmdJbnRSZWN0KHVuc2NhbGVkUmVjdCk7CisgICAgaWYgKHNjYWxlZFJlY3Qu
d2lkdGgoKSA8IDEpCisgICAgICAgIHNjYWxlZFJlY3Quc2V0V2lkdGgoMSk7CisgICAgaWYgKHNj
YWxlZFJlY3QuaGVpZ2h0KCkgPCAxKQorICAgICAgICBzY2FsZWRSZWN0LnNldEhlaWdodCgxKTsK
KyAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gbV9jYW52YXMgPyBtX2NhbnZhcy0+YnVmZmVyKCkg
OiAwOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURh
dGEoc2NhbGVkUmVjdC5zaXplKCkpOworICAgIHJldHVybiBidWZmZXItPmdldEltYWdlRGF0YShz
Y2FsZWRSZWN0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvV2ViQ29yZS9odG1sL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDMwZjdhNTMuLmY0Y2M5MzggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKICAgICBjbGFzcyBIVE1MQ2Fu
dmFzRWxlbWVudDsKICAgICBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OworICAgIGNsYXNzIEltYWdl
RGF0YTsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTE2Miw3ICsxNjMs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRp
ZW50PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBm
bG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJl
cGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFz
UGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQorICAgICAgICAKKyAgICAgICAgUGFz
c1JlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUltYWdlRGF0YShmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KSBjb25zdDsKKyAgICAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShm
bG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCkgY29uc3Q7CisgICAgICAgIAog
ICAgICAgICB2b2lkIHJlc2V0KCk7CiAgICAgICAgIHZvaWQgZGV0YWNoQ2FudmFzKCkgeyBtX2Nh
bnZhcyA9IDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApp
bmRleCAzZDU2NmQ0Li5kNGVhNmUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmlkbApAQCAtMTAxLDcgKzEwMSwxMiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIFtD
dXN0b21dIHZvaWQgY3JlYXRlUGF0dGVybigvKiAyICovKTsKICAgICAgICAgCiAgICAgICAgIGF0
dHJpYnV0ZSBbQ3VzdG9tXSBjdXN0b20gc3Ryb2tlU3R5bGU7Ci0gICAgICAgIGF0dHJpYnV0ZSBb
Q3VzdG9tXSBjdXN0b20gZmlsbFN0eWxlOyAgICAgICAgCisgICAgICAgIGF0dHJpYnV0ZSBbQ3Vz
dG9tXSBjdXN0b20gZmlsbFN0eWxlOworICAgICAgICAKKyAgICAgICAgLy8gcGl4ZWwgbWFuaXB1
bGF0aW9uCisgICAgICAgIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoaW4gZmxvYXQgc3csIGlu
IGZsb2F0IHNoKTsKKyAgICAgICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0YShpbiBmbG9hdCBzeCwg
aW4gZmxvYXQgc3ksIGluIGZsb2F0IHN3LCBpbiBmbG9hdCBzaCk7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIEltYWdlRGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4
LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBkaXJ0eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxv
YXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGlydHlIZWlnaHRdICovKTsKICAgICB9OwogCiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBkNzExZmJmLi40NTg5NWM3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGNvbnN0IGlu
dCBkZWZhdWx0SGVpZ2h0ID0gMTUwOwogLy8gRmlyZWZveCBsaW1pdHMgd2lkdGgvaGVpZ2h0IHRv
IDMyNzY3IHBpeGVscywgYnV0IHNsb3dzIGRvd24gZHJhbWF0aWNhbGx5IGJlZm9yZSBpdCAKIC8v
IHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMg
bGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKIC8vIGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIg
bWF4aW11bSBjYW52YXMgc2l6ZS4KLXN0YXRpYyBjb25zdCBmbG9hdCBtYXhDYW52YXNBcmVhID0g
MzI3NjggKiA4MTkyOyAvLyBNYXhpbXVtIGNhbnZhcyBhcmVhIGluIENTUyBwaXhlbHMKK2NvbnN0
IGZsb2F0IEhUTUxDYW52YXNFbGVtZW50OjpNYXhDYW52YXNBcmVhID0gMzI3NjggKiA4MTkyOyAv
LyBNYXhpbXVtIGNhbnZhcyBhcmVhIGluIENTUyBwaXhlbHMKIAogSFRNTENhbnZhc0VsZW1lbnQ6
OkhUTUxDYW52YXNFbGVtZW50KERvY3VtZW50KiBkb2MpCiAgICAgOiBIVE1MRWxlbWVudChjYW52
YXNUYWcsIGRvYykKQEAgLTE4NSwyNCArMTg1LDQyIEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKICAgICAgICAgcC0+
cGFpbnRCdWZmZXIobV9pbWFnZUJ1ZmZlci5nZXQoKSwgcik7CiB9CiAKLXZvaWQgSFRNTENhbnZh
c0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKK0ludFJlY3QgSFRNTENhbnZhc0Vs
ZW1lbnQ6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JiBsb2dpY2FsUmVj
dCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1fY3JlYXRlZEltYWdlQnVmZmVyKTsKLSAgICBBU1NF
UlQoIW1faW1hZ2VCdWZmZXIpOwotCi0gICAgbV9jcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOwor
ICAgIHJldHVybiBJbnRSZWN0KGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UobG9naWNhbFJlY3QubG9j
YXRpb24oKSksIGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UobG9naWNhbFJlY3Quc2l6ZSgpKSk7Cit9
CiAKLSAgICBmbG9hdCB1bnNjYWxlZFdpZHRoID0gd2lkdGgoKTsKLSAgICBmbG9hdCB1bnNjYWxl
ZEhlaWdodCA9IGhlaWdodCgpOworSW50U2l6ZSBIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExv
Z2ljYWxUb0RldmljZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplKSBjb25zdAorewogICAg
IGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCktPmZyYW1lKCkgPyBkb2N1bWVudCgp
LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5zY2FsZUZhY3RvcigpIDogMS4wZjsKLSAgICBm
bG9hdCB3ZiA9IGNlaWxmKHVuc2NhbGVkV2lkdGggKiBwYWdlU2NhbGVGYWN0b3IpOwotICAgIGZs
b2F0IGhmID0gY2VpbGYodW5zY2FsZWRIZWlnaHQgKiBwYWdlU2NhbGVGYWN0b3IpOworICAgIGZs
b2F0IHdmID0gY2VpbGYobG9naWNhbFNpemUud2lkdGgoKSAqIHBhZ2VTY2FsZUZhY3Rvcik7Cisg
ICAgZmxvYXQgaGYgPSBjZWlsZihsb2dpY2FsU2l6ZS5oZWlnaHQoKSAqIHBhZ2VTY2FsZUZhY3Rv
cik7CisgICAgCisgICAgaWYgKCEod2YgPj0gMSAmJiBoZiA+PSAxICYmIHdmICogaGYgPD0gTWF4
Q2FudmFzQXJlYSkpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKLSAgICBpZiAoISh3ZiA+
PSAxICYmIGhmID49IDEgJiYgd2YgKiBoZiA8PSBtYXhDYW52YXNBcmVhKSkKLSAgICAgICAgcmV0
dXJuOworICAgIHJldHVybiBJbnRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPih3ZiksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihoZikpOworfQorCitJbnRQb2ludCBIVE1MQ2FudmFzRWxlbWVudDo6
Y29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBGbG9hdFBvaW50JiBsb2dpY2FsUG9zKSBjb25z
dAoreworICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCktPmZyYW1lKCkgPyBk
b2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5zY2FsZUZhY3RvcigpIDogMS4w
ZjsKKyAgICBmbG9hdCB4ZiA9IGxvZ2ljYWxQb3MueCgpICogcGFnZVNjYWxlRmFjdG9yOworICAg
IGZsb2F0IHlmID0gbG9naWNhbFBvcy55KCkgKiBwYWdlU2NhbGVGYWN0b3I7CisgICAgCisgICAg
cmV0dXJuIEludFBvaW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPih4ZiksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPih5ZikpOworfQogCi0gICAgSW50U2l6ZSBzaXplKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih3ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZikpOwordm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9pbWFnZUJ1ZmZl
cik7CiAKKyAgICBtX2NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CisgICAgCisgICAgRmxvYXRT
aXplIHVuc2NhbGVkU2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7CisgICAgSW50U2l6ZSBzaXplID0g
Y29udmVydExvZ2ljYWxUb0RldmljZSh1bnNjYWxlZFNpemUpOworICAgIGlmICghc2l6ZS53aWR0
aCgpIHx8ICFzaXplLmhlaWdodCgpKQorICAgICAgICByZXR1cm47CiAgICAgbV9pbWFnZUJ1ZmZl
ci5zZXQoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBmYWxzZSkucmVsZWFzZSgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAwODM2ZjA5Li4yODc2YmUzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaApAQCAtNDUsOSArNDUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7CiB0eXBlZGVmIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIEZsb2F0UmVjdDsKK2NsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IGNsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnR0UmVjdDsKK2Ns
YXNzIEludFNpemU7CiAKIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50IHsKIHB1YmxpYzoKQEAgLTgzLDcgKzg4LDExIEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JN
KENBSVJPKQogICAgIGNhaXJvX3N1cmZhY2VfdCogY3JlYXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0
OwogI2VuZGlmCi0KKyAgICAKKyAgICBJbnRSZWN0IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29u
c3QgRmxvYXRSZWN0JikgY29uc3Q7CisgICAgSW50U2l6ZSBjb252ZXJ0TG9naWNhbFRvRGV2aWNl
KGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAgIEludFBvaW50IGNvbnZlcnRMb2dpY2FsVG9E
ZXZpY2UoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBN
YXhDYW52YXNBcmVhOwogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKCkgY29u
c3Q7CiAgICAgdm9pZCByZXNldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kODZjMDg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgorCisjaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0
ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIHJldHVybiBuZXcgSW1h
Z2VEYXRhKHdpZHRoLCBoZWlnaHQpOworfQorCitJbWFnZURhdGE6OkltYWdlRGF0YSh1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorICAgIDogUmVmQ291bnRlZDxJbWFnZURhdGE+KDAp
CisgICAgLCBtX3dpZHRoKHdpZHRoKQorICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICwgbV9k
YXRhKENhbnZhc1BpeGVsQXJyYXk6OmNyZWF0ZSh3aWR0aCAqIGhlaWdodCAqIDQpKQoreworICAg
IAorfQorCit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
MWFmMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VEYXRhX2gKKyNkZWZpbmUgSW1hZ2VEYXRhX2gKKwor
I2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbWFnZURhdGE+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
OworCisgICAgICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQor
ICAgICAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAg
ICAgICBDYW52YXNQaXhlbEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJbWFnZURhdGEodW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCk7CisgICAgICAgIHVuc2lnbmVkIG1fd2lkdGg7CisgICAgICAgIHVuc2ln
bmVkIG1faGVpZ2h0OworICAgICAgICBSZWZQdHI8Q2FudmFzUGl4ZWxBcnJheT4gbV9kYXRhOwor
ICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEltYWdlRGF0YV9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbCBiL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmYxNjUK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBJbWFnZURhdGEgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyB3aWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0Owor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FudmFzUGl4ZWxBcnJheSBkYXRhOworICAgIH07
CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBhMTkyOThl
Li44NjljZDcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aWYgUExBVEZPUk0oQ0cpCkBAIC00Nyw2ICs0OCw4IEBAIHR5cGVkZWYgc3RydWN0IF9jYWlyb19z
dXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKKyAgICBjbGFzcyBJbWFnZURhdGE7CisgICAgY2xhc3MgSW50UmVj
dDsKICAgICBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKICAgICBjbGFzcyBJbWFnZUJ1ZmZlciA6IE5v
bmNvcHlhYmxlIHsKQEAgLTY1LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UoKSBjb25zdDsKICNlbmRpZgogCisgICAgICAgIFBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29u
c3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCogbV9kYXRhOwogICAgICAgICBJbnRTaXpl
IG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDc3NjUyOWUuLmE5NTgxNWMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNzIs
NSArNzIsOSBAQCBjYWlyb19zdXJmYWNlX3QqIEltYWdlQnVmZmVyOjpzdXJmYWNlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9zdXJmYWNlOwogfQogCitQYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VC
dWZmZXI6OmdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3QKK3sKKyAgICByZXR1cm4g
MDsKK30KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKaW5kZXggMmQxYWMwMS4uZjQ1NmVjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSwgSW5jCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDYgKzI4LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKICNpbmNs
dWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtOTgsNCArMTAwLDYwIEBAIENHSW1hZ2VSZWYgSW1hZ2VC
dWZmZXI6OmNnSW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBtX2NnSW1hZ2U7CiB9CiAKK1Bhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBy
ZXN1bHQtPmRhdGEoKS0+ZGF0YSgpLmRhdGEoKTsKKyAgICAKKyAgICBpZiAocmVjdC54KCkgPCAw
IHx8IHJlY3QueSgpIDwgMCB8fCAocmVjdC54KCkgKyByZWN0LndpZHRoKCkpID4gbV9zaXplLndp
ZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkgPiBtX3NpemUuaGVpZ2h0KCkpCisg
ICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmRhdGEoKS0+bGVuZ3RoKCkpOworCisgICAg
aW50IG9yaWdpbnggPSByZWN0LngoKTsKKyAgICBpbnQgZGVzdHggPSAwOworICAgIGlmIChvcmln
aW54IDwgMCkgeworICAgICAgICBkZXN0eCA9IC1vcmlnaW54OworICAgICAgICBvcmlnaW54ID0g
MDsKKyAgICB9CisgICAgaW50IGVuZHggPSByZWN0LngoKSArIHJlY3Qud2lkdGgoKTsKKyAgICBp
ZiAoZW5keCA+IG1fc2l6ZS53aWR0aCgpKQorICAgICAgICBlbmR4ID0gbV9zaXplLndpZHRoKCk7
CisgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gb3JpZ2lueDsKKyAgICAKKyAgICBpbnQgb3Jp
Z2lueSA9IHJlY3QueSgpOworICAgIGludCBkZXN0eSA9IDA7CisgICAgaWYgKG9yaWdpbnkgPCAw
KSB7CisgICAgICAgIGRlc3R5ID0gLW9yaWdpbnk7CisgICAgICAgIG9yaWdpbnkgPSAwOworICAg
IH0KKyAgICBpbnQgZW5keSA9IHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKTsKKyAgICBpZiAoZW5k
eSA+IG1fc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgZW5keSA9IG1fc2l6ZS5oZWlnaHQoKTsKKyAg
ICBpbnQgbnVtUm93cyA9IGVuZHkgLSBvcmlnaW55OworICAgIAorICAgIHVuc2lnbmVkIHNyY0J5
dGVzUGVyUm93ID0gNCAqIG1fc2l6ZS53aWR0aCgpOworICAgIHVuc2lnbmVkIGRlc3RCeXRlc1Bl
clJvdyA9IDQgKiByZWN0LndpZHRoKCk7CisgICAgCisgICAgLy8gLW9yaWdpbnkgdG8gaGFuZGxl
IHRoZSBhY2N1cnNlZCBmbGlwcGVkIHkgYXhpcworICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3Mg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgKG1fc2l6ZS5oZWln
aHQoKSAtIG9yaWdpbnkgLSAxKSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CisgICAg
dW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cg
KyBkZXN0eCAqIDQ7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKKyAgICAgICAgICAg
IGlmICh1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1szXSkgeworICAgICAgICAgICAgICAg
IGRlc3RSb3dzWzBdID0gKHNyY1Jvd3NbMF0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbMV0gPSAoc3JjUm93c1sxXSAqIDI1NSkgLyBhbHBoYTsKKyAgICAgICAgICAg
ICAgICBkZXN0Um93c1syXSA9IChzcmNSb3dzWzJdICogMjU1KSAvIGFscGhhOworICAgICAgICAg
ICAgICAgIGRlc3RSb3dzWzNdID0gYWxwaGE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cylbMF0gPSByZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cylbMF07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZXN0Um93cyArPSA0OworICAgICAgICB9CisgICAgICAgIHNyY1Jvd3MgLT0gc3Jj
Qnl0ZXNQZXJSb3c7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IGM5NWQ4Yzgu
LjA2ZWUxMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VC
dWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
clF0LmNwcApAQCAtNjksNCArNjksOSBAQCBRUGl4bWFwKiBJbWFnZUJ1ZmZlcjo6cGl4bWFwKCkg
Y29uc3QKICAgICByZXR1cm4gJm1fcGl4bWFwOwogfQogCitQYXNzUmVmUHRyPEltYWdlRGF0YT4g
SW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
eC9JbWFnZUJ1ZmZlcld4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VC
dWZmZXJXeC5jcHAKaW5kZXggYmM1NGE4OC4uMTQ1MTUzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCkBAIC00Myw0ICs0Myw5IEBAIEdyYXBo
aWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCitQYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwogfQo=
</data>
<flag name="review"
          id="8412"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19276</attachid>
            <date>2008-02-22 01:49:15 -0800</date>
            <delta_ts>2008-02-22 15:59:21 -0800</delta_ts>
            <desc>Address weinig&apos;s commentary </desc>
            <filename>getImageData.patch</filename>
            <type>text/plain</type>
            <size>79793</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YTg4ZDc0Li5lN2I0M2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMDIt
MjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTc0ODY6IFN1cHBvcnQgSFRNTDUgQ2Fu
dmFzLmdldEltYWdlRGF0YSBBUEkKKyAgICAgICAgU3VwcG9ydCBDYW52YXMuZ2V0SW1hZ2VEYXRh
IGFuZCBDYW52YXMuY3JlYXRlSW1hZ2VEYXRhCisKKyAgICAgICAgVGVzdCBjYXNlcyBmb3IgSW1h
Z2VEYXRhIGJlaGF2aW91ciBhbmQgZ2V0SW1hZ2VEYXRhIGNvcnJlY3RuZXNzCisKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZp
b3VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWdldElt
YWdlRGF0YS5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVo
YXZpb3VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
MGVhNDVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LUltYWdlRGF0YS1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1Nlcmll
cyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIgb2YgdGhlIEltYWdlRGF0YSBv
YmplY3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW1hZ2VEYXRhLndp
ZHRoIGlzIDIKK1BBU1MgaW1hZ2VEYXRhLmhlaWdodCBpcyAyCitQQVNTIGltYWdlRGF0YS5kYXRh
Lmxlbmd0aCBpcyAxNgorUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0
YS5kYXRhWzFdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBpbWFnZURh
dGEuZGF0YVszXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzRdIGlzIDAKK1BBU1MgaW1hZ2VE
YXRhLmRhdGFbNV0gaXMgMAorUEFTUyBpbWFnZURhdGEuZGF0YVs2XSBpcyAwCitQQVNTIGltYWdl
RGF0YS5kYXRhWzddIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbOF0gaXMgMAorUEFTUyBpbWFn
ZURhdGEuZGF0YVs5XSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzEwXSBpcyAwCitQQVNTIGlt
YWdlRGF0YS5kYXRhWzExXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzEyXSBpcyAwCitQQVNT
IGltYWdlRGF0YS5kYXRhWzEzXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzE0XSBpcyAwCitQ
QVNTIGltYWdlRGF0YS5kYXRhWzE1XSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gTmFO
LCBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gdHJ1ZSwg
aW1hZ2VEYXRhLmRhdGFbMF0gaXMgMQorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IGZhbHNlLCBp
bWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gImdhcmJhZ2Ui
LCBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLTEsIGlt
YWdlRGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMCIsIGltYWdl
RGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMSIsIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDEKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMiIsIGltYWdlRGF0YS5k
YXRhWzBdIGlzIDIKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSBJbmZpbml0eSwgaW1hZ2VEYXRh
LmRhdGFbMF0gaXMgMjU1CitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLUluZmluaXR5LCBpbWFn
ZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLTUsIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAtMC41LCBpbWFnZURhdGEu
ZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gMCwgaW1hZ2VEYXRhLmRhdGFb
MF0gaXMgMAorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IDAuNSwgaW1hZ2VEYXRhLmRhdGFbMF0g
aXMgMQorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IDUsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDUK
K1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSA1LjQsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDUKK1BB
U1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAyNTUsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDI1NQorUEFT
UyBpbWFnZURhdGEuZGF0YVswXSA9IDI1NiwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMjU1CitQQVNT
IGltYWdlRGF0YS5kYXRhWzBdID0gbnVsbCwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBp
bWFnZURhdGEuZGF0YVswXSA9IHVuZGVmaW5lZCwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAorUEFT
UyBpbWFnZURhdGEuZGF0YVsnZm9vJ109J2dhcmJhZ2UnLGltYWdlRGF0YS5kYXRhWydmb28nXSBp
cyAnZ2FyYmFnZScKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbLTFdPSdnYXJiYWdlJyxpbWFnZURhdGEu
ZGF0YVstMV0gaXMgJ2dhcmJhZ2UnCitQQVNTIGltYWdlRGF0YS5kYXRhWzE3XT0nZ2FyYmFnZScs
aW1hZ2VEYXRhLmRhdGFbMTddIGlzIHVuZGVmaW5lZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE3MDNhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5odG1sCkBAIC0wLDAgKzEs
MTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyI+PC9j
YW52YXM+Cis8c2NyaXB0IHNyYz0iY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kNWI5MTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMKQEAgLTAsMCArMSwyNyBAQAorZGVz
Y3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIgb2Yg
dGhlIEltYWdlRGF0YSBvYmplY3QiKTsKKworaW1hZ2VEYXRhID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKDAsMCwyLDIpOwor
CitzaG91bGRCZSgiaW1hZ2VEYXRhLndpZHRoIiwgIjIiKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEu
aGVpZ2h0IiwgIjIiKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEuZGF0YS5sZW5ndGgiLCAiMTYiKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VEYXRhLmRhdGEubGVuZ3RoOyBpKyspCisgICAgc2hv
dWxkQmUoImltYWdlRGF0YS5kYXRhWyIraSsiXSIsICIwIik7CisKK3ZhciB0ZXN0VmFsdWVzID0g
W05hTiwgdHJ1ZSwgZmFsc2UsICJcImdhcmJhZ2VcIiIsICItMSIsCisgICAgICAgICAgICAgICAg
ICAiXCIwXCIiLCAiXCIxXCIiLCAiXCIyXCIiLCBJbmZpbml0eSwgLUluZmluaXR5LAorICAgICAg
ICAgICAgICAgICAgLTUsIC0wLjUsIDAsIDAuNSwgNSwKKyAgICAgICAgICAgICAgICAgIDUuNCwg
MjU1LCAyNTYsIG51bGwsIHVuZGVmaW5lZF07Cit2YXIgdGVzdFJlc3VsdHMgPSBbMCwgMSwgMCwg
MCwgMCwKKyAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAyNTUsIDAsCisgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMSwgNSwKKyAgICAgICAgICAgICAgICAgICA1LCAyNTUsIDI1NSwgMCwg
MF07Citmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICBz
aG91bGRCZSgiaW1hZ2VEYXRhLmRhdGFbMF0gPSAiK3Rlc3RWYWx1ZXNbaV0rIiwgaW1hZ2VEYXRh
LmRhdGFbMF0iLCAiIit0ZXN0UmVzdWx0c1tpXSk7Cit9CisKK3Nob3VsZEJlKCJpbWFnZURhdGEu
ZGF0YVsnZm9vJ109J2dhcmJhZ2UnLGltYWdlRGF0YS5kYXRhWydmb28nXSIsICInZ2FyYmFnZSci
KTsKK3Nob3VsZEJlKCJpbWFnZURhdGEuZGF0YVstMV09J2dhcmJhZ2UnLGltYWdlRGF0YS5kYXRh
Wy0xXSIsICInZ2FyYmFnZSciKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEuZGF0YVsxN109J2dhcmJh
Z2UnLGltYWdlRGF0YS5kYXRhWzE3XSIsICJ1bmRlZmluZWQiKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtZ2V0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1nZXRJbWFnZURhdGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjc3MGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1MCBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBnZXRJbWFnZURhdGEgd29ya3MgY29ycmVjdGx5LgorUEFT
UzogcGl4ZWwgYXQgKDAsMCkgd2FzIFswLDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNCwwKSB3
YXMgWzAsMTEsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOCwwKSB3YXMgWzAsMjEsMCwyNTVdCitQ
QVNTOiBwaXhlbCBhdCAoMTIsMCkgd2FzIFswLDMyLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDE2
LDApIHdhcyBbMCw0MywwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICgyMCwwKSB3YXMgWzAsNTMsMCwy
NTVdCitQQVNTOiBwaXhlbCBhdCAoMjQsMCkgd2FzIFswLDY0LDAsMjU1XQorUEFTUzogcGl4ZWwg
YXQgKDI4LDApIHdhcyBbMCw3NCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICgzMiwwKSB3YXMgWzAs
ODUsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoMzYsMCkgd2FzIFswLDk2LDAsMjU1XQorUEFTUzog
cGl4ZWwgYXQgKDQwLDApIHdhcyBbMCwxMDYsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNDQsMCkg
d2FzIFswLDExNywwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg0OCwwKSB3YXMgWzAsMTI4LDAsMjU1
XQorUEFTUzogcGl4ZWwgYXQgKDUyLDApIHdhcyBbMCwxMzgsMCwyNTVdCitQQVNTOiBwaXhlbCBh
dCAoNTYsMCkgd2FzIFswLDE0OSwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg2MCwwKSB3YXMgWzAs
MTU5LDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDY0LDApIHdhcyBbMCwxNzAsMCwyNTVdCitQQVNT
OiBwaXhlbCBhdCAoNjgsMCkgd2FzIFswLDE4MSwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg3Miww
KSB3YXMgWzAsMTkxLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDc2LDApIHdhcyBbMCwyMDIsMCwy
NTVdCitQQVNTOiBwaXhlbCBhdCAoODAsMCkgd2FzIFswLDIxMywwLDI1NV0KK1BBU1M6IHBpeGVs
IGF0ICg4NCwwKSB3YXMgWzAsMjIzLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDg4LDApIHdhcyBb
MCwyMzQsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOTIsMCkgd2FzIFswLDI0NCwwLDI1NV0KK1BB
U1M6IHBpeGVsIGF0ICg5NiwwKSB3YXMgWzAsMjU1LDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDUs
NSkgd2FzIFs2NCwxMjgsMTkxLDI1NV0KK1BBU1M6IENvcnJlY3QgZGF0YSBmb3IgY29udGVudCBv
dXRzaWRlIGNhbnZhcyBib3VuZHMKK1BBU1M6IHBpeGVsIGF0ICg1MCw1MCkgd2FzIFswLDAsMCww
XQorUEFTUzogcGl4ZWwgYXQgKDUwLDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAo
NTAsNTgpIHdhcyBbMCwwLDAsMl0KK1BBU1M6IHBpeGVsIGF0ICg1MCw2Mikgd2FzIFswLDAsMCwx
Nl0KK1BBU1M6IHBpeGVsIGF0ICg1MCw2Nikgd2FzIFswLDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0
ICg1MCw3MCkgd2FzIFswLDAsMCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg1MCw3NCkgd2FzIFswLDAs
MCw5Nl0KK1BBU1M6IHBpeGVsIGF0ICg1MCw3OCkgd2FzIFswLDAsMCwxMjhdCitQQVNTOiBwaXhl
bCBhdCAoNTAsODIpIHdhcyBbMCwwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDUwLDg2KSB3YXMg
WzAsMCwwLDI1NF0KK1BBU1M6IHBpeGVsIGF0ICg1MCw5MCkgd2FzIFswLDAsMCwyNTVdCitQQVNT
OiBwaXhlbCBhdCAoNTQsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg1NCw1NCkg
d2FzIFswLDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDU0LDU4KSB3YXMgWzAsMCwwLDJdCitQQVNT
OiBwaXhlbCBhdCAoNTQsNjIpIHdhcyBbMCwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNTQsNjYp
IHdhcyBbMCwwLDAsMzJdCitQQVNTOiBwaXhlbCBhdCAoNTQsNzApIHdhcyBbMCwwLDAsNjRdCitQ
QVNTOiBwaXhlbCBhdCAoNTQsNzQpIHdhcyBbMCwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoNTQs
NzgpIHdhcyBbMSwwLDAsMTI4XQorUEFTUzogcGl4ZWwgYXQgKDU0LDgyKSB3YXMgWzEsMCwwLDE5
Ml0KK1BBU1M6IHBpeGVsIGF0ICg1NCw4Nikgd2FzIFsxLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBh
dCAoNTQsOTApIHdhcyBbMSwwLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDU4LDUwKSB3YXMgWzAs
MCwwLDBdCitQQVNTOiBwaXhlbCBhdCAoNTgsNTQpIHdhcyBbMCwwLDAsMV0KK1BBU1M6IHBpeGVs
IGF0ICg1OCw1OCkgd2FzIFswLDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDU4LDYyKSB3YXMgWzAs
MCwwLDE2XQorUEFTUzogcGl4ZWwgYXQgKDU4LDY2KSB3YXMgWzAsMCwwLDMyXQorUEFTUzogcGl4
ZWwgYXQgKDU4LDcwKSB3YXMgWzMsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQgKDU4LDc0KSB3YXMg
WzIsMCwwLDk2XQorUEFTUzogcGl4ZWwgYXQgKDU4LDc4KSB3YXMgWzEsMCwwLDEyOF0KK1BBU1M6
IHBpeGVsIGF0ICg1OCw4Mikgd2FzIFsyLDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNTgsODYp
IHdhcyBbMiwwLDAsMjU0XQorUEFTUzogcGl4ZWwgYXQgKDU4LDkwKSB3YXMgWzIsMCwwLDI1NV0K
K1BBU1M6IHBpeGVsIGF0ICg2Miw1MCkgd2FzIFswLDAsMCwwXQorUEFTUzogcGl4ZWwgYXQgKDYy
LDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAoNjIsNTgpIHdhcyBbMCwwLDAsMl0K
K1BBU1M6IHBpeGVsIGF0ICg2Miw2Mikgd2FzIFsxNSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAo
NjIsNjYpIHdhcyBbMTUsMCwwLDMyXQorUEFTUzogcGl4ZWwgYXQgKDYyLDcwKSB3YXMgWzE1LDAs
MCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg2Miw3NCkgd2FzIFsxNSwwLDAsOTZdCitQQVNTOiBwaXhl
bCBhdCAoNjIsNzgpIHdhcyBbMTUsMCwwLDEyOF0KK1BBU1M6IHBpeGVsIGF0ICg2Miw4Mikgd2Fz
IFsxNSwwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDYyLDg2KSB3YXMgWzE2LDAsMCwyNTRdCitQ
QVNTOiBwaXhlbCBhdCAoNjIsOTApIHdhcyBbMTYsMCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg2
Niw1MCkgd2FzIFswLDAsMCwwXQorUEFTUzogcGl4ZWwgYXQgKDY2LDU0KSB3YXMgWzAsMCwwLDFd
CitQQVNTOiBwaXhlbCBhdCAoNjYsNTgpIHdhcyBbMCwwLDAsMl0KK1BBU1M6IHBpeGVsIGF0ICg2
Niw2Mikgd2FzIFszMSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNjYsNjYpIHdhcyBbMzEsMCww
LDMyXQorUEFTUzogcGl4ZWwgYXQgKDY2LDcwKSB3YXMgWzMxLDAsMCw2NF0KK1BBU1M6IHBpeGVs
IGF0ICg2Niw3NCkgd2FzIFszMSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoNjYsNzgpIHdhcyBb
MzEsMCwwLDEyOF0KK1BBU1M6IHBpeGVsIGF0ICg2Niw4Mikgd2FzIFszMSwwLDAsMTkyXQorUEFT
UzogcGl4ZWwgYXQgKDY2LDg2KSB3YXMgWzMyLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBhdCAoNjYs
OTApIHdhcyBbMzIsMCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg3MCw1MCkgd2FzIFswLDAsMCww
XQorUEFTUzogcGl4ZWwgYXQgKDcwLDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAo
NzAsNTgpIHdhcyBbMTI3LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDcwLDYyKSB3YXMgWzYzLDAs
MCwxNl0KK1BBU1M6IHBpeGVsIGF0ICg3MCw2Nikgd2FzIFs2MywwLDAsMzJdCitQQVNTOiBwaXhl
bCBhdCAoNzAsNzApIHdhcyBbNjMsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQgKDcwLDc0KSB3YXMg
WzYzLDAsMCw5Nl0KK1BBU1M6IHBpeGVsIGF0ICg3MCw3OCkgd2FzIFs2MywwLDAsMTI4XQorUEFT
UzogcGl4ZWwgYXQgKDcwLDgyKSB3YXMgWzYzLDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNzAs
ODYpIHdhcyBbNjQsMCwwLDI1NF0KK1BBU1M6IHBpeGVsIGF0ICg3MCw5MCkgd2FzIFs2NCwwLDAs
MjU1XQorUEFTUzogcGl4ZWwgYXQgKDc0LDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBwaXhlbCBh
dCAoNzQsNTQpIHdhcyBbMCwwLDAsMV0KK1BBU1M6IHBpeGVsIGF0ICg3NCw1OCkgd2FzIFsxMjcs
MCwwLDJdCitQQVNTOiBwaXhlbCBhdCAoNzQsNjIpIHdhcyBbOTUsMCwwLDE2XQorUEFTUzogcGl4
ZWwgYXQgKDc0LDY2KSB3YXMgWzk1LDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg3NCw3MCkgd2Fz
IFs5NSwwLDAsNjRdCitQQVNTOiBwaXhlbCBhdCAoNzQsNzQpIHdhcyBbOTUsMCwwLDk2XQorUEFT
UzogcGl4ZWwgYXQgKDc0LDc4KSB3YXMgWzk1LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoNzQs
ODIpIHdhcyBbOTUsMCwwLDE5Ml0KK1BBU1M6IHBpeGVsIGF0ICg3NCw4Nikgd2FzIFs5NiwwLDAs
MjU0XQorUEFTUzogcGl4ZWwgYXQgKDc0LDkwKSB3YXMgWzk2LDAsMCwyNTVdCitQQVNTOiBwaXhl
bCBhdCAoNzgsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg3OCw1NCkgd2FzIFsy
NTUsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAoNzgsNTgpIHdhcyBbMTI3LDAsMCwyXQorUEFTUzog
cGl4ZWwgYXQgKDc4LDYyKSB3YXMgWzEyNywwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNzgsNjYp
IHdhcyBbMTI3LDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg3OCw3MCkgd2FzIFsxMjcsMCwwLDY0
XQorUEFTUzogcGl4ZWwgYXQgKDc4LDc0KSB3YXMgWzEyNywwLDAsOTZdCitQQVNTOiBwaXhlbCBh
dCAoNzgsNzgpIHdhcyBbMTI3LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoNzgsODIpIHdhcyBb
MTI3LDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNzgsODYpIHdhcyBbMTI3LDAsMCwyNTRdCitQ
QVNTOiBwaXhlbCBhdCAoNzgsOTApIHdhcyBbMTI4LDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAo
ODIsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg4Miw1NCkgd2FzIFsyNTUsMCww
LDFdCitQQVNTOiBwaXhlbCBhdCAoODIsNTgpIHdhcyBbMjU1LDAsMCwyXQorUEFTUzogcGl4ZWwg
YXQgKDgyLDYyKSB3YXMgWzE5MSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoODIsNjYpIHdhcyBb
MTkxLDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg4Miw3MCkgd2FzIFsxOTEsMCwwLDY0XQorUEFT
UzogcGl4ZWwgYXQgKDgyLDc0KSB3YXMgWzE5MSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoODIs
NzgpIHdhcyBbMTkxLDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoODIsODIpIHdhcyBbMTkyLDAs
MCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoODIsODYpIHdhcyBbMTkxLDAsMCwyNTRdCitQQVNTOiBw
aXhlbCBhdCAoODIsOTApIHdhcyBbMTkyLDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoODYsNTAp
IHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg4Niw1NCkgd2FzIFsyNTUsMCwwLDFdCitQ
QVNTOiBwaXhlbCBhdCAoODYsNTgpIHdhcyBbMjU1LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDg2
LDYyKSB3YXMgWzI1NSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoODYsNjYpIHdhcyBbMjU1LDAs
MCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg4Niw3MCkgd2FzIFsyNTUsMCwwLDY0XQorUEFTUzogcGl4
ZWwgYXQgKDg2LDc0KSB3YXMgWzI1NSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoODYsNzgpIHdh
cyBbMjUzLDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoODYsODIpIHdhcyBbMjUzLDAsMCwxOTJd
CitQQVNTOiBwaXhlbCBhdCAoODYsODYpIHdhcyBbMjUzLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBh
dCAoODYsOTApIHdhcyBbMjU0LDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOTAsNTApIHdhcyBb
MCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg5MCw1NCkgd2FzIFsyNTUsMCwwLDFdCitQQVNTOiBw
aXhlbCBhdCAoOTAsNTgpIHdhcyBbMjU1LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDkwLDYyKSB3
YXMgWzI1NSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoOTAsNjYpIHdhcyBbMjU1LDAsMCwzMl0K
K1BBU1M6IHBpeGVsIGF0ICg5MCw3MCkgd2FzIFsyNTUsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQg
KDkwLDc0KSB3YXMgWzI1NSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoOTAsNzgpIHdhcyBbMjU1
LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoOTAsODIpIHdhcyBbMjU1LDAsMCwxOTJdCitQQVNT
OiBwaXhlbCBhdCAoOTAsODYpIHdhcyBbMjU1LDAsMCwyNTRdCitQQVNTOiBwaXhlbCBhdCAoOTAs
OTApIHdhcyBbMjU1LDAsMCwyNTVdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1nZXRJbWFnZURhdGEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1nZXRJbWFnZURhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xODY1OTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWdldEltYWdlRGF0YS5odG1sCkBAIC0wLDAgKzEsOTUgQEAKK1RoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgZ2V0SW1hZ2VEYXRhIHdvcmtzIGNvcnJlY3RseS4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKK2NhbnZhcy53aWR0aCA9IDIwMDsKK2NhbnZhcy5oZWlnaHQg
PSAyMDA7Cit2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworCitmdW5jdGlv
biBsb2cobXNnKXsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1M
ICs9IG1zZyArICI8YnIvPiI7Cit9CisKK2Z1bmN0aW9uIGRhdGFUb0FycmF5KGRhdGEpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKQorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGF0YS5sZW5ndGg7IGkrKykKKyAgICAgICAgcmVzdWx0W2ldID0gZGF0YVtpXTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBnZXRQaXhlbChjdHgsIHgsIHkpIHsKKyAg
ICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoeCx5LDEsMSk7CisgICAgaWYgKCFkYXRhKSAv
LyBnZXRJbWFnZURhdGEgZmFpbGVkLCB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgICAg
IHJldHVybiBbLTEsLTEsLTEsLTFdOworICAgIHJldHVybiBkYXRhVG9BcnJheShkYXRhLmRhdGEp
OworfQorCitmdW5jdGlvbiBwaXhlbFNob3VsZEJlKGN0eCwgeCwgeSwgY29sb3VyKSB7CisgICAg
dmFyIGN0eENvbG91ciA9IGdldFBpeGVsKGN0eCwgeCwgeSk7CisgICAgdmFyIGNvcnJlY3QgPSB0
cnVlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICBpZiAoY29sb3Vy
W2ldICE9IGN0eENvbG91cltpXSkgeworICAgICAgICAgICAgY29ycmVjdCA9IGZhbHNlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICBpZiAoY29ycmVjdCkKKyAgICAgICAgbG9n
KCJQQVNTOiBwaXhlbCBhdCAoIitbeCx5XSsiKSB3YXMgWyIrY29sb3VyKyJdIik7CisgICAgZWxz
ZQorICAgICAgICBsb2coIkZBSUw6IHBpeGVsIGF0ICgiK1t4LHldKyIpIHdhcyBbIitjdHhDb2xv
dXIrIl0sIGV4cGVjdGVkIFsiK2NvbG91cisiXSIpOworfQorCitpZiAoIWNvbnRleHQuc2V0Rmls
bENvbG9yKQorICAgIGNvbnRleHQuc2V0RmlsbENvbG9yID0gZnVuY3Rpb24ocixnLGIsYSkgewor
ICAgICAgICB0aGlzLmZpbGxTdHlsZSA9ICJyZ2JhKCIrW01hdGgucm91bmQocioyNTUpLE1hdGgu
cm91bmQoZyoyNTUpLE1hdGgucm91bmQoYioyNTUpLE1hdGgucm91bmQoYSoyNTUpXSsiKSIKKyAg
ICB9CisKKy8vIENoZWNrIHRoYXQgZ2V0SW1hZ2VEYXRhIGlzIHJldHVybiB0aGUgZGF0YSBmb3Ig
dGhlIHJpZ2h0IHBvcnRpb24gb2YgdGhlIGltYWdlCitmb3IodmFyIHggPSAwOyB4IDwgMTAwOyB4
Kz00KSB7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoMCwgeC85NiwgMCwgMSk7CisgICAgY29u
dGV4dC5maWxsUmVjdCh4LDAsMSwxKTsKKyAgICBwaXhlbFNob3VsZEJlKGNvbnRleHQsIHgsIDAs
IFswLCBNYXRoLnJvdW5kKDI1NSp4Lzk2KSwgMCwgMjU1XSk7Cit9CisKKy8vIENoZWNrIHJnYmEg
b3JkZXJpbmcKK2NvbnRleHQuY2xlYXJSZWN0KDAsMCwxMDAsMTAwKTsKK2NvbnRleHQuc2V0Rmls
bENvbG9yKDAuMjUsIDAuNSwgMC43NSwgMSk7Citjb250ZXh0LmZpbGxSZWN0KDUsNSwxLDEpOwor
cGl4ZWxTaG91bGRCZShjb250ZXh0LCA1LCA1LCBbTWF0aC5yb3VuZCgwLjI1KjI1NSksIE1hdGgu
cm91bmQoMC41KjI1NSksIE1hdGgucm91bmQoMC43NSoyNTUpLCAyNTVdKTsKKworLy8gQ2hlY2sg
dGhhdCB3ZSByZXR1cm4gdHJhbnNwYXJlbnQgYmxhY2sgZm9yIHJlZ2lvbnMgb3V0c2lkZSB0aGUg
Y2FudmFzIHByb3BlcgorY29udGV4dC5maWxsU3R5bGUgPSAicmdiYSgyNTUsMjU1LDI1NSwyNTUp
IjsKK2NvbnRleHQuZmlsbFJlY3QoMTk4LCA1LCA0LCAxKTsgLy8gZmluYWwgMiBwaXhlbHMgaG9y
aXpvbnRhbGx5IHNob3VsZCBiZSBjbGlwcGVkCit2YXIgY29udGVudCA9IGRhdGFUb0FycmF5KGNv
bnRleHQuZ2V0SW1hZ2VEYXRhKDE5OCwgNSwgNCwgMSkuZGF0YSk7Cit2YXIgZXhwZWN0ZWQgPSBb
MjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAwLDAsMCww
LDAsMCwwLDBdOwordmFyIG1hdGNoZWQgPSB0cnVlOworZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsg
aSsrKQorICAgIGlmIChjb250ZW50W2ldICE9IGV4cGVjdGVkW2ldKSB7CisgICAgICAgIG1hdGNo
ZWQgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQoraWYgKG1hdGNoZWQpCisgICAgbG9n
KCJQQVNTOiBDb3JyZWN0IGRhdGEgZm9yIGNvbnRlbnQgb3V0c2lkZSBjYW52YXMgYm91bmRzIik7
CitlbHNlCisgICAgbG9nKCJGQUlMOiBEaWQgbm90IGdldCBjb3JyZWN0IGRhdGEgZm9yIGNvbnRl
bnQgb3V0c2lkZSBjYW52YXMgYm91bmRzOiAiK2NvbnRlbnQpOworCisvLyBFbnN1cmUgcmV0dXJu
ZWQgdmFsdWVzIGFyZSBub3QgcHJlbXVsdGlwbGllZAordmFyIHZhbHVlcyA9IFswLDEsMiwxNiwz
Miw2NCw5NiwxMjgsMTkyLDI1NCwyNTVdOworCisvLyB0aGlzIGZ1bmN0aW9uIHNpbXBseSBhY2Nv
dW50cyBmb3IgdHJ1bmNhdGlvbiBkdWUgdG8gcHJlbXVsdGlwbGljYXRpb24gaW4gdGhlIGNhbnZh
cyBpbXBsZW1lbnRhdGlvbgorZnVuY3Rpb24gcHJlbXVsdCh2YWx1ZSwgYWxwaGEpIHsKKyAgICBy
ZXR1cm4gYWxwaGEgPyBNYXRoLmZsb29yKE1hdGgucm91bmQodmFsdWUqYWxwaGEvMjU1KSoyNTUv
YWxwaGEpIDogMDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKysp
IHsKKyAgICBmb3IgKHZhciBhID0gMDsgYSA8IHZhbHVlcy5sZW5ndGg7IGErKykgeworICAgICAg
ICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKyBbdmFsdWVzW2ldLCAwLCAwLCB2YWx1ZXNb
YV0vMjU1XSArIikiOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwK2kqNCw1MCthKjQsMiwy
KTsKKyAgICAgICAgcGl4ZWxTaG91bGRCZShjb250ZXh0LCA1MCtpKjQsIDUwK2EqNCwgW3ByZW11
bHQodmFsdWVzW2ldLCB2YWx1ZXNbYV0pLCAwLCAwLCB2YWx1ZXNbYV1dKTsKKyAgICB9Cit9CisK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlY2Q5OGUxLi4yNmE4YjFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDA4LTAyLTIxICBP
bGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBDYW52YXMuZ2V0SW1hZ2VEYXRhIGFuZCBD
YW52YXMuY3JlYXRlSW1hZ2VEYXRhCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
c3VwcG9ydCBmb3IgYWxsIHRoZSBwaXhlbCByZWFkaW5nIHBvcnRpb25zCisgICAgICAgIG9mIHRo
ZSBIVE1MNSBDYW52YXMgc3BlYy4gIFRoZXJlIGFyZSB0d28gbmV3IHR5cGVzIEltYWdlRGF0YQor
ICAgICAgICBhbmQgQ2FudmFzUGl4ZWxBcnJheSB3aGljaCBhcmUgdXNlZCB0byBwcm92aWRlIHRo
ZSBIVE1MNQorICAgICAgICBJbWFnZURhdGEgb2JqZWN0LCBhbmQgdGhlIHJlcXVpcmVkIHNlbWFu
dGljcyBmb3IgYXNzaWdubWVudAorICAgICAgICB0byB0aGUgSW1hZ2VEYXRhIGRhdGEgYXJyYXku
CisgICAgICAgIAorICAgICAgICBXZSBvbmx5IGltcGxlbWVudCB0aGUgQ0cgdmVyc2lvbiBvZiBJ
bWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhLAorICAgICAgICBidXQgdGhlIGxvZ2ljIGlzIG51bGwg
c2FmZSwgc28gdGhpcyB3aWxsIG5vdCBpbnRyb2R1Y2UgYW55CisgICAgICAgIGNyYXNoZXMgaW50
byBvdGhlciBwbGF0Zm9ybXMsIHVuZm9ydHVuYXRlbHkgaXQgd2lsbCByZXN1bHQgaW4KKyAgICAg
ICAgSlMgT2JqZWN0IGRldGVjdGlvbiAibHlpbmciIG9uIG5vbi1DRyBwbGF0Zm9ybXMuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNQaXhlbEFy
cmF5Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1BpeGVsQXJy
YXk6OmluZGV4R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUGl4ZWxBcnJheTo6
aW5kZXhTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKiBodG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1BpeGVsQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNQaXhlbEFycmF5OjpDYW52YXNQaXhlbEFycmF5KToKKyAgICAgICAgKiBodG1s
L0NhbnZhc1BpeGVsQXJyYXkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQaXhl
bEFycmF5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BpeGVsQXJyYXk6Omxlbmd0
aCk6CisgICAgICAgICogaHRtbC9DYW52YXNQaXhlbEFycmF5LmlkbDogQWRkZWQuCisgICAgICAg
ICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRW1wdHlJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjcmVhdGVJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURh
dGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1sL0lt
YWdlRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEYXRhOjpkYXRhKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5pZGw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFn
ZUJ1ZmZlcld4LmNwcDoKKwogMjAwOC0wMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCBiZDI5MTUxLi41OGZjNTc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMjcsNiArMzI3LDcg
QEAgYWxsIDogXAogICAgIEpTQ1NTVmFsdWVMaXN0LmggXAogICAgIEpTQ2FudmFzR3JhZGllbnQu
aCBcCiAgICAgSlNDYW52YXNQYXR0ZXJuLmggXAorICAgIEpTQ2FudmFzUGl4ZWxBcnJheS5oIFwK
ICAgICBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIFwKICAgICBKU0NoYXJhY3RlckRhdGEu
aCBcCiAgICAgSlNDb21tZW50LmggXApAQCAtNDE0LDYgKzQxNSw3IEBAIGFsbCA6IFwKICAgICBK
U0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAgICAgSlNIVE1MVmlkZW9FbGVtZW50LmggXAogICAgIEpT
SGlzdG9yeS5oIFwKKyAgICBKU0ltYWdlRGF0YS5oIFwKICAgICBKU0tleWJvYXJkRXZlbnQuaCBc
CiAgICAgSlNMb2NhdGlvbi5sdXQuaCBcCiAgICAgSlNNZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhM2U1ZmYzLi42YTA1N2Y0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcxMCw2ICsx
NzEwLDE3IEBACiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3
ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJQTcz
NTJDMTkwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzUyQzE3MEIxQkI4OUQwMEE5ODZE
MCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi87IH07CiAJCUE3MzUyQzFBMEIxQkI4OUQwMEE5ODZE
MCAvKiBSZW5kZXJTVkdCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTczNTJDMTgwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmgg
Ki87IH07CisJCUE3NjZGMzUzMEQ2QkRFMzUwMEFCRERCMyAvKiBKU0NhbnZhc1BpeGVsQXJyYXlD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc2NkYzNTIwRDZCREUzNTAwQUJEREIzIC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAg
Ki87IH07CisJCUE3Nzk3OTE2MEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTEw
MEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCAqLzsgfTsKKwkJQTc3OTc5
MTcwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTExMEQ2QjlEMEMwMDM4NTFCOSAv
KiBDYW52YXNQaXhlbEFycmF5LmggKi87IH07CisJCUE3Nzk3OTE4MEQ2QjlEMEMwMDM4NTFCOSAv
KiBDYW52YXNQaXhlbEFycmF5LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc3OTc5MTIwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJy
YXkuaWRsICovOyB9OworCQlBNzc5NzkxOTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTEz
MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovOyB9OworCQlBNzc5NzkxQTBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmgg
Ki87IH07CisJCUE3Nzk3OTFCMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaWRsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNTBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLzsgfTsKKwkJQTc3OTc5MjYwRDZCOUU2NDAw
Mzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyMjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52
YXNQaXhlbEFycmF5LmNwcCAqLzsgfTsKKwkJQTc3OTc5MjcwRDZCOUU2NDAwMzg1MUI5IC8qIEpT
Q2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc3OTc5MjMwRDZCOUU2NDAwMzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5o
ICovOyB9OworCQlBNzc5NzkyODBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MjQwRDZC
OUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmNwcCAqLzsgfTsKKwkJQTc3OTc5MjkwRDZCOUU2
NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEu
aCAqLzsgfTsKIAkJQTc4NDk0MUIwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzg0OTQxQTBCNUZF
NTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLzsgfTsKIAkJQTc5NTQ2M0UwQjVDNEM4MDAw
N0I0MzhGIC8qIERyYWdEYXRhTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc5NTQ2M0QwQjVDNEM4MDAwN0I0MzhGIC8qIERyYWdEYXRhTWFjLm1t
ICovOyB9OwogCQlBNzk1NDY0MzBCNUM0Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5NTQ2NDIwQjVDNENC
NDAwN0I0MzhGIC8qIERyYWdEYXRhLmNwcCAqLzsgfTsKQEAgLTU5MDgsNiArNTkxOSwxNyBAQAog
CQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQ29udHJvbGxlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTczNTJDMTcwQjFCQjg5RDAwQTk4NkQwIC8q
IFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzUy
QzE4MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc2NkYzNTIwRDZCREUzNTAwQUJEREIzIC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1Bp
eGVsQXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5Nzkx
MDBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNQaXhlbEFycmF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTc3OTc5MTEwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVs
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5NzkxMjBENkI5RDBDMDAzODUx
QjkgLyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFz
UGl4ZWxBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTEzMEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSW1hZ2VEYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTc3OTc5MjIwRDZCOUU2NDAwMzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1BpeGVsQXJyYXkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5NzkyMzBENkI5RTY0MDAzODUxQjkgLyog
SlNDYW52YXNQaXhlbEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q2FudmFzUGl4ZWxBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5Nzky
NDBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNJbWFnZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbWFnZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpcGJvYXJkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc5NTQ2M0QwQjVDNEM4MDAwN0I0MzhGIC8qIERy
YWdEYXRhTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERy
YWdEYXRhTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzk1NDY0MjBCNUM0
Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRHJhZ0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTc3
OCw2ICs5ODAwLDEyIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBNzc5NzkxMDBENkI5
RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgKi8sCisJCQkJQTc3OTc5MTEwRDZC
OUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuaCAqLywKKwkJCQlBNzc5NzkxMjBENkI5
RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgKi8sCisJCQkJQTc3OTc5MTMwRDZC
OUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5jcHAgKi8sCisJCQkJQTc3OTc5MTQwRDZCOUQwQzAw
Mzg1MUI5IC8qIEltYWdlRGF0YS5oICovLAorCQkJCUE3Nzk3OTE1MEQ2QjlEMEMwMDM4NTFCOSAv
KiBJbWFnZURhdGEuaWRsICovLAogCQkJCTkzRUVDMUYwMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52
YXNHcmFkaWVudC5jcHAgKi8sCiAJCQkJOTNFRUMxRjEwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZh
c0dyYWRpZW50LmggKi8sCiAJCQkJOTMwQ0FCODgwOUM0OUVGQTAwMjI5QzA0IC8qIENhbnZhc0dy
YWRpZW50LmlkbCAqLywKQEAgLTEwMDMxLDYgKzEwMDU5LDEwIEBACiAJCUE4M0I3OTA4MENDQUZG
MkIwMDBCMDgyNSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlBNzc5NzkyMjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5
LmNwcCAqLywKKwkJCQlBNzc5NzkyMzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFy
cmF5LmggKi8sCisJCQkJQTc3OTc5MjQwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmNw
cCAqLywKKwkJCQlBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLywK
IAkJCQk2NURGMzIzMzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5jcHAgKi8s
CiAJCQkJNjVERjMyMzQwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuaCAqLywK
IAkJCQk2NURGMzIzNTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmNwcCAqLywK
QEAgLTExNTMyLDYgKzExNTY0LDcgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1
c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTc2
NkYzNTIwRDZCREUzNTAwQUJEREIzIC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAgKi8s
CiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCiAJ
CQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxl
Q3VzdG9tLmNwcCAqLywKQEAgLTE0MjQ5LDYgKzE0MjgyLDEwIEBACiAJCQkJQkNDNTczMzUwRDY5
NUJCRTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QzU3MzM4MEQ2OTVCRDcwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQzU3MzNBMEQ2OTVCRjEwMDZFRjUxNyAvKiBET01UZXh0UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc3OTc5MTcwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZh
c1BpeGVsQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFC
OSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Nzk3OTI3MEQ2QjlFNjQwMDM4
NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Nzk3OTI5
MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNDM2
MSw2ICsxNDM5OCw4IEBACiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNp
emVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1
MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQlB
Nzc5NzkxODBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgaW4gUmVzb3Vy
Y2VzICovLAorCQkJCUE3Nzk3OTFCMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaWRsIGlu
IFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE1ODQyLDYgKzE1ODgxLDExIEBACiAJCQkJQzAyOTRERjMwRDVB
NkZEODAwQ0M3RDZCIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCQ0M1NzMzNjBENjk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NF
dmVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE3Nzk3OTE2MEQ2QjlEMEMwMDM4NTFCOSAvKiBD
YW52YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Nzk3OTE5MEQ2QjlEMEMw
MDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc3OTc5MjYwRDZC
OUU2NDAwMzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNzc5NzkyODBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTc2NkYzNTMwRDZCREUzNTAwQUJEREIzIC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNQaXhlbEFycmF5Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45N2Y5OWI2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZh
c1BpeGVsQXJyYXlDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU0NhbnZhc1BpeGVsQXJyYXkuaCIKKworI2luY2x1ZGUgIkNhbnZhc1Bp
eGVsQXJyYXkuaCIKKwordXNpbmcgbmFtZXNwYWNlIEtKUzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitKU1ZhbHVlKiBKU0NhbnZhc1BpeGVsQXJyYXk6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZh
bHNlOworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleCgmcmVz
dWx0KTsKKyAgICBKU0NhbnZhc1BpeGVsQXJyYXkqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU0Nh
bnZhc1BpeGVsQXJyYXkqPihzbG90LnNsb3RCYXNlKCkpOworICAgIENhbnZhc1BpeGVsQXJyYXkq
IGFycmF5ID0gdGhpc09iai0+aW1wbCgpOworICAgIGlmICghcmVzdWx0IHx8IGluZGV4ID49IGFy
cmF5LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IGpzTnVtYmVyKGFycmF5LT5kYXRhKClbaW5kZXhdKTsKK30KKwordm9pZCBKU0NhbnZhc1BpeGVs
QXJyYXk6OmluZGV4U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUqIHZhbHVlLCBpbnQpCit7CisgICAgaWYgKGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgcHZhbHVlID0gdmFsdWUtPnRvTnVtYmVyKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
aW1wbC0+c2V0KGluZGV4LCBwdmFsdWUpOyAKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcAppbmRleCA2ODMyOGY0Li40YTYzOTBmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApA
QCAtMzMzLDQgKzMzMyw5IEBAIEpTVmFsdWUqIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGVQYXR0ZXJuKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYKICAgICByZXR1cm4gMDsK
IH0KIAorSlNWYWx1ZSogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDQzZTAyYTkuLjEyMjk3ODAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzM0LDEwICszMzQs
MTggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBEZXN0cnVjdG9yCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIH4kY2xhc3NOYW1lKCk7XG4iKSBpZiAoISRoYXNQYXJl
bnQgb3IgJGludGVyZmFjZU5hbWUgZXEgIkRvY3VtZW50Iik7CiAKKyAgICBteSAkaGFzR2V0dGVy
ID0gJG51bUF0dHJpYnV0ZXMgPiAwIAorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn0gCisgICAgICAgICAgICAg
ICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0K
KyAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFz
Q3VzdG9tSW5kZXhHZXR0ZXIifQorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QifQorICAgICAgICAgICAg
ICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOYW1lR2V0dGVyIn0K
KyAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFz
T3ZlcnJpZGluZ05hbWVHZXR0ZXIifTsKKwogICAgICMgR2V0dGVycwotICAgIGlmICgkbnVtQXR0
cmlidXRlcyA+IDAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVD
b25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEtKUzo6RXhl
Y1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpQcm9wZXJ0eVNsb3QmKTtcbiIp
OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogZ2V0VmFs
dWVQcm9wZXJ0eShLSlM6OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVy
dHkoS0pTOjpFeGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0O1xuIikgaWYgJG51bUF0dHJpYnV0
ZXMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlQ29uc3Ry
dWN0b3IifTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGN1c3RvbUdl
dE93blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYs
IEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QifTsKICAgICB9CiAKQEAgLTM0OSw5ICszNTcs
MTYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBwdXQoS0pTOjpFeGVjU3RhdGUqLCBjb25z
dCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0ciA9IEtKUzo6Tm9uZSk7
XG4iKSBpZiAoJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSk7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBpbnQsIEtKUzo6
SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpIGlmICRoYXNSZWFkV3JpdGVQcm9wZXJ0aWVzOwotICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBjdXN0b21QdXQoS0pTOjpFeGVjU3RhdGUq
LCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0cik7XG4iKSBp
ZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlvbiJ9Owor
ICAgIG15ICRoYXNTZXR0ZXIgPSAkaGFzUmVhZFdyaXRlUHJvcGVydGllcworICAgICAgICAgICAg
ICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlv
biJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn07CisKKyAgICAjIEdldHRlcnMKKyAgICBpZiAoJGhhc1Nl
dHRlcikgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBw
dXQoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUq
LCBpbnQgYXR0ciA9IEtKUzo6Tm9uZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBpbnQsIEtKUzo6
SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpIGlmICRoYXNSZWFkV3JpdGVQcm9wZXJ0aWVzOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgY3VzdG9tUHV0KEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIpO1xu
IikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24i
fTsKKyAgICB9CiAKICAgICAjIENsYXNzIGluZm8KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0
dXJuICZpbmZvOyB9XG4iKTsKQEAgLTM3Myw3ICszODgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0
eShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYpO1xuIikgaWYgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVsZXRlUHJvcGVydHkifTsKIAogICAg
ICMgQ3VzdG9tIGdldFByb3BlcnR5TmFtZXMgZnVuY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEtKUzo6RXhlY1N0YXRlKiwg
S0pTOjpQcm9wZXJ0eU5hbWVBcnJheSYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEtKUzo6RXhlY1N0YXRlKiwgS0pT
OjpQcm9wZXJ0eU5hbWVBcnJheSYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0pOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgYm9vbCBjdXN0b21HZXRQcm9wZXJ0eU5hbWVzKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpQ
cm9wZXJ0eU5hbWVBcnJheSYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tR2V0UHJvcGVydHlOYW1lcyJ9OwogCiAgICAgIyBDb25zdHJ1Y3RvciBvYmplY3Qg
Z2V0dGVyCkBAIC00NTAsMTAgKzQ2NSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB9
CiAgICAgfQogCi0gICAgIyBJbmRleCBzZXR0ZXIKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhTZXR0ZXIifSkgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHZvaWQgaW5kZXhTZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCB1bnNp
Z25lZCBpbmRleCwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIpO1xuIik7Ci0gICAgfQogCiAgICAg
aWYgKCEkaGFzUGFyZW50KSB7CiAgICAgICAgIGlmICgkcG9kVHlwZSkgewpAQCAtNDc4LDEwICs0
ODksMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgIyBJbmRleCBnZXR0ZXIK
LSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIi
fSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOworICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0pIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgS0pTOjpKU1ZhbHVlKiBp
bmRleEdldHRlcihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNPYmplY3QqLCBjb25zdCBLSlM6Oklk
ZW50aWZpZXImLCBjb25zdCBLSlM6OlByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgfQorCisgICAg
IyBJbmRleCBzZXR0ZXIKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzQ3VzdG9tSW5kZXhTZXR0ZXIifSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHZvaWQgaW5kZXhTZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgS0pT
OjpKU1ZhbHVlKiwgaW50IGF0dHIpO1xuIik7CisgICAgfQogICAgICMgTmFtZSBnZXR0ZXIKICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9IHx8
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc092ZXJyaWRpbmdOYW1lR2V0dGVy
In0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKQEAgLTU5
Miw3ICs2MDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxD
b250ZW50SGVhZGVyLCAiI2luY2x1ZGUgXCIkY2xhc3NOYW1lLmhcIlxuXG4iKTsKICAgICBwdXNo
KEBpbXBsQ29udGVudEhlYWRlciwgIiNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+XG5cbiIpOwogCi0g
ICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW5jbHVkZSA8a2pzL1Byb3BlcnR5TmFtZUFy
cmF5Lmg+XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdl
dHRlciJ9OworICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2luY2x1ZGUgPGtqcy9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPlxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXND
dXN0b21JbmRleEdldHRlciJ9OwogCiAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRpbnRlcmZhY2VO
YW1lKTsKIApAQCAtODI4LDggKzg0MywxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9y
Z2V0RE9NT2JqZWN0KHN0YXRpY19jYXN0PCR7aW1wbENsYXNzTmFtZX0qPihpbXBsKCkpKTtcbn1c
blxuIik7CiAgICAgfQogCisgICAgbXkgJGhhc0dldHRlciA9ICRudW1BdHRyaWJ1dGVzID4gMCAK
KyAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2Vu
ZXJhdGVDb25zdHJ1Y3RvciJ9IAorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0KKyAg
ICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0T3duUHJvcGVydHlTbG90In0KKyAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc092ZXJyaWRpbmdOYW1lR2V0dGVyIn07
CisKICAgICAjIEF0dHJpYnV0ZXMKLSAgICBpZiAoJG51bUF0dHJpYnV0ZXMgbmUgMCkgeworICAg
IGlmICgkaGFzR2V0dGVyKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2Ns
YXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CiAKQEAgLTg1MSw3ICs4NzQsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgJiRoYXNOYW1lR2V0dGVyR2VuZXJhdGlvbigp
OwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJHJlcXVpcmVzTWFudWFsTG9va3VwID0gJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOYW1lR2V0dGVyIn07CisgICAgICAgIG15ICRyZXF1
aXJlc01hbnVhbExvb2t1cCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0lu
ZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdl
dHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4
R2V0dGVyIn07CiAgICAgICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBMb29r
dXA6OmZpbmRFbnRyeSgmJHtjbGFzc05hbWV9VGFibGUsIHByb3BlcnR5TmFtZSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChlbnRyeSkge1xuIik7CkBAIC04
NjAsNyArODgzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0pIHsKKyAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIi
fSkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBvaztcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQgaW5kZXggPSBwcm9w
ZXJ0eU5hbWUudG9VSW50MzIoJm9rLCBmYWxzZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChvayAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NO
YW1lKj4oaW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwpAQCAtODc4LDEwMSArOTAxLDExMCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCRyZXF1aXJlc01hbnVhbExvb2t1cCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgkbnVtQXR0cmlidXRl
cyA+IDApIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywgJiR7Y2xhc3NOYW1lfVRhYmxl
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU1ZhbHVlKiAke2NsYXNzTmFtZX06OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgdG9rZW4pIGNvbnN0XG57XG4iKTsKKyAgICAgICAgaWYgKCRudW1BdHRyaWJ1dGVz
ID4gMCkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlKiAke2NsYXNz
TmFtZX06OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgc3dpdGNoICh0b2tlbikge1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzd2l0Y2ggKHRva2VuKSB7XG4iKTsKIAotICAgICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewotICAg
ICAgICAgICAgbXkgJGdldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2Zp
cnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgICAg
IG15ICRnZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwogCi0gICAgICAgICAgICBteSAkaW1wbENsYXNzTmFt
ZUZvclZhbHVlQ29udmVyc2lvbiA9ICIiOwotICAgICAgICAgICAgaWYgKCEkcG9kVHlwZSBhbmQg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW1wbENsYXNzTmFtZSkgb3IgJGF0
dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LykpIHsKLSAgICAgICAgICAgICAgICAkaW1wbENs
YXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiA9ICRpbXBsQ2xhc3NOYW1lOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIG15ICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uID0g
IiI7CisgICAgICAgICAgICAgICAgaWYgKCEkcG9kVHlwZSBhbmQgKCRjb2RlR2VuZXJhdG9yLT5J
c1NWR0FuaW1hdGVkVHlwZSgkaW1wbENsYXNzTmFtZSkgb3IgJGF0dHJpYnV0ZS0+dHlwZSAhfiAv
XnJlYWRvbmx5LykpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxDbGFzc05hbWVGb3JWYWx1
ZUNvbnZlcnNpb24gPSAkaW1wbENsYXNzTmFtZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKLSAgICAgICAgICAgICAgICAu
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3Ry
dWN0b3IiIDogIiIpCi0gICAgICAgICAgICAgICAgLiAiQXR0ck51bToge1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKQorICAgICAgICAgICAgICAg
ICAgICAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAi
Q29uc3RydWN0b3IiIDogIiIpCisgICAgICAgICAgICAgICAgICAgIC4gIkF0dHJOdW06IHtcbiIp
OwogCi0gICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tEb21haW5TZWN1cml0eSJ9ICYmIAotICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSAm
JgotICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHlPbkdldCJ9KSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVj
KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0
eSJ9ICYmIAorICAgICAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0gJiYKKyAgICAgICAg
ICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eU9uR2V0In0pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSlc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuICRnZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYyk7XG4iKTsKLSAgICAgICAgICAgIH0g
ZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNr
Tm9kZVNlY3VyaXR5In0pIHsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9t
LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRp
bXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpKSA/ICIg
LiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFt
ZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlv
bk5hbWUoKSIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRnJhbWVT
ZWN1cml0eSJ9KSB7Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRG9jdW1lbnQuaCJ9
ID0gMTsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1l
KiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGNoZWNrTm9kZVNl
Y3VyaXR5KGV4ZWMsIGltcC0+Y29udGVudERvY3VtZW50KCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05h
bWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIpIC4gIiA6
IGpzVW5kZWZpbmVkKCk7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewotICAgICAgICAgICAgICAgIG15ICRj
b25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMv
Q29uc3RydWN0b3IkLy87Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhl
Yyk7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2Vw
dGlvbnN9KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGVxICJmbG9hdCIpIHsgIyBT
cGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAiKSAuICI7XG4iKTsK
KyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiAkZ2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMpO1xuIik7
CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2hlY2tOb2RlU2VjdXJpdHkifSkgeworICAgICAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nh
c3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywg
aW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVl
Q29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpIikgLiAiIDoganNVbmRlZmlu
ZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRnJhbWVTZWN1cml0eSJ9KSB7CisgICAgICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRvY3VtZW50LmgifSA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBz
dGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0
eShleGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9y
VmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1Vu
ZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CisgICAgICAgICAgICAgICAgICAgIG15
ICRjb25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgJGNvbnN0cnVjdG9yVHlw
ZSA9fiBzL0NvbnN0cnVjdG9yJC8vOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25z
dHJ1Y3RvcihleGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1
dGUtPmdldHRlckV4Y2VwdGlvbnN9KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlw
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRwb2RUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxD
bGFzc05hbWUsICIiLCAiaW1wIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
IDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcC4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICI7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRp
bXBsQ2xhc3NOYW1lLCAiIiwgImltcC4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICI7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1w
bENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5T
dHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwg
ImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpIik7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBSZWZQdHI8JHR5
cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgb2JqLmdldCgpLCBpbXAp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJGpzVHlwZTtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENs
YXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsK
LSAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVl
Q29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgUmVmUHRy
PCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgb2JqLmdldCgpLCBpbXAp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOworCisgICAgICAgICAgICAgICAgICAgIGlmICgkcG9k
VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5h
dGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAi
IiwgImltcC4kZ2V0dGVyRnVuY3Rpb25OYW1lKGVjKSIpIC4gIjtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiAkanNUeXBlO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRp
Y19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0g
IiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NO
YW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0
aW9uTmFtZShlYykiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAKLSAgICAgICAg
ICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQg
PSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFz
c05hbWUsICIiLCAiaW1wLiRnZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZSo+KGltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZv
clZhbHVlQ29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZShlYykiKSAuICI7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gcmVzdWx0O1xuIik7CisgICAgICAgICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9KSB7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSBDb25zdHJ1Y3RvckF0
dHJOdW06XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGdldENvbnN0cnVjdG9yKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAgICAgICAgfQogCi0gICAgICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9y
In0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgQ29uc3RydWN0
b3JBdHRyTnVtOlxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGdldENvbnN0cnVjdG9yKGV4ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgIH0KIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIDA7XG59XG5cbiIpOwotCiAgICAg
ICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSBhbnkgd3JpdGFibGUgYXR0cmlidXRlcwogICAgICAgICBt
eSAkaGFzUmVhZFdyaXRlUHJvcGVydGllcyA9IDA7CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJp
YnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAkaGFzUmVhZFdy
aXRlUHJvcGVydGllcyA9IDEgaWYgJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LzsKICAg
ICAgICAgfQotICAgICAgICBpZiAoJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMgfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgeworCisgICAgICAg
IG15ICRoYXNTZXR0ZXIgPSAkaGFzUmVhZFdyaXRlUHJvcGVydGllcworICAgICAgICAgICAgICAg
ICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rp
b24ifQorICAgICAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSGFzQ3VzdG9tSW5kZXhTZXR0ZXIifTsKKworICAgICAgICBpZiAoJGhhc1NldHRlcikg
ewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
KiB2YWx1ZSwgaW50IGF0dHIpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzQ3VzdG9tSW5kZXhTZXR0ZXIifSkgewpAQCAtOTg3LDYgKzEwMTksNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChjdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cikpXG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICgkaGFzUmVhZFdyaXRlUHJvcGVydGllcykg
ewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGxvb2t1cFB1dDwkY2xh
c3NOYW1lLCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAmJHtjbGFzc05h
bWV9VGFibGUsIHRoaXMpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTA2MiwxNCAr
MTA5NSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3Bl
cnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdl
dHRlciJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bUdldFByb3BlcnR5TmFtZXMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJI
YXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1
c3RvbUluZGV4R2V0dGVyIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7
Y2xhc3NOYW1lfTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21HZXRQcm9wZXJ0eU5hbWVzIn0pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChjdXN0b21HZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMpKVxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn0pIHsKKyAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIifSkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PCR7aW1wbENsYXNz
TmFtZX0qPihpbXBsKCkpLT5sZW5ndGgoKTsgKytpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShp
KSk7XG4iKTsKICAgICAgICAgfQpAQCAtMTczNSw3ICsxNzY4LDcgQEAgc3ViIFdyaXRlRGF0YQog
ICAgICAgICBjbG9zZSgkSU1QTCk7CiAgICAgICAgIHVuZGVmKCRJTVBMKTsKIAotICAgICAgICBA
aW1wbEhlYWRlckNvbnRlbnQgPSAoKTsKKyAgICAgICAgQGltcGxDb250ZW50SGVhZGVyID0gKCk7
CiAgICAgICAgIEBpbXBsQ29udGVudCA9ICgpOwogICAgICAgICAlaW1wbEluY2x1ZGVzID0gKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwIGIv
V2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU2ODE2OWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQ2Fu
dmFzUGl4ZWxBcnJheS5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQ
YXNzUmVmUHRyPENhbnZhc1BpeGVsQXJyYXk+IENhbnZhc1BpeGVsQXJyYXk6OmNyZWF0ZSh1bnNp
Z25lZCBzaXplKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzUGl4ZWxBcnJheShz
aXplKSk7Cit9CisKK0NhbnZhc1BpeGVsQXJyYXk6OkNhbnZhc1BpeGVsQXJyYXkodW5zaWduZWQg
c2l6ZSkKKyAgICA6IFJlZkNvdW50ZWQ8Q2FudmFzUGl4ZWxBcnJheT4oKQorICAgICwgbV9kYXRh
KHNpemUpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFy
cmF5LmggYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTQwYTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvQ2FudmFzUGl4ZWxBcnJheS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2FudmFzUGl4
ZWxBcnJheV9oCisjZGVmaW5lIENhbnZhc1BpeGVsQXJyYXlfaAorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIENhbnZhc1Bp
eGVsQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNQaXhlbEFycmF5PiB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBjcmVhdGUo
dW5zaWduZWQgc2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgZGF0YSgpIHsg
cmV0dXJuIG1fZGF0YTsgfQorICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuc2l6ZSgpOyB9CisgICAgICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3Vi
bGUgdmFsdWUpIHsKKyAgICAgICAgICAgIGlmICghKHZhbHVlID4gMCkpCisgICAgICAgICAgICAg
ICAgdmFsdWUgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPiAyNTUpCisgICAgICAg
ICAgICAgICAgdmFsdWUgPSAyNTU7CisgICAgICAgICAgICBtX2RhdGFbaW5kZXhdID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4ocm91bmQodmFsdWUpKTsKKyAgICAgICAgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgQ2FudmFzUGl4ZWxBcnJheSh1bnNpZ25lZCBzaXplKTsKKyAgICAgICAg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2FudmFzUGl4ZWxBcnJheV9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5pZGwgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4
ZWxBcnJheS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI4ZmZmOAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmlkbApAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBI
YXNDdXN0b21JbmRleEdldHRlciwKKyAgICAgICAgSGFzQ3VzdG9tSW5kZXhTZXR0ZXIKKyAgICBd
IENhbnZhc1BpeGVsQXJyYXkgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5n
dGg7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCAzMjdhNDNlLi5kYWIzODc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgi
CisjaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC00
MSw2ICs0Miw4IEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlckhUTUxDYW52YXMuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgpAQCAtMTE2Miw0ICsxMTY1LDQxIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBzdGF0ZSgpLm1fYXBwbGllZEZpbGxQYXR0ZXJuID0g
dHJ1ZTsKIH0KIAorc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdl
RGF0YShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBk
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICBtZW1zZXQoZGF0YS0+ZGF0YSgpLT5kYXRhKCkuZGF0YSgpLCAwLCBkYXRhLT5kYXRhKCktPmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworUGFzc1JlZlB0cjxJbWFnZURhdGE+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlSW1hZ2VEYXRhKGZsb2F0IHN3LCBmbG9hdCBz
aCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgdW5zY2FsZWRTaXplKHN3LCBzaCk7CisgICAgSW50
U2l6ZSBzY2FsZWRTaXplOworICAgIGlmIChtX2NhbnZhcykKKyAgICAgICAgc2NhbGVkU2l6ZSA9
IG1fY2FudmFzLT5jb252ZXJ0TG9naWNhbFRvRGV2aWNlKHVuc2NhbGVkU2l6ZSk7CisgICAgZWxz
ZQorICAgICAgICBzY2FsZWRTaXplID0gSW50U2l6ZShjZWlsZihzdyksIGNlaWxmKHNoKSk7Cisg
ICAgaWYgKHNjYWxlZFNpemUud2lkdGgoKSA8IDEpCisgICAgICAgIHNjYWxlZFNpemUuc2V0V2lk
dGgoMSk7CisgICAgaWYgKHNjYWxlZFNpemUuaGVpZ2h0KCkgPCAxKQorICAgICAgICBzY2FsZWRT
aXplLnNldEhlaWdodCgxKTsKKyAgICAKKyAgICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEo
c2NhbGVkU2l6ZSk7Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmdldEltYWdlRGF0YShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9h
dCBzaCkgY29uc3QKK3sKKyAgICBGbG9hdFJlY3QgdW5zY2FsZWRSZWN0KHN4LCBzeSwgc3csIHNo
KTsKKyAgICBJbnRSZWN0IHNjYWxlZFJlY3QgPSBtX2NhbnZhcyA/IG1fY2FudmFzLT5jb252ZXJ0
TG9naWNhbFRvRGV2aWNlKHVuc2NhbGVkUmVjdCkgOiBlbmNsb3NpbmdJbnRSZWN0KHVuc2NhbGVk
UmVjdCk7CisgICAgaWYgKHNjYWxlZFJlY3Qud2lkdGgoKSA8IDEpCisgICAgICAgIHNjYWxlZFJl
Y3Quc2V0V2lkdGgoMSk7CisgICAgaWYgKHNjYWxlZFJlY3QuaGVpZ2h0KCkgPCAxKQorICAgICAg
ICBzY2FsZWRSZWN0LnNldEhlaWdodCgxKTsKKyAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gbV9j
YW52YXMgPyBtX2NhbnZhcy0+YnVmZmVyKCkgOiAwOworICAgIGlmICghYnVmZmVyKQorICAgICAg
ICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoc2NhbGVkUmVjdC5zaXplKCkpOworICAgIHJl
dHVybiBidWZmZXItPmdldEltYWdlRGF0YShzY2FsZWRSZWN0KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDMw
ZjdhNTMuLmY0Y2M5MzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKICAgICBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKICAgICBjbGFzcyBIVE1MSW1h
Z2VFbGVtZW50OworICAgIGNsYXNzIEltYWdlRGF0YTsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKQEAgLTE2Miw3ICsxNjMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9h
dCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsK
ICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFn
ZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MQ2Fu
dmFzRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUm
KTsKLQorICAgICAgICAKKyAgICAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUltYWdl
RGF0YShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBjb25zdDsKKyAgICAgICAgUGFzc1JlZlB0
cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBm
bG9hdCBzaCkgY29uc3Q7CisgICAgICAgIAogICAgICAgICB2b2lkIHJlc2V0KCk7CiAgICAgICAg
IHZvaWQgZGV0YWNoQ2FudmFzKCkgeyBtX2NhbnZhcyA9IDA7IH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgYi9XZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAppbmRleCAzZDU2NmQ0Li5kNGVhNmUxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9XZWJD
b3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtMTAxLDcgKzEwMSwxMiBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgY3JlYXRlUGF0dGVybigvKiAy
ICovKTsKICAgICAgICAgCiAgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBjdXN0b20gc3Ryb2tl
U3R5bGU7Ci0gICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBjdXN0b20gZmlsbFN0eWxlOyAgICAg
ICAgCisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBjdXN0b20gZmlsbFN0eWxlOworICAgICAg
ICAKKyAgICAgICAgLy8gcGl4ZWwgbWFuaXB1bGF0aW9uCisgICAgICAgIEltYWdlRGF0YSBjcmVh
dGVJbWFnZURhdGEoaW4gZmxvYXQgc3csIGluIGZsb2F0IHNoKTsKKyAgICAgICAgSW1hZ2VEYXRh
IGdldEltYWdlRGF0YShpbiBmbG9hdCBzeCwgaW4gZmxvYXQgc3ksIGluIGZsb2F0IHN3LCBpbiBm
bG9hdCBzaCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIEltYWdl
RGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBkaXJ0
eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGlydHlI
ZWlnaHRdICovKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCBkNzExZmJmLi40NTg5NWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0SGVpZ2h0ID0gMTUwOwogLy8gRmly
ZWZveCBsaW1pdHMgd2lkdGgvaGVpZ2h0IHRvIDMyNzY3IHBpeGVscywgYnV0IHNsb3dzIGRvd24g
ZHJhbWF0aWNhbGx5IGJlZm9yZSBpdCAKIC8vIHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQg
YnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKIC8v
IGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4KLXN0YXRpYyBj
b25zdCBmbG9hdCBtYXhDYW52YXNBcmVhID0gMzI3NjggKiA4MTkyOyAvLyBNYXhpbXVtIGNhbnZh
cyBhcmVhIGluIENTUyBwaXhlbHMKK2NvbnN0IGZsb2F0IEhUTUxDYW52YXNFbGVtZW50OjpNYXhD
YW52YXNBcmVhID0gMzI3NjggKiA4MTkyOyAvLyBNYXhpbXVtIGNhbnZhcyBhcmVhIGluIENTUyBw
aXhlbHMKIAogSFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KERvY3VtZW50KiBk
b2MpCiAgICAgOiBIVE1MRWxlbWVudChjYW52YXNUYWcsIGRvYykKQEAgLTE4NSwyNCArMTg1LDQy
IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29u
c3QgSW50UmVjdCYgcikKICAgICAgICAgcC0+cGFpbnRCdWZmZXIobV9pbWFnZUJ1ZmZlci5nZXQo
KSwgcik7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkg
Y29uc3QKK0ludFJlY3QgSFRNTENhbnZhc0VsZW1lbnQ6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2Uo
Y29uc3QgRmxvYXRSZWN0JiBsb2dpY2FsUmVjdCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1fY3Jl
YXRlZEltYWdlQnVmZmVyKTsKLSAgICBBU1NFUlQoIW1faW1hZ2VCdWZmZXIpOwotCi0gICAgbV9j
cmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOworICAgIHJldHVybiBJbnRSZWN0KGNvbnZlcnRMb2dp
Y2FsVG9EZXZpY2UobG9naWNhbFJlY3QubG9jYXRpb24oKSksIGNvbnZlcnRMb2dpY2FsVG9EZXZp
Y2UobG9naWNhbFJlY3Quc2l6ZSgpKSk7Cit9CiAKLSAgICBmbG9hdCB1bnNjYWxlZFdpZHRoID0g
d2lkdGgoKTsKLSAgICBmbG9hdCB1bnNjYWxlZEhlaWdodCA9IGhlaWdodCgpOworSW50U2l6ZSBI
VE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplKSBjb25zdAorewogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkgPyBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5z
Y2FsZUZhY3RvcigpIDogMS4wZjsKLSAgICBmbG9hdCB3ZiA9IGNlaWxmKHVuc2NhbGVkV2lkdGgg
KiBwYWdlU2NhbGVGYWN0b3IpOwotICAgIGZsb2F0IGhmID0gY2VpbGYodW5zY2FsZWRIZWlnaHQg
KiBwYWdlU2NhbGVGYWN0b3IpOworICAgIGZsb2F0IHdmID0gY2VpbGYobG9naWNhbFNpemUud2lk
dGgoKSAqIHBhZ2VTY2FsZUZhY3Rvcik7CisgICAgZmxvYXQgaGYgPSBjZWlsZihsb2dpY2FsU2l6
ZS5oZWlnaHQoKSAqIHBhZ2VTY2FsZUZhY3Rvcik7CisgICAgCisgICAgaWYgKCEod2YgPj0gMSAm
JiBoZiA+PSAxICYmIHdmICogaGYgPD0gTWF4Q2FudmFzQXJlYSkpCisgICAgICAgIHJldHVybiBJ
bnRTaXplKCk7CiAKLSAgICBpZiAoISh3ZiA+PSAxICYmIGhmID49IDEgJiYgd2YgKiBoZiA8PSBt
YXhDYW52YXNBcmVhKSkKLSAgICAgICAgcmV0dXJuOworICAgIHJldHVybiBJbnRTaXplKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih3ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZikpOworfQorCitJ
bnRQb2ludCBIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBG
bG9hdFBvaW50JiBsb2dpY2FsUG9zKSBjb25zdAoreworICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
ciA9IGRvY3VtZW50KCktPmZyYW1lKCkgPyBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmNo
cm9tZSgpLT5zY2FsZUZhY3RvcigpIDogMS4wZjsKKyAgICBmbG9hdCB4ZiA9IGxvZ2ljYWxQb3Mu
eCgpICogcGFnZVNjYWxlRmFjdG9yOworICAgIGZsb2F0IHlmID0gbG9naWNhbFBvcy55KCkgKiBw
YWdlU2NhbGVGYWN0b3I7CisgICAgCisgICAgcmV0dXJuIEludFBvaW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPih4ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ZikpOworfQogCi0gICAgSW50U2l6
ZSBzaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPih3ZiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPiho
ZikpOwordm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAor
eworICAgIEFTU0VSVCghbV9pbWFnZUJ1ZmZlcik7CiAKKyAgICBtX2NyZWF0ZWRJbWFnZUJ1ZmZl
ciA9IHRydWU7CisgICAgCisgICAgRmxvYXRTaXplIHVuc2NhbGVkU2l6ZSh3aWR0aCgpLCBoZWln
aHQoKSk7CisgICAgSW50U2l6ZSBzaXplID0gY29udmVydExvZ2ljYWxUb0RldmljZSh1bnNjYWxl
ZFNpemUpOworICAgIGlmICghc2l6ZS53aWR0aCgpIHx8ICFzaXplLmhlaWdodCgpKQorICAgICAg
ICByZXR1cm47CiAgICAgbV9pbWFnZUJ1ZmZlci5zZXQoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCBmYWxzZSkucmVsZWFzZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAw
ODM2ZjA5Li4yODc2YmUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAtNDUsOSArNDUs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ7CiB0eXBlZGVmIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OworY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEZsb2F0U2l6
ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgSW50
UG9pbnQ7CitjbGFzcyBJbnR0UmVjdDsKK2NsYXNzIEludFNpemU7CiAKIGNsYXNzIEhUTUxDYW52
YXNFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKQEAgLTgzLDcgKzg4LDEx
IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIGNhaXJvX3N1cmZhY2VfdCog
Y3JlYXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0OwogI2VuZGlmCi0KKyAgICAKKyAgICBJbnRSZWN0
IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CisgICAgSW50
U2l6ZSBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAg
IEludFBvaW50IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0
OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDYW52YXNBcmVhOwogcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3Q7CiAgICAgdm9pZCByZXNldCgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjY4NzUwCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorCisjaW5jbHVkZSAi
Q2FudmFzUGl4ZWxBcnJheS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8
SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEYXRhKHdpZHRoLCBoZWlnaHQp
KTsKK30KKworSW1hZ2VEYXRhOjpJbWFnZURhdGEodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCkKKyAgICA6IFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPigpCisgICAgLCBtX3dpZHRoKHdpZHRo
KQorICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICwgbV9kYXRhKENhbnZhc1BpeGVsQXJyYXk6
OmNyZWF0ZSh3aWR0aCAqIGhlaWdodCAqIDQpKQoreworICAgIAorfQorCit9CisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWFmMWY5Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SW1hZ2VEYXRhX2gKKyNkZWZpbmUgSW1hZ2VEYXRhX2gKKworI2luY2x1ZGUgIkNhbnZhc1BpeGVs
QXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3Jl
YXRlKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOworCisgICAgICAgIHVuc2lnbmVk
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgICAgICB1bnNpZ25lZCBoZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAgICAgICBDYW52YXNQaXhlbEFycmF5
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBJbWFnZURhdGEodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisgICAg
ICAgIHVuc2lnbmVkIG1fd2lkdGg7CisgICAgICAgIHVuc2lnbmVkIG1faGVpZ2h0OworICAgICAg
ICBSZWZQdHI8Q2FudmFzUGl4ZWxBcnJheT4gbV9kYXRhOworICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEltYWdlRGF0YV9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmlkbCBiL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmYxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBJ
bWFnZURhdGEgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQ2FudmFzUGl4ZWxBcnJheSBkYXRhOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBhMTkyOThlLi44NjljZDcxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaWYgUExBVEZPUk0oQ0cpCkBAIC00
Nyw2ICs0OCw4IEBAIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2Vf
dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAg
ICBjbGFzcyBJbWFnZURhdGE7CisgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZW5kZXJP
YmplY3Q7CiAKICAgICBjbGFzcyBJbWFnZUJ1ZmZlciA6IE5vbmNvcHlhYmxlIHsKQEAgLTY1LDYg
KzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UoKSBjb25zdDsKICNlbmRpZgogCisgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBn
ZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCogbV9kYXRhOwogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IDc3NjUyOWUuLjFmNjhjZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNzIsNSArNzIsMTAgQEAgY2Fpcm9fc3Vy
ZmFjZV90KiBJbWFnZUJ1ZmZlcjo6c3VyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFj
ZTsKIH0KIAorUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEo
Y29uc3QgSW50UmVjdCYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggMmQxYWMwMS4uZjQ1NmVjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSwgSW5jCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDYgKzI4LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKICNp
bmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtOTgsNCArMTAwLDYwIEBAIENHSW1hZ2VSZWYgSW1h
Z2VCdWZmZXI6OmNnSW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBtX2NnSW1hZ2U7CiB9CiAKK1Bh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJl
Y3QmIHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0
ZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEg
PSByZXN1bHQtPmRhdGEoKS0+ZGF0YSgpLmRhdGEoKTsKKyAgICAKKyAgICBpZiAocmVjdC54KCkg
PCAwIHx8IHJlY3QueSgpIDwgMCB8fCAocmVjdC54KCkgKyByZWN0LndpZHRoKCkpID4gbV9zaXpl
LndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkgPiBtX3NpemUuaGVpZ2h0KCkp
CisgICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmRhdGEoKS0+bGVuZ3RoKCkpOworCisg
ICAgaW50IG9yaWdpbnggPSByZWN0LngoKTsKKyAgICBpbnQgZGVzdHggPSAwOworICAgIGlmIChv
cmlnaW54IDwgMCkgeworICAgICAgICBkZXN0eCA9IC1vcmlnaW54OworICAgICAgICBvcmlnaW54
ID0gMDsKKyAgICB9CisgICAgaW50IGVuZHggPSByZWN0LngoKSArIHJlY3Qud2lkdGgoKTsKKyAg
ICBpZiAoZW5keCA+IG1fc2l6ZS53aWR0aCgpKQorICAgICAgICBlbmR4ID0gbV9zaXplLndpZHRo
KCk7CisgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gb3JpZ2lueDsKKyAgICAKKyAgICBpbnQg
b3JpZ2lueSA9IHJlY3QueSgpOworICAgIGludCBkZXN0eSA9IDA7CisgICAgaWYgKG9yaWdpbnkg
PCAwKSB7CisgICAgICAgIGRlc3R5ID0gLW9yaWdpbnk7CisgICAgICAgIG9yaWdpbnkgPSAwOwor
ICAgIH0KKyAgICBpbnQgZW5keSA9IHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKTsKKyAgICBpZiAo
ZW5keSA+IG1fc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgZW5keSA9IG1fc2l6ZS5oZWlnaHQoKTsK
KyAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBvcmlnaW55OworICAgIAorICAgIHVuc2lnbmVkIHNy
Y0J5dGVzUGVyUm93ID0gNCAqIG1fc2l6ZS53aWR0aCgpOworICAgIHVuc2lnbmVkIGRlc3RCeXRl
c1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7CisgICAgCisgICAgLy8gLW9yaWdpbnkgdG8gaGFu
ZGxlIHRoZSBhY2N1cnNlZCBmbGlwcGVkIHkgYXhpcworICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jv
d3MgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgKG1fc2l6ZS5o
ZWlnaHQoKSAtIG9yaWdpbnkgLSAxKSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Cisg
ICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJS
b3cgKyBkZXN0eCAqIDQ7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsK
KyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKKyAgICAgICAg
ICAgIGlmICh1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1szXSkgeworICAgICAgICAgICAg
ICAgIGRlc3RSb3dzWzBdID0gKHNyY1Jvd3NbMF0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAg
ICAgICAgZGVzdFJvd3NbMV0gPSAoc3JjUm93c1sxXSAqIDI1NSkgLyBhbHBoYTsKKyAgICAgICAg
ICAgICAgICBkZXN0Um93c1syXSA9IChzcmNSb3dzWzJdICogMjU1KSAvIGFscGhhOworICAgICAg
ICAgICAgICAgIGRlc3RSb3dzWzNdID0gYWxwaGE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cylbMF0gPSBy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cylbMF07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZXN0Um93cyArPSA0OworICAgICAgICB9CisgICAgICAgIHNyY1Jvd3MgLT0g
c3JjQnl0ZXNQZXJSb3c7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IGM5NWQ4
YzguLjk4YmIyMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VCdWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogCiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVBpeG1hcD4KQEAgLTY5LDQgKzcw
LDEwIEBAIFFQaXhtYXAqIEltYWdlQnVmZmVyOjpwaXhtYXAoKSBjb25zdAogICAgIHJldHVybiAm
bV9waXhtYXA7CiB9CiAKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0lt
YWdlQnVmZmVyV3guY3BwCmluZGV4IGJjNTRhODguLjJmOTMyNTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Myw0ICs0NCwxMCBAQCBHcmFwaGljc0NvbnRleHQqIEltYWdl
QnVmZmVyOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorUGFzc1JlZlB0cjxJ
bWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogfQo=
</data>
<flag name="review"
          id="8416"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19283</attachid>
            <date>2008-02-22 15:59:21 -0800</date>
            <delta_ts>2008-02-22 16:07:17 -0800</delta_ts>
            <desc>getImageData Redux</desc>
            <filename>getImageData.patch</filename>
            <type>text/plain</type>
            <size>86858</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YTg4ZDc0Li5lNmUzZDJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMDIt
MjIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTc0ODY6IFN1cHBvcnQgSFRNTDUgQ2Fu
dmFzLmdldEltYWdlRGF0YSBBUEkKKyAgICAgICAgU3VwcG9ydCBDYW52YXMuZ2V0SW1hZ2VEYXRh
IGFuZCBDYW52YXMuY3JlYXRlSW1hZ2VEYXRhCisKKyAgICAgICAgVGVzdCBjYXNlcyBmb3IgSW1h
Z2VEYXRhIGJlaGF2aW91ciBhbmQgZ2V0SW1hZ2VEYXRhIGNvcnJlY3RuZXNzCisKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZp
b3VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRh
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWdldElt
YWdlRGF0YS5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVo
YXZpb3VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
MGVhNDVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LUltYWdlRGF0YS1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1Nlcmll
cyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIgb2YgdGhlIEltYWdlRGF0YSBv
YmplY3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW1hZ2VEYXRhLndp
ZHRoIGlzIDIKK1BBU1MgaW1hZ2VEYXRhLmhlaWdodCBpcyAyCitQQVNTIGltYWdlRGF0YS5kYXRh
Lmxlbmd0aCBpcyAxNgorUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0
YS5kYXRhWzFdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBpbWFnZURh
dGEuZGF0YVszXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzRdIGlzIDAKK1BBU1MgaW1hZ2VE
YXRhLmRhdGFbNV0gaXMgMAorUEFTUyBpbWFnZURhdGEuZGF0YVs2XSBpcyAwCitQQVNTIGltYWdl
RGF0YS5kYXRhWzddIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbOF0gaXMgMAorUEFTUyBpbWFn
ZURhdGEuZGF0YVs5XSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzEwXSBpcyAwCitQQVNTIGlt
YWdlRGF0YS5kYXRhWzExXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzEyXSBpcyAwCitQQVNT
IGltYWdlRGF0YS5kYXRhWzEzXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzE0XSBpcyAwCitQ
QVNTIGltYWdlRGF0YS5kYXRhWzE1XSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gTmFO
LCBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gdHJ1ZSwg
aW1hZ2VEYXRhLmRhdGFbMF0gaXMgMQorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IGZhbHNlLCBp
bWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gImdhcmJhZ2Ui
LCBpbWFnZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLTEsIGlt
YWdlRGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMCIsIGltYWdl
RGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMSIsIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDEKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAiMiIsIGltYWdlRGF0YS5k
YXRhWzBdIGlzIDIKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSBJbmZpbml0eSwgaW1hZ2VEYXRh
LmRhdGFbMF0gaXMgMjU1CitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLUluZmluaXR5LCBpbWFn
ZURhdGEuZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gLTUsIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDAKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAtMC41LCBpbWFnZURhdGEu
ZGF0YVswXSBpcyAwCitQQVNTIGltYWdlRGF0YS5kYXRhWzBdID0gMCwgaW1hZ2VEYXRhLmRhdGFb
MF0gaXMgMAorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IDAuNSwgaW1hZ2VEYXRhLmRhdGFbMF0g
aXMgMQorUEFTUyBpbWFnZURhdGEuZGF0YVswXSA9IDUsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDUK
K1BBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSA1LjQsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDUKK1BB
U1MgaW1hZ2VEYXRhLmRhdGFbMF0gPSAyNTUsIGltYWdlRGF0YS5kYXRhWzBdIGlzIDI1NQorUEFT
UyBpbWFnZURhdGEuZGF0YVswXSA9IDI1NiwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMjU1CitQQVNT
IGltYWdlRGF0YS5kYXRhWzBdID0gbnVsbCwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBp
bWFnZURhdGEuZGF0YVswXSA9IHVuZGVmaW5lZCwgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAorUEFT
UyBpbWFnZURhdGEuZGF0YVsnZm9vJ109J2dhcmJhZ2UnLGltYWdlRGF0YS5kYXRhWydmb28nXSBp
cyAnZ2FyYmFnZScKK1BBU1MgaW1hZ2VEYXRhLmRhdGFbLTFdPSdnYXJiYWdlJyxpbWFnZURhdGEu
ZGF0YVstMV0gaXMgJ2dhcmJhZ2UnCitQQVNTIGltYWdlRGF0YS5kYXRhWzE3XT0nZ2FyYmFnZScs
aW1hZ2VEYXRhLmRhdGFbMTddIGlzIHVuZGVmaW5lZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE3MDNhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5odG1sCkBAIC0wLDAgKzEs
MTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyI+PC9j
YW52YXM+Cis8c2NyaXB0IHNyYz0iY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtSW1hZ2VEYXRhLWJlaGF2aW91ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kNWI5MTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLUltYWdlRGF0YS1iZWhhdmlvdXIuanMKQEAgLTAsMCArMSwyNyBAQAorZGVz
Y3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIgb2Yg
dGhlIEltYWdlRGF0YSBvYmplY3QiKTsKKworaW1hZ2VEYXRhID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKDAsMCwyLDIpOwor
CitzaG91bGRCZSgiaW1hZ2VEYXRhLndpZHRoIiwgIjIiKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEu
aGVpZ2h0IiwgIjIiKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEuZGF0YS5sZW5ndGgiLCAiMTYiKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VEYXRhLmRhdGEubGVuZ3RoOyBpKyspCisgICAgc2hv
dWxkQmUoImltYWdlRGF0YS5kYXRhWyIraSsiXSIsICIwIik7CisKK3ZhciB0ZXN0VmFsdWVzID0g
W05hTiwgdHJ1ZSwgZmFsc2UsICJcImdhcmJhZ2VcIiIsICItMSIsCisgICAgICAgICAgICAgICAg
ICAiXCIwXCIiLCAiXCIxXCIiLCAiXCIyXCIiLCBJbmZpbml0eSwgLUluZmluaXR5LAorICAgICAg
ICAgICAgICAgICAgLTUsIC0wLjUsIDAsIDAuNSwgNSwKKyAgICAgICAgICAgICAgICAgIDUuNCwg
MjU1LCAyNTYsIG51bGwsIHVuZGVmaW5lZF07Cit2YXIgdGVzdFJlc3VsdHMgPSBbMCwgMSwgMCwg
MCwgMCwKKyAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAyNTUsIDAsCisgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMSwgNSwKKyAgICAgICAgICAgICAgICAgICA1LCAyNTUsIDI1NSwgMCwg
MF07Citmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICBz
aG91bGRCZSgiaW1hZ2VEYXRhLmRhdGFbMF0gPSAiK3Rlc3RWYWx1ZXNbaV0rIiwgaW1hZ2VEYXRh
LmRhdGFbMF0iLCAiIit0ZXN0UmVzdWx0c1tpXSk7Cit9CisKK3Nob3VsZEJlKCJpbWFnZURhdGEu
ZGF0YVsnZm9vJ109J2dhcmJhZ2UnLGltYWdlRGF0YS5kYXRhWydmb28nXSIsICInZ2FyYmFnZSci
KTsKK3Nob3VsZEJlKCJpbWFnZURhdGEuZGF0YVstMV09J2dhcmJhZ2UnLGltYWdlRGF0YS5kYXRh
Wy0xXSIsICInZ2FyYmFnZSciKTsKK3Nob3VsZEJlKCJpbWFnZURhdGEuZGF0YVsxN109J2dhcmJh
Z2UnLGltYWdlRGF0YS5kYXRhWzE3XSIsICJ1bmRlZmluZWQiKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtZ2V0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1nZXRJbWFnZURhdGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjc3MGFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1MCBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBnZXRJbWFnZURhdGEgd29ya3MgY29ycmVjdGx5LgorUEFT
UzogcGl4ZWwgYXQgKDAsMCkgd2FzIFswLDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNCwwKSB3
YXMgWzAsMTEsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOCwwKSB3YXMgWzAsMjEsMCwyNTVdCitQ
QVNTOiBwaXhlbCBhdCAoMTIsMCkgd2FzIFswLDMyLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDE2
LDApIHdhcyBbMCw0MywwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICgyMCwwKSB3YXMgWzAsNTMsMCwy
NTVdCitQQVNTOiBwaXhlbCBhdCAoMjQsMCkgd2FzIFswLDY0LDAsMjU1XQorUEFTUzogcGl4ZWwg
YXQgKDI4LDApIHdhcyBbMCw3NCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICgzMiwwKSB3YXMgWzAs
ODUsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoMzYsMCkgd2FzIFswLDk2LDAsMjU1XQorUEFTUzog
cGl4ZWwgYXQgKDQwLDApIHdhcyBbMCwxMDYsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoNDQsMCkg
d2FzIFswLDExNywwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg0OCwwKSB3YXMgWzAsMTI4LDAsMjU1
XQorUEFTUzogcGl4ZWwgYXQgKDUyLDApIHdhcyBbMCwxMzgsMCwyNTVdCitQQVNTOiBwaXhlbCBh
dCAoNTYsMCkgd2FzIFswLDE0OSwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg2MCwwKSB3YXMgWzAs
MTU5LDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDY0LDApIHdhcyBbMCwxNzAsMCwyNTVdCitQQVNT
OiBwaXhlbCBhdCAoNjgsMCkgd2FzIFswLDE4MSwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg3Miww
KSB3YXMgWzAsMTkxLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDc2LDApIHdhcyBbMCwyMDIsMCwy
NTVdCitQQVNTOiBwaXhlbCBhdCAoODAsMCkgd2FzIFswLDIxMywwLDI1NV0KK1BBU1M6IHBpeGVs
IGF0ICg4NCwwKSB3YXMgWzAsMjIzLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDg4LDApIHdhcyBb
MCwyMzQsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOTIsMCkgd2FzIFswLDI0NCwwLDI1NV0KK1BB
U1M6IHBpeGVsIGF0ICg5NiwwKSB3YXMgWzAsMjU1LDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDUs
NSkgd2FzIFs2NCwxMjgsMTkxLDI1NV0KK1BBU1M6IENvcnJlY3QgZGF0YSBmb3IgY29udGVudCBv
dXRzaWRlIGNhbnZhcyBib3VuZHMKK1BBU1M6IHBpeGVsIGF0ICg1MCw1MCkgd2FzIFswLDAsMCww
XQorUEFTUzogcGl4ZWwgYXQgKDUwLDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAo
NTAsNTgpIHdhcyBbMCwwLDAsMl0KK1BBU1M6IHBpeGVsIGF0ICg1MCw2Mikgd2FzIFswLDAsMCwx
Nl0KK1BBU1M6IHBpeGVsIGF0ICg1MCw2Nikgd2FzIFswLDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0
ICg1MCw3MCkgd2FzIFswLDAsMCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg1MCw3NCkgd2FzIFswLDAs
MCw5Nl0KK1BBU1M6IHBpeGVsIGF0ICg1MCw3OCkgd2FzIFswLDAsMCwxMjhdCitQQVNTOiBwaXhl
bCBhdCAoNTAsODIpIHdhcyBbMCwwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDUwLDg2KSB3YXMg
WzAsMCwwLDI1NF0KK1BBU1M6IHBpeGVsIGF0ICg1MCw5MCkgd2FzIFswLDAsMCwyNTVdCitQQVNT
OiBwaXhlbCBhdCAoNTQsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg1NCw1NCkg
d2FzIFswLDAsMCwxXQorUEFTUzogcGl4ZWwgYXQgKDU0LDU4KSB3YXMgWzAsMCwwLDJdCitQQVNT
OiBwaXhlbCBhdCAoNTQsNjIpIHdhcyBbMCwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNTQsNjYp
IHdhcyBbMCwwLDAsMzJdCitQQVNTOiBwaXhlbCBhdCAoNTQsNzApIHdhcyBbMCwwLDAsNjRdCitQ
QVNTOiBwaXhlbCBhdCAoNTQsNzQpIHdhcyBbMCwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoNTQs
NzgpIHdhcyBbMSwwLDAsMTI4XQorUEFTUzogcGl4ZWwgYXQgKDU0LDgyKSB3YXMgWzEsMCwwLDE5
Ml0KK1BBU1M6IHBpeGVsIGF0ICg1NCw4Nikgd2FzIFsxLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBh
dCAoNTQsOTApIHdhcyBbMSwwLDAsMjU1XQorUEFTUzogcGl4ZWwgYXQgKDU4LDUwKSB3YXMgWzAs
MCwwLDBdCitQQVNTOiBwaXhlbCBhdCAoNTgsNTQpIHdhcyBbMCwwLDAsMV0KK1BBU1M6IHBpeGVs
IGF0ICg1OCw1OCkgd2FzIFswLDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDU4LDYyKSB3YXMgWzAs
MCwwLDE2XQorUEFTUzogcGl4ZWwgYXQgKDU4LDY2KSB3YXMgWzAsMCwwLDMyXQorUEFTUzogcGl4
ZWwgYXQgKDU4LDcwKSB3YXMgWzMsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQgKDU4LDc0KSB3YXMg
WzIsMCwwLDk2XQorUEFTUzogcGl4ZWwgYXQgKDU4LDc4KSB3YXMgWzEsMCwwLDEyOF0KK1BBU1M6
IHBpeGVsIGF0ICg1OCw4Mikgd2FzIFsyLDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNTgsODYp
IHdhcyBbMiwwLDAsMjU0XQorUEFTUzogcGl4ZWwgYXQgKDU4LDkwKSB3YXMgWzIsMCwwLDI1NV0K
K1BBU1M6IHBpeGVsIGF0ICg2Miw1MCkgd2FzIFswLDAsMCwwXQorUEFTUzogcGl4ZWwgYXQgKDYy
LDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAoNjIsNTgpIHdhcyBbMCwwLDAsMl0K
K1BBU1M6IHBpeGVsIGF0ICg2Miw2Mikgd2FzIFsxNSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAo
NjIsNjYpIHdhcyBbMTUsMCwwLDMyXQorUEFTUzogcGl4ZWwgYXQgKDYyLDcwKSB3YXMgWzE1LDAs
MCw2NF0KK1BBU1M6IHBpeGVsIGF0ICg2Miw3NCkgd2FzIFsxNSwwLDAsOTZdCitQQVNTOiBwaXhl
bCBhdCAoNjIsNzgpIHdhcyBbMTUsMCwwLDEyOF0KK1BBU1M6IHBpeGVsIGF0ICg2Miw4Mikgd2Fz
IFsxNSwwLDAsMTkyXQorUEFTUzogcGl4ZWwgYXQgKDYyLDg2KSB3YXMgWzE2LDAsMCwyNTRdCitQ
QVNTOiBwaXhlbCBhdCAoNjIsOTApIHdhcyBbMTYsMCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg2
Niw1MCkgd2FzIFswLDAsMCwwXQorUEFTUzogcGl4ZWwgYXQgKDY2LDU0KSB3YXMgWzAsMCwwLDFd
CitQQVNTOiBwaXhlbCBhdCAoNjYsNTgpIHdhcyBbMCwwLDAsMl0KK1BBU1M6IHBpeGVsIGF0ICg2
Niw2Mikgd2FzIFszMSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNjYsNjYpIHdhcyBbMzEsMCww
LDMyXQorUEFTUzogcGl4ZWwgYXQgKDY2LDcwKSB3YXMgWzMxLDAsMCw2NF0KK1BBU1M6IHBpeGVs
IGF0ICg2Niw3NCkgd2FzIFszMSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoNjYsNzgpIHdhcyBb
MzEsMCwwLDEyOF0KK1BBU1M6IHBpeGVsIGF0ICg2Niw4Mikgd2FzIFszMSwwLDAsMTkyXQorUEFT
UzogcGl4ZWwgYXQgKDY2LDg2KSB3YXMgWzMyLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBhdCAoNjYs
OTApIHdhcyBbMzIsMCwwLDI1NV0KK1BBU1M6IHBpeGVsIGF0ICg3MCw1MCkgd2FzIFswLDAsMCww
XQorUEFTUzogcGl4ZWwgYXQgKDcwLDU0KSB3YXMgWzAsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAo
NzAsNTgpIHdhcyBbMTI3LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDcwLDYyKSB3YXMgWzYzLDAs
MCwxNl0KK1BBU1M6IHBpeGVsIGF0ICg3MCw2Nikgd2FzIFs2MywwLDAsMzJdCitQQVNTOiBwaXhl
bCBhdCAoNzAsNzApIHdhcyBbNjMsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQgKDcwLDc0KSB3YXMg
WzYzLDAsMCw5Nl0KK1BBU1M6IHBpeGVsIGF0ICg3MCw3OCkgd2FzIFs2MywwLDAsMTI4XQorUEFT
UzogcGl4ZWwgYXQgKDcwLDgyKSB3YXMgWzYzLDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNzAs
ODYpIHdhcyBbNjQsMCwwLDI1NF0KK1BBU1M6IHBpeGVsIGF0ICg3MCw5MCkgd2FzIFs2NCwwLDAs
MjU1XQorUEFTUzogcGl4ZWwgYXQgKDc0LDUwKSB3YXMgWzAsMCwwLDBdCitQQVNTOiBwaXhlbCBh
dCAoNzQsNTQpIHdhcyBbMCwwLDAsMV0KK1BBU1M6IHBpeGVsIGF0ICg3NCw1OCkgd2FzIFsxMjcs
MCwwLDJdCitQQVNTOiBwaXhlbCBhdCAoNzQsNjIpIHdhcyBbOTUsMCwwLDE2XQorUEFTUzogcGl4
ZWwgYXQgKDc0LDY2KSB3YXMgWzk1LDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg3NCw3MCkgd2Fz
IFs5NSwwLDAsNjRdCitQQVNTOiBwaXhlbCBhdCAoNzQsNzQpIHdhcyBbOTUsMCwwLDk2XQorUEFT
UzogcGl4ZWwgYXQgKDc0LDc4KSB3YXMgWzk1LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoNzQs
ODIpIHdhcyBbOTUsMCwwLDE5Ml0KK1BBU1M6IHBpeGVsIGF0ICg3NCw4Nikgd2FzIFs5NiwwLDAs
MjU0XQorUEFTUzogcGl4ZWwgYXQgKDc0LDkwKSB3YXMgWzk2LDAsMCwyNTVdCitQQVNTOiBwaXhl
bCBhdCAoNzgsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg3OCw1NCkgd2FzIFsy
NTUsMCwwLDFdCitQQVNTOiBwaXhlbCBhdCAoNzgsNTgpIHdhcyBbMTI3LDAsMCwyXQorUEFTUzog
cGl4ZWwgYXQgKDc4LDYyKSB3YXMgWzEyNywwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoNzgsNjYp
IHdhcyBbMTI3LDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg3OCw3MCkgd2FzIFsxMjcsMCwwLDY0
XQorUEFTUzogcGl4ZWwgYXQgKDc4LDc0KSB3YXMgWzEyNywwLDAsOTZdCitQQVNTOiBwaXhlbCBh
dCAoNzgsNzgpIHdhcyBbMTI3LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoNzgsODIpIHdhcyBb
MTI3LDAsMCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoNzgsODYpIHdhcyBbMTI3LDAsMCwyNTRdCitQ
QVNTOiBwaXhlbCBhdCAoNzgsOTApIHdhcyBbMTI4LDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAo
ODIsNTApIHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg4Miw1NCkgd2FzIFsyNTUsMCww
LDFdCitQQVNTOiBwaXhlbCBhdCAoODIsNTgpIHdhcyBbMjU1LDAsMCwyXQorUEFTUzogcGl4ZWwg
YXQgKDgyLDYyKSB3YXMgWzE5MSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoODIsNjYpIHdhcyBb
MTkxLDAsMCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg4Miw3MCkgd2FzIFsxOTEsMCwwLDY0XQorUEFT
UzogcGl4ZWwgYXQgKDgyLDc0KSB3YXMgWzE5MSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoODIs
NzgpIHdhcyBbMTkxLDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoODIsODIpIHdhcyBbMTkyLDAs
MCwxOTJdCitQQVNTOiBwaXhlbCBhdCAoODIsODYpIHdhcyBbMTkxLDAsMCwyNTRdCitQQVNTOiBw
aXhlbCBhdCAoODIsOTApIHdhcyBbMTkyLDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoODYsNTAp
IHdhcyBbMCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg4Niw1NCkgd2FzIFsyNTUsMCwwLDFdCitQ
QVNTOiBwaXhlbCBhdCAoODYsNTgpIHdhcyBbMjU1LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDg2
LDYyKSB3YXMgWzI1NSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoODYsNjYpIHdhcyBbMjU1LDAs
MCwzMl0KK1BBU1M6IHBpeGVsIGF0ICg4Niw3MCkgd2FzIFsyNTUsMCwwLDY0XQorUEFTUzogcGl4
ZWwgYXQgKDg2LDc0KSB3YXMgWzI1NSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoODYsNzgpIHdh
cyBbMjUzLDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoODYsODIpIHdhcyBbMjUzLDAsMCwxOTJd
CitQQVNTOiBwaXhlbCBhdCAoODYsODYpIHdhcyBbMjUzLDAsMCwyNTRdCitQQVNTOiBwaXhlbCBh
dCAoODYsOTApIHdhcyBbMjU0LDAsMCwyNTVdCitQQVNTOiBwaXhlbCBhdCAoOTAsNTApIHdhcyBb
MCwwLDAsMF0KK1BBU1M6IHBpeGVsIGF0ICg5MCw1NCkgd2FzIFsyNTUsMCwwLDFdCitQQVNTOiBw
aXhlbCBhdCAoOTAsNTgpIHdhcyBbMjU1LDAsMCwyXQorUEFTUzogcGl4ZWwgYXQgKDkwLDYyKSB3
YXMgWzI1NSwwLDAsMTZdCitQQVNTOiBwaXhlbCBhdCAoOTAsNjYpIHdhcyBbMjU1LDAsMCwzMl0K
K1BBU1M6IHBpeGVsIGF0ICg5MCw3MCkgd2FzIFsyNTUsMCwwLDY0XQorUEFTUzogcGl4ZWwgYXQg
KDkwLDc0KSB3YXMgWzI1NSwwLDAsOTZdCitQQVNTOiBwaXhlbCBhdCAoOTAsNzgpIHdhcyBbMjU1
LDAsMCwxMjhdCitQQVNTOiBwaXhlbCBhdCAoOTAsODIpIHdhcyBbMjU1LDAsMCwxOTJdCitQQVNT
OiBwaXhlbCBhdCAoOTAsODYpIHdhcyBbMjU1LDAsMCwyNTRdCitQQVNTOiBwaXhlbCBhdCAoOTAs
OTApIHdhcyBbMjU1LDAsMCwyNTVdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1nZXRJbWFnZURhdGEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1nZXRJbWFnZURhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xODY1OTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWdldEltYWdlRGF0YS5odG1sCkBAIC0wLDAgKzEsOTUgQEAKK1RoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgZ2V0SW1hZ2VEYXRhIHdvcmtzIGNvcnJlY3RseS4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKK2NhbnZhcy53aWR0aCA9IDIwMDsKK2NhbnZhcy5oZWlnaHQg
PSAyMDA7Cit2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworCitmdW5jdGlv
biBsb2cobXNnKXsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1M
ICs9IG1zZyArICI8YnIvPiI7Cit9CisKK2Z1bmN0aW9uIGRhdGFUb0FycmF5KGRhdGEpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKQorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGF0YS5sZW5ndGg7IGkrKykKKyAgICAgICAgcmVzdWx0W2ldID0gZGF0YVtpXTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBnZXRQaXhlbChjdHgsIHgsIHkpIHsKKyAg
ICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoeCx5LDEsMSk7CisgICAgaWYgKCFkYXRhKSAv
LyBnZXRJbWFnZURhdGEgZmFpbGVkLCB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgICAg
IHJldHVybiBbLTEsLTEsLTEsLTFdOworICAgIHJldHVybiBkYXRhVG9BcnJheShkYXRhLmRhdGEp
OworfQorCitmdW5jdGlvbiBwaXhlbFNob3VsZEJlKGN0eCwgeCwgeSwgY29sb3VyKSB7CisgICAg
dmFyIGN0eENvbG91ciA9IGdldFBpeGVsKGN0eCwgeCwgeSk7CisgICAgdmFyIGNvcnJlY3QgPSB0
cnVlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICBpZiAoY29sb3Vy
W2ldICE9IGN0eENvbG91cltpXSkgeworICAgICAgICAgICAgY29ycmVjdCA9IGZhbHNlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICBpZiAoY29ycmVjdCkKKyAgICAgICAgbG9n
KCJQQVNTOiBwaXhlbCBhdCAoIitbeCx5XSsiKSB3YXMgWyIrY29sb3VyKyJdIik7CisgICAgZWxz
ZQorICAgICAgICBsb2coIkZBSUw6IHBpeGVsIGF0ICgiK1t4LHldKyIpIHdhcyBbIitjdHhDb2xv
dXIrIl0sIGV4cGVjdGVkIFsiK2NvbG91cisiXSIpOworfQorCitpZiAoIWNvbnRleHQuc2V0Rmls
bENvbG9yKQorICAgIGNvbnRleHQuc2V0RmlsbENvbG9yID0gZnVuY3Rpb24ocixnLGIsYSkgewor
ICAgICAgICB0aGlzLmZpbGxTdHlsZSA9ICJyZ2JhKCIrW01hdGgucm91bmQocioyNTUpLE1hdGgu
cm91bmQoZyoyNTUpLE1hdGgucm91bmQoYioyNTUpLE1hdGgucm91bmQoYSoyNTUpXSsiKSIKKyAg
ICB9CisKKy8vIENoZWNrIHRoYXQgZ2V0SW1hZ2VEYXRhIGlzIHJldHVybiB0aGUgZGF0YSBmb3Ig
dGhlIHJpZ2h0IHBvcnRpb24gb2YgdGhlIGltYWdlCitmb3IodmFyIHggPSAwOyB4IDwgMTAwOyB4
Kz00KSB7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoMCwgeC85NiwgMCwgMSk7CisgICAgY29u
dGV4dC5maWxsUmVjdCh4LDAsMSwxKTsKKyAgICBwaXhlbFNob3VsZEJlKGNvbnRleHQsIHgsIDAs
IFswLCBNYXRoLnJvdW5kKDI1NSp4Lzk2KSwgMCwgMjU1XSk7Cit9CisKKy8vIENoZWNrIHJnYmEg
b3JkZXJpbmcKK2NvbnRleHQuY2xlYXJSZWN0KDAsMCwxMDAsMTAwKTsKK2NvbnRleHQuc2V0Rmls
bENvbG9yKDAuMjUsIDAuNSwgMC43NSwgMSk7Citjb250ZXh0LmZpbGxSZWN0KDUsNSwxLDEpOwor
cGl4ZWxTaG91bGRCZShjb250ZXh0LCA1LCA1LCBbTWF0aC5yb3VuZCgwLjI1KjI1NSksIE1hdGgu
cm91bmQoMC41KjI1NSksIE1hdGgucm91bmQoMC43NSoyNTUpLCAyNTVdKTsKKworLy8gQ2hlY2sg
dGhhdCB3ZSByZXR1cm4gdHJhbnNwYXJlbnQgYmxhY2sgZm9yIHJlZ2lvbnMgb3V0c2lkZSB0aGUg
Y2FudmFzIHByb3BlcgorY29udGV4dC5maWxsU3R5bGUgPSAicmdiYSgyNTUsMjU1LDI1NSwyNTUp
IjsKK2NvbnRleHQuZmlsbFJlY3QoMTk4LCA1LCA0LCAxKTsgLy8gZmluYWwgMiBwaXhlbHMgaG9y
aXpvbnRhbGx5IHNob3VsZCBiZSBjbGlwcGVkCit2YXIgY29udGVudCA9IGRhdGFUb0FycmF5KGNv
bnRleHQuZ2V0SW1hZ2VEYXRhKDE5OCwgNSwgNCwgMSkuZGF0YSk7Cit2YXIgZXhwZWN0ZWQgPSBb
MjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAwLDAsMCww
LDAsMCwwLDBdOwordmFyIG1hdGNoZWQgPSB0cnVlOworZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsg
aSsrKQorICAgIGlmIChjb250ZW50W2ldICE9IGV4cGVjdGVkW2ldKSB7CisgICAgICAgIG1hdGNo
ZWQgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQoraWYgKG1hdGNoZWQpCisgICAgbG9n
KCJQQVNTOiBDb3JyZWN0IGRhdGEgZm9yIGNvbnRlbnQgb3V0c2lkZSBjYW52YXMgYm91bmRzIik7
CitlbHNlCisgICAgbG9nKCJGQUlMOiBEaWQgbm90IGdldCBjb3JyZWN0IGRhdGEgZm9yIGNvbnRl
bnQgb3V0c2lkZSBjYW52YXMgYm91bmRzOiAiK2NvbnRlbnQpOworCisvLyBFbnN1cmUgcmV0dXJu
ZWQgdmFsdWVzIGFyZSBub3QgcHJlbXVsdGlwbGllZAordmFyIHZhbHVlcyA9IFswLDEsMiwxNiwz
Miw2NCw5NiwxMjgsMTkyLDI1NCwyNTVdOworCisvLyB0aGlzIGZ1bmN0aW9uIHNpbXBseSBhY2Nv
dW50cyBmb3IgdHJ1bmNhdGlvbiBkdWUgdG8gcHJlbXVsdGlwbGljYXRpb24gaW4gdGhlIGNhbnZh
cyBpbXBsZW1lbnRhdGlvbgorZnVuY3Rpb24gcHJlbXVsdCh2YWx1ZSwgYWxwaGEpIHsKKyAgICBy
ZXR1cm4gYWxwaGEgPyBNYXRoLmZsb29yKE1hdGgucm91bmQodmFsdWUqYWxwaGEvMjU1KSoyNTUv
YWxwaGEpIDogMDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKysp
IHsKKyAgICBmb3IgKHZhciBhID0gMDsgYSA8IHZhbHVlcy5sZW5ndGg7IGErKykgeworICAgICAg
ICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKyBbdmFsdWVzW2ldLCAwLCAwLCB2YWx1ZXNb
YV0vMjU1XSArIikiOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwK2kqNCw1MCthKjQsMiwy
KTsKKyAgICAgICAgcGl4ZWxTaG91bGRCZShjb250ZXh0LCA1MCtpKjQsIDUwK2EqNCwgW3ByZW11
bHQodmFsdWVzW2ldLCB2YWx1ZXNbYV0pLCAwLCAwLCB2YWx1ZXNbYV1dKTsKKyAgICB9Cit9CisK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlY2Q5OGUxLi5jZmVlZGM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDA4LTAyLTIyICBP
bGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBDYW52YXMuZ2V0SW1hZ2VEYXRhIGFuZCBD
YW52YXMuY3JlYXRlSW1hZ2VEYXRhCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
c3VwcG9ydCBmb3IgYWxsIHRoZSBwaXhlbCByZWFkaW5nIHBvcnRpb25zCisgICAgICAgIG9mIHRo
ZSBIVE1MNSBDYW52YXMgc3BlYy4gIFRoZXJlIGFyZSB0d28gbmV3IHR5cGVzIEltYWdlRGF0YQor
ICAgICAgICBhbmQgQ2FudmFzUGl4ZWxBcnJheSB3aGljaCBhcmUgdXNlZCB0byBwcm92aWRlIHRo
ZSBIVE1MNQorICAgICAgICBJbWFnZURhdGEgb2JqZWN0LCBhbmQgdGhlIHJlcXVpcmVkIHNlbWFu
dGljcyBmb3IgYXNzaWdubWVudAorICAgICAgICB0byB0aGUgSW1hZ2VEYXRhIGRhdGEgYXJyYXku
CisgICAgICAgIAorICAgICAgICBXZSBvbmx5IGltcGxlbWVudCB0aGUgQ0cgdmVyc2lvbiBvZiBJ
bWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhLAorICAgICAgICBidXQgdGhlIGxvZ2ljIGlzIG51bGwg
c2FmZSwgc28gdGhpcyB3aWxsIG5vdCBpbnRyb2R1Y2UgYW55CisgICAgICAgIGNyYXNoZXMgaW50
byBvdGhlciBwbGF0Zm9ybXMsIHVuZm9ydHVuYXRlbHkgaXQgd2lsbCByZXN1bHQgaW4KKyAgICAg
ICAgSlMgT2JqZWN0IGRldGVjdGlvbiAibHlpbmciIG9uIG5vbi1DRyBwbGF0Zm9ybXMuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2NhbnZhcy1JbWFnZURhdGEtYmVoYXZpb3VyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1BpeGVsQXJyYXk6OmluZGV4R2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUGl4ZWxBcnJheTo6aW5kZXhTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAqIGh0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGl4ZWxBcnJheTo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL0NhbnZhc1BpeGVsQXJyYXkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQaXhlbEFycmF5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BpeGVsQXJyYXk6
Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQaXhlbEFycmF5OjpzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUGl4ZWxBcnJheTo6Z2V0KToKKyAgICAgICAgKiBodG1sL0Nh
bnZhc1BpeGVsQXJyYXkuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFbXB0eUltYWdlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUltYWdl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAg
ICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxl
bWVudDo6Y29udmVydExvZ2ljYWxUb0RldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2Fu
dmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURhdGE6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmRhdGEpOgorICAg
ICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpnZXRJbWFnZURhdGEpOgorCiAyMDA4LTAyLTIxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IGJkMjkxNTEuLjU4ZmM1NzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTMyNyw2ICsz
MjcsNyBAQCBhbGwgOiBcCiAgICAgSlNDU1NWYWx1ZUxpc3QuaCBcCiAgICAgSlNDYW52YXNHcmFk
aWVudC5oIFwKICAgICBKU0NhbnZhc1BhdHRlcm4uaCBcCisgICAgSlNDYW52YXNQaXhlbEFycmF5
LmggXAogICAgIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggXAogICAgIEpTQ2hhcmFjdGVy
RGF0YS5oIFwKICAgICBKU0NvbW1lbnQuaCBcCkBAIC00MTQsNiArNDE1LDcgQEAgYWxsIDogXAog
ICAgIEpTSFRNTFVMaXN0RWxlbWVudC5oIFwKICAgICBKU0hUTUxWaWRlb0VsZW1lbnQuaCBcCiAg
ICAgSlNIaXN0b3J5LmggXAorICAgIEpTSW1hZ2VEYXRhLmggXAogICAgIEpTS2V5Ym9hcmRFdmVu
dC5oIFwKICAgICBKU0xvY2F0aW9uLmx1dC5oIFwKICAgICBKU01lZGlhRXJyb3IuaCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCAwYjY1Y2I0Li45ZTQ2YmU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTg4LDYgKzg4LDcgQEAgd2ViY29yZV9i
dWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KU0NTU1ZhbHVlTGlzdC5oIFwKIAlE
ZXJpdmVkU291cmNlcy9KU0NhbnZhc0dyYWRpZW50LmggXAogCURlcml2ZWRTb3VyY2VzL0pTQ2Fu
dmFzUGF0dGVybi5oIFwKKwlEZXJpdmVkU291cmNlcy9KU0NhbnZhc1BpeGVsQXJyYXkuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvSlNDaGFyYWN0ZXJEYXRhLmggXAogCURlcml2ZWRTb3VyY2VzL0pTQ29tbWVudC5oIFwK
QEAgLTE2Nyw2ICsxNjgsNyBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL0pTSFRNTFRpdGxlRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9KU0hUTUxVTGlz
dEVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNIaXN0b3J5LmggXAorCURlcml2ZWRTb3Vy
Y2VzL0pTSW1hZ2VEYXRhLmggXAogCURlcml2ZWRTb3VyY2VzL0pTS2V5Ym9hcmRFdmVudC5oIFwK
IAlEZXJpdmVkU291cmNlcy9KU01lZGlhTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9KU01vdXNl
RXZlbnQuaCBcCkBAIC0yMTEsNiArMjEzLDcgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9KU0NTU1ZhbHVlTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pT
Q2FudmFzR3JhZGllbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU0NhbnZhc1BhdHRlcm4uY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9KU0NhbnZhc1BpeGVsQXJyYXkuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pT
Q2hhcmFjdGVyRGF0YS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTQ29tbWVudC5jcHAgXApAQCAt
MjkwLDYgKzI5Myw3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvSlNIVE1MVGl0bGVFbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNIVE1MVUxpc3RF
bGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNIaXN0b3J5LmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvSlNJbWFnZURhdGEuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU0tleWJvYXJkRXZlbnQu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU01lZGlhTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L0pTTW91c2VFdmVudC5jcHAgXApAQCAtNDQ4LDYgKzQ1Miw3IEBAIHdlYmNvcmVfaGVhZGVycyAr
PSBcCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAgXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIFwKIAlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBcCkBAIC02NTksNiArNjY0LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBcCiAJ
V2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmNwcCBcCiAJV2ViQ29yZS9odG1sL0NhbnZhc1Bh
dHRlcm4uY3BwIFwKKwlXZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHAgXAogCVdlYkNv
cmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIFwKIAlXZWJDb3JlL2h0bWwvQ2Fu
dmFzU3R5bGUuY3BwIFwKIAlXZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmNwcCBcCkBAIC03Mzgs
NiArNzQ0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvSFRNTFRva2Vu
aXplci5jcHAgXAogCVdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBcCiAJV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIFwKKwlXZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggZDgxMWY0Yy4uODIzZDQyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybwor
KysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMTIsNiArMzEyLDcgQEAgSURMX0JJTkRJTkdT
ICs9IFwKICAgICBkb20vV2hlZWxFdmVudC5pZGwgXAogICAgIGh0bWwvQ2FudmFzR3JhZGllbnQu
aWRsIFwKICAgICBodG1sL0NhbnZhc1BhdHRlcm4uaWRsIFwKKyAgICBodG1sL0NhbnZhc1BpeGVs
QXJyYXkuaWRsIFwKICAgICBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAogICAg
IGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50
LmlkbCBcCkBAIC0zNzMsNiArMzc0LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaWRsIFwKICAgICBodG1sL0hUTUxUaXRsZUVsZW1lbnQuaWRsIFwK
ICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuaWRsIFwKKyAgICBodG1sL0ltYWdlRGF0YS5pZGwg
XAogICAgIHBhZ2UvQmFySW5mby5pZGwgXAogICAgIHBhZ2UvQ29uc29sZS5pZGwgXAogICAgIHBh
Z2UvRE9NU2VsZWN0aW9uLmlkbCBcCkBAIC0zODcsNiArMzg5LDcgQEAgSURMX0JJTkRJTkdTICs9
IFwKIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgXAogICAg
IGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFz
UGl4ZWxBcnJheUN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNw
cCBcCiAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBcCkBA
IC01OTgsNiArNjAxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
IFwKICAgICBodG1sL0NhbnZhc0dyYWRpZW50LmNwcCBcCiAgICAgaHRtbC9DYW52YXNQYXR0ZXJu
LmNwcCBcCisgICAgaHRtbC9DYW52YXNQaXhlbEFycmF5LmNwcCBcCiAgICAgaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIFwKICAgICBodG1sL0NhbnZhc1N0eWxlLmNwcCBcCiAgICAg
aHRtbC9Gb3JtRGF0YUxpc3QuY3BwIFwKQEAgLTY3Nyw2ICs2ODEsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBodG1sL0hUTUxUb2tlbml6ZXIuY3BwIFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQu
Y3BwIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIFwKKyAgICBodG1sL0lt
YWdlRGF0YS5jcHAgXAogICAgIGxvYWRlci9DYWNoZS5jcHAgXAogICAgIGxvYWRlci9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCBcCiAgICAgbG9hZGVyL0NhY2hlZEZvbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDVkYmM4N2UuLjMxOTE2YzQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzQxLDYgKzM0MSwxMiBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2FudmFzUGl4ZWxBcnJh
eS5jcHAiDQorCQkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDYW52YXNQaXhlbEFy
cmF5LmgiDQorCQkJCT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTExMjUsNiArMTEzMSwx
MyBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSW1h
Z2VEYXRhLmNwcCINCisJCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ltYWdlRGF0
YS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0tl
eWJvYXJkRXZlbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTY4NTUsNiArNjg2OCwx
MiBAQAogCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENhbnZhc1BhdHRlcm4u
aCINCiAJCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxDYW52YXNQ
aXhlbEFycmF5LmNwcCINCisJCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxDYW52YXNQaXhlbEFycmF5LmgiDQorCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAi
DQpAQCAtNzUyMSw2ICs3NTQwLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VEYXRhLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VEYXRhLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXE1lZGlhRXJyb3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC03NzQ4LDYgKzc3NzUs
OSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCINCisJCQkJCT4N
CisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNMb2NhdGlv
bi5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGEzZTVmZjMuLjZhMDU3ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzEwLDYgKzE3MTAsMTcgQEAKIAkJQTcx
ODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2
RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzM1MkMxOTBCMUJCODlEMDBB
OTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczNTJDMTcwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmNwcCAqLzsgfTsKIAkJQTczNTJDMUEwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1
MkMxODBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCAqLzsgfTsKKwkJQTc2NkYz
NTMwRDZCREUzNTAwQUJEREIzIC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzY2RjM1MjBENkJERTM1
MDBBQkREQjMgLyogSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCAqLzsgfTsKKwkJQTc3OTc5
MTYwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTAwRDZCOUQwQzAwMzg1MUI5
IC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICovOyB9OworCQlBNzc5NzkxNzBENkI5RDBDMDAzODUx
QjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc3OTc5MTEwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJy
YXkuaCAqLzsgfTsKKwkJQTc3OTc5MTgwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJy
YXkuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
Nzc5NzkxMjBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgKi87IH07CisJ
CUE3Nzk3OTE5MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTMwRDZCOUQwQzAwMzg1MUI5
IC8qIEltYWdlRGF0YS5jcHAgKi87IH07CisJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJ
bWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLzsgfTsKKwkJQTc3OTc5
MUIwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTE1MEQ2QjlEMEMwMDM4NTFCOSAvKiBJ
bWFnZURhdGEuaWRsICovOyB9OworCQlBNzc5NzkyNjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52
YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Nzk3OTIyMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuY3Bw
ICovOyB9OworCQlBNzc5NzkyNzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5Nzky
MzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmggKi87IH07CisJCUE3Nzk3
OTI4MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNDBENkI5RTY0MDAzODUxQjkgLyog
SlNJbWFnZURhdGEuY3BwICovOyB9OworCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJ
bWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovOyB9OwogCQlBNzg0
OTQxQjBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAvKiBD
bGlwYm9hcmQuY3BwICovOyB9OwogCQlBNzk1NDYzRTBCNUM0QzgwMDA3QjQzOEYgLyogRHJhZ0Rh
dGFNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
Nzk1NDYzRDBCNUM0QzgwMDA3QjQzOEYgLyogRHJhZ0RhdGFNYWMubW0gKi87IH07CiAJCUE3OTU0
NjQzMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzk1NDY0MjBCNUM0Q0I0MDA3QjQzOEYgLyogRHJh
Z0RhdGEuY3BwICovOyB9OwpAQCAtNTkwOCw2ICs1OTE5LDE3IEBACiAJCUE3MTg3ODhGMEIyRDA0
QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzM1MkMxNzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTczNTJDMTgwQjFCQjg5RDAwQTk4
NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJTVkdCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzY2RjM1
MjBENkJERTM1MDBBQkREQjMgLyogSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTEwMEQ2QjlEMEMwMDM4NTFC
OSAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhbnZhc1BpeGVsQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzc5NzkxMTBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNQaXhlbEFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTEyMEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhl
bEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYW52YXNQaXhlbEFycmF5LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3OTc5MTMwRDZCOUQwQzAwMzg1MUI5IC8q
IEltYWdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5NzkxNDBENkI5RDBD
MDAzODUxQjkgLyogSW1hZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5NzkxNTBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbWFn
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzc5NzkyMjBENkI5RTY0
MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ2FudmFzUGl4ZWxBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3Nzk3OTIzMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52YXNQaXhlbEFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTI0MEQ2QjlFNjQwMDM4NTFC
OSAvKiBKU0ltYWdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0ltYWdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Nzk3OTI1
MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0ltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
Nzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzk1NDYzRDBCNUM0QzgwMDA3QjQzOEYgLyogRHJhZ0RhdGFNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0RhdGFNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OTU0NjQyMEI1QzRDQjQwMDdCNDM4RiAvKiBE
cmFnRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmFnRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzc4LDYgKzk4MDAsMTIgQEAK
IAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3Nzk3OTEwMEQ2QjlEMEMwMDM4NTFCOSAvKiBD
YW52YXNQaXhlbEFycmF5LmNwcCAqLywKKwkJCQlBNzc5NzkxMTBENkI5RDBDMDAzODUxQjkgLyog
Q2FudmFzUGl4ZWxBcnJheS5oICovLAorCQkJCUE3Nzk3OTEyMEQ2QjlEMEMwMDM4NTFCOSAvKiBD
YW52YXNQaXhlbEFycmF5LmlkbCAqLywKKwkJCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyog
SW1hZ2VEYXRhLmNwcCAqLywKKwkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi8sCisJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwg
Ki8sCiAJCQkJOTNFRUMxRjAwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc0dyYWRpZW50LmNwcCAq
LywKIAkJCQk5M0VFQzFGMTA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuaCAqLywK
IAkJCQk5MzBDQUI4ODA5QzQ5RUZBMDAyMjlDMDQgLyogQ2FudmFzR3JhZGllbnQuaWRsICovLApA
QCAtMTAwMzEsNiArMTAwNTksMTAgQEAKIAkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhU
TUwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3Nzk3
OTIyMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuY3BwICovLAorCQkJCUE3
Nzk3OTIzMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuaCAqLywKKwkJCQlB
Nzc5NzkyNDBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwICovLAorCQkJCUE3Nzk3
OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovLAogCQkJCTY1REYzMjMzMDlE
MURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk2NURGMzIzNDA5
RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTY1REYzMjM1MDlE
MURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uY3BwICovLApAQCAtMTE1MzIsNiArMTE1
NjQsNyBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBNzY2RjM1MjBENkJERTM1MDBB
QkREQjMgLyogSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzJFRDZCQjBD
NkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTlFRjQ1NjBBMUI5
NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAog
CQkJCUJDNDZDMUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20uY3BwICovLApA
QCAtMTQyNDksNiArMTQyODIsMTAgQEAKIAkJCQlCQ0M1NzMzNTBENjk1QkJFMDA2RUY1MTcgLyog
RE9NUHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNTczMzgwRDY5NUJENzAw
NkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDNTczM0EwRDY5NUJGMTAwNkVGNTE3IC8qIERPTVRleHRQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNzc5NzkxNzBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTc3OTc5MjcwRDZCOUU2NDAwMzg1MUI5IC8qIEpTQ2FudmFz
UGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5
IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE0MzYxLDYgKzE0Mzk4LDggQEAK
IAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyog
em9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Nzk3OTE4MEQ2QjlEMEMw
MDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTc3
OTc5MUIwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwgaW4gUmVzb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTU4NDIsNiArMTU4ODEsMTEgQEAKIAkJCQlDMDI5NERGMzBENUE2RkQ4MDBDQzdENkIgLyog
VXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGODE4RkUwRDY1
NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQzU3MzM2MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTc3OTc5MTYwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc3OTc5MTkwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdl
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzc5NzkyNjBENkI5RTY0MDAzODUxQjkgLyog
SlNDYW52YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Nzk3OTI4MEQ2QjlF
NjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzY2RjM1
MzBENkJERTM1MDBBQkREQjMgLyogSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVsQXJy
YXlDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVsQXJyYXlDdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMjQ3NTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3Rv
bS5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
Q2FudmFzUGl4ZWxBcnJheS5oIgorCisjaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgorCit1
c2luZyBuYW1lc3BhY2UgS0pTOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUqIEpT
Q2FudmFzUGl4ZWxBcnJheTo6aW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIENhbnZhc1BpeGVsQXJyYXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8SlNDYW52YXNQ
aXhlbEFycmF5Kj4oc2xvdC5zbG90QmFzZSgpKS0+aW1wbCgpOworICAgIHVuc2lnbmVkIGluZGV4
ID0gc2xvdC5pbmRleCgpOworICAgIHVuc2lnbmVkIGNoYXIgcmVzdWx0OworICAgIGlmIChhcnJh
eS0+Z2V0KGluZGV4LCByZXN1bHQpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsK
KyAgICBlbHNlCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit2b2lkIEpTQ2Fu
dmFzUGl4ZWxBcnJheTo6aW5kZXhTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSogdmFsdWUsIGludCkKK3sKKyAgICBpZiAoaW5kZXggPj0gbV9pbXBsLT5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBwaXhlbFZhbHVlID0gdmFsdWUtPnRv
TnVtYmVyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1faW1wbC0+c2V0KGluZGV4LCBwaXhlbFZhbHVlKTsgCit9CisKK0tKUzo6SlNW
YWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgQ2FudmFzUGl4ZWxBcnJheSogcGl4ZWxz
KQoreworICAgIGlmICghcGl4ZWxzKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgCisg
ICAgSlNDYW52YXNQaXhlbEFycmF5KiByZXQgPSBzdGF0aWNfY2FzdDxKU0NhbnZhc1BpeGVsQXJy
YXkqPihTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NT2JqZWN0KHBpeGVscykpOworICAgIGlmIChy
ZXQpCisgICAgICAgIHJldHVybiByZXQ7CisgICAgCisgICAgcmV0ID0gbmV3IEpTQ2FudmFzUGl4
ZWxBcnJheShKU0NhbnZhc1BpeGVsQXJyYXlQcm90b3R5cGU6OnNlbGYoZXhlYyksIHBpeGVscyk7
CisgICAgCisgICAgQ29sbGVjdG9yOjpyZXBvcnRFeHRyYU1lbW9yeUNvc3QocGl4ZWxzLT5sZW5n
dGgoKSk7CisgICAgCisgICAgU2NyaXB0SW50ZXJwcmV0ZXI6OnB1dERPTU9iamVjdChwaXhlbHMs
IHJldCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXggNjgzMjhmNC4uNGE2MzkwZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAKQEAgLTMzMyw0ICszMzMsOSBAQCBKU1ZhbHVlKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Y3JlYXRlUGF0dGVybihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmCiAgICAgcmV0
dXJuIDA7CiB9CiAKK0pTVmFsdWUqIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwdXRJbWFn
ZURhdGEoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0M2UwMmE5Li40OGNjZjU2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE1NCw3
ICsxNTQsNyBAQCBzdWIgVXNlc01hbnVhbFRvSlNJbXBsZW1lbnRhdGlvbgogewogICAgIG15ICR0
eXBlID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiTm9kZSIgb3IgJHR5cGUg
ZXEgIkRvY3VtZW50IiBvciAkdHlwZSBlcSAiSFRNTENvbGxlY3Rpb24iIG9yICR0eXBlIGVxICJT
VkdQYXRoU2VnIiBvciAkdHlwZSBlcSAiU3R5bGVTaGVldCIgb3IgJHR5cGUgZXEgIkNTU1J1bGUi
IG9yICR0eXBlIGVxICJDU1NWYWx1ZSIgb3IgJHR5cGUgZXEgIkV2ZW50IjsKKyAgICByZXR1cm4g
MSBpZiAkdHlwZSBlcSAiTm9kZSIgb3IgJHR5cGUgZXEgIkRvY3VtZW50IiBvciAkdHlwZSBlcSAi
SFRNTENvbGxlY3Rpb24iIG9yICR0eXBlIGVxICJTVkdQYXRoU2VnIiBvciAkdHlwZSBlcSAiU3R5
bGVTaGVldCIgb3IgJHR5cGUgZXEgIkNTU1J1bGUiIG9yICR0eXBlIGVxICJDU1NWYWx1ZSIgb3Ig
JHR5cGUgZXEgIkV2ZW50IiBvciAkdHlwZSBlcSAiQ2FudmFzUGl4ZWxBcnJheSI7CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTMzNCwxMCArMzM0LDE4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICMgRGVzdHJ1Y3RvcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB+JGNs
YXNzTmFtZSgpO1xuIikgaWYgKCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2VOYW1lIGVxICJEb2N1
bWVudCIpOwogCisgICAgbXkgJGhhc0dldHRlciA9ICRudW1BdHRyaWJ1dGVzID4gMCAKKyAgICAg
ICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVD
b25zdHJ1Y3RvciJ9IAorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0KKyAgICAgICAg
ICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3du
UHJvcGVydHlTbG90In0KKyAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc092ZXJyaWRpbmdOYW1lR2V0dGVyIn07CisKICAg
ICAjIEdldHRlcnMKLSAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlQ29uc3RydWN0b3IifSkgeworICAgIGlmICgkaGFz
R2V0dGVyKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmll
ciYsIEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBLSlM6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBp
bnQgdG9rZW4pIGNvbnN0O1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
S0pTOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwgaW50IHRva2Vu
KSBjb25zdDtcbiIpIGlmICRudW1BdHRyaWJ1dGVzID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn07CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgYm9vbCBjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpFeGVjU3Rh
dGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90
In07CiAgICAgfQogCkBAIC0zNDksOSArMzU3LDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZv
aWQgcHV0KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1Zh
bHVlKiwgaW50IGF0dHIgPSBLSlM6Ok5vbmUpO1xuIikgaWYgKCRoYXNSZWFkV3JpdGVQcm9wZXJ0
aWVzIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9u
In0pOwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5
KEtKUzo6RXhlY1N0YXRlKiwgaW50LCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0cik7XG4iKSBpZiAk
aGFzUmVhZFdyaXRlUHJvcGVydGllczsKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJv
b2wgY3VzdG9tUHV0KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pT
OjpKU1ZhbHVlKiwgaW50IGF0dHIpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifTsKKyAgICBteSAkaGFzU2V0dGVyID0gJGhhc1JlYWRX
cml0ZVByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifQorICAgICAgICAgICAgICAgICB8fCAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleFNldHRlciJ9OworCisg
ICAgIyBHZXR0ZXJzCisgICAgaWYgKCRoYXNTZXR0ZXIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgcHV0KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pT
OjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIgPSBLSlM6Ok5vbmUpO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5
KEtKUzo6RXhlY1N0YXRlKiwgaW50LCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0cik7XG4iKSBpZiAk
aGFzUmVhZFdyaXRlUHJvcGVydGllczsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBib29sIGN1c3RvbVB1dChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYs
IEtKUzo6SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn07CisgICAgfQogCiAgICAgIyBDbGFzcyBpbmZv
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGNvbnN0IEtKUzo6Q2xhc3NJ
bmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfVxuIik7CkBAIC0zNzMsNyAr
Mzg4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6
OklkZW50aWZpZXImKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbURlbGV0ZVByb3BlcnR5In07CiAKICAgICAjIEN1c3RvbSBnZXRQcm9wZXJ0eU5hbWVzIGZ1
bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIp
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5h
bWVzIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIi
fSk7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVy
dHlOYW1lcyhLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVz
In0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8
fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9
KTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgY3VzdG9tR2V0UHJvcGVydHlO
YW1lcyhLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlmICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifTsK
IAogICAgICMgQ29uc3RydWN0b3Igb2JqZWN0IGdldHRlcgpAQCAtNDUwLDEwICs0NjUsNiBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgfQogICAgIH0KIAotICAgICMgSW5kZXggc2V0dGVy
Ci0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4
U2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGluZGV4
U2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgsIEtKUzo6SlNWYWx1ZSosIGlu
dCBhdHRyKTtcbiIpOwotICAgIH0KIAogICAgIGlmICghJGhhc1BhcmVudCkgewogICAgICAgICBp
ZiAoJHBvZFR5cGUpIHsKQEAgLTQ3OCwxMCArNDg5LDE0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgIH0KIAogICAgICMgSW5kZXggZ2V0dGVyCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgInByaXZhdGU6XG4iKTsKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIEtKUzo6SlNWYWx1ZSogaW5kZXhHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBL
SlM6OkpTT2JqZWN0KiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0
eVNsb3QmKTtcbiIpOwogICAgIH0KKworICAgICMgSW5kZXggc2V0dGVyCisgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn0pIHsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGluZGV4U2V0dGVyKEtKUzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgaW5kZXgsIEtKUzo6SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpOwor
ICAgIH0KICAgICAjIE5hbWUgZ2V0dGVyCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJIYXNPdmVycmlkaW5nTmFtZUdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJwcml2YXRlOlxuIik7CkBAIC01OTIsNyArNjA3LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbmNsdWRlIFwiJGNs
YXNzTmFtZS5oXCJcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPlxuXG4iKTsKIAotICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAi
I2luY2x1ZGUgPGtqcy9Qcm9wZXJ0eU5hbWVBcnJheS5oPlxuIikgaWYgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dEhlYWRlciwgIiNpbmNsdWRlIDxranMvUHJvcGVydHlOYW1lQXJyYXkuaD5cbiIpIGlmICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIifTsKIAogICAgIEFk
ZEluY2x1ZGVzRm9yVHlwZSgkaW50ZXJmYWNlTmFtZSk7CiAKQEAgLTgyOCw4ICs4NDMsMTYgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4gICAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChzdGF0aWNfY2FzdDwke2lt
cGxDbGFzc05hbWV9Kj4oaW1wbCgpKSk7XG59XG5cbiIpOwogICAgIH0KIAorICAgIG15ICRoYXNH
ZXR0ZXIgPSAkbnVtQXR0cmlidXRlcyA+IDAgCisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlQ29uc3RydWN0b3IifSAKKyAgICAgICAg
ICAgICAgICAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0
ZXIifQorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNDdXN0b21JbmRleEdldHRlciJ9CisgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9CisgICAgICAg
ICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0
ZXIifQorICAgICAgICAgICAgICAgICB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNPdmVycmlkaW5nTmFtZUdldHRlciJ9OworCiAgICAgIyBBdHRyaWJ1dGVzCi0gICAgaWYg
KCRudW1BdHRyaWJ1dGVzIG5lIDApIHsKKyAgICBpZiAoJGhhc0dldHRlcikgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogCkBA
IC04NTEsNyArODc0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICYkaGFzTmFtZUdldHRlckdlbmVyYXRpb24oKTsKICAgICAgICAgfQogCi0gICAgICAgIG15ICRy
ZXF1aXJlc01hbnVhbExvb2t1cCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFt
ZUdldHRlciJ9OworICAgICAgICBteSAkcmVxdWlyZXNNYW51YWxMb29rdXAgPSAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9OwogICAgICAgICBpZiAoJHJlcXVp
cmVzTWFudWFsTG9va3VwKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBj
b25zdCBIYXNoRW50cnkqIGVudHJ5ID0gTG9va3VwOjpmaW5kRW50cnkoJiR7Y2xhc3NOYW1lfVRh
YmxlLCBwcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoZW50cnkpIHtcbiIpOwpAQCAtODYwLDcgKzg4Myw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNJbmRleEdldHRlciJ9KSB7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGJvb2wgb2s7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvaywgZmFsc2Up
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAob2sgJiYgaW5k
ZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSktPmxlbmd0aCgpKSB7XG4i
KTsKQEAgLTg3OCwxMDEgKzkwMSwxMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4i
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PCRjbGFzc05hbWUsIEJh
c2U+KGV4ZWMsICYke2NsYXNzTmFtZX1UYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtc
biIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtjbGFzc05hbWV9Ojpn
ZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdFxue1xuIik7
CisgICAgICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiSlNWYWx1ZSogJHtjbGFzc05hbWV9OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNT
dGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdFxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN3aXRj
aCAodG9rZW4pIHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3dp
dGNoICh0b2tlbikge1xuIik7CiAKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRk
YXRhTm9kZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG15ICRnZXR0ZXJGdW5jdGlvbk5h
bWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpOworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRkYXRhTm9kZS0+YXR0
cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICBteSAkZ2V0dGVyRnVuY3Rpb25OYW1lID0gJGNv
ZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKIAot
ICAgICAgICAgICAgbXkgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gPSAiIjsKLSAg
ICAgICAgICAgIGlmICghJHBvZFR5cGUgYW5kICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRl
ZFR5cGUoJGltcGxDbGFzc05hbWUpIG9yICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8p
KSB7Ci0gICAgICAgICAgICAgICAgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gPSAk
aW1wbENsYXNzTmFtZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBteSAkaW1wbENs
YXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiA9ICIiOworICAgICAgICAgICAgICAgIGlmICghJHBv
ZFR5cGUgYW5kICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxDbGFzc05h
bWUpIG9yICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8pKSB7CisgICAgICAgICAgICAg
ICAgICAgICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uID0gJGltcGxDbGFzc05hbWU7
CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBjYXNlICIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWUpCi0gICAgICAgICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
ID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKQotICAgICAgICAgICAgICAg
IC4gIkF0dHJOdW06IHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGNhc2UgIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKQorICAgICAgICAg
ICAgICAgICAgICAuICJBdHRyTnVtOiB7XG4iKTsKIAotICAgICAgICAgICAgaWYgKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAKLSAgICAg
ICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0gJiYKLSAgICAgICAgICAgICAgICAhJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3Vy
aXR5T25HZXQifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBpZiAoIWFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAKKyAgICAgICAgICAgICAgICAgICAg
ISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tE
b21haW5TZWN1cml0eSJ9ICYmCisgICAgICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHlPbkdl
dCJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBp
ZiAoIWFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOwor
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAkZ2V0dGVyRnVuY3Rpb25OYW1l
KGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja05vZGVTZWN1cml0eSJ9KSB7Ci0gICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nh
c3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAt
PiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252
ZXJzaW9uLCAiaW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgp
O1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDaGVja0ZyYW1lU2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkRvY3VtZW50LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFz
c05hbWUqPihpbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPmNvbnRlbnREb2N1
bWVudCgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAgMCwg
JGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4k
Z2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7Ci0gICAgICAg
ICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9y
JC8pIHsKLSAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0
b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAgICAgICAg
ICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9y
VHlwZSAuICI6OmdldENvbnN0cnVjdG9yKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lm
ICghQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgewotICAgICAgICAgICAgICAgIGlm
ICgkcG9kVHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgJHBvZFR5cGUgaW1wKCppbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFz
c05hbWUsICIiLCAiaW1wIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJGdl
dHRlckZ1bmN0aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrTm9kZVNlY3Vy
aXR5In0pIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0g
PSAxOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGlt
cGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpKSA/
ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNz
TmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5j
dGlvbk5hbWUoKSIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVj
a0ZyYW1lU2VjdXJpdHkifSkgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJE
b2N1bWVudC5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNf
ZG9tLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihp
bXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgaW1wLT5jb250ZW50RG9jdW1lbnQo
KSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgIDAsICRpbXBs
Q2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JGdldHRl
ckZ1bmN0aW9uTmFtZSgpIikgLiAiIDoganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAg
ICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LykgeworICAgICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5l
cmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAg
ICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKUyIgLiAk
Y29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7XG4iKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICghQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3Bl
Y2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0
cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcCIpIC4gIjtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAu
JGdldHRlckZ1bmN0aW9uTmFtZSgpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGdldHRl
ckZ1bmN0aW9uTmFtZSgpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0
PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVU
b0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxD
bGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1h
dGVkVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgUmVmUHRyPCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIG9iai5nZXQoKSwgaW1wKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuICRqc1R5cGU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFt
ZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRqc1R5
cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNz
TmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5j
dGlvbk5hbWUoKSIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
U1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIG9iai5nZXQoKSwgaW1wKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKwor
ICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBL
SlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGdldHRlckZ1bmN0aW9uTmFtZShl
YykiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJGpzVHlwZTtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwo
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNv
bnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDtcbiIpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAo
KmltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcC4kZ2V0dGVyRnVuY3Rp
b25OYW1lKGVjKSIpIC4gIjtcbiIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSog
aW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJl
c3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1w
bENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0
ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcmVz
dWx0O1xuIik7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIH1cbiIpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHJlc3Vs
dDtcbiIpOworICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkdlbmVyYXRlQ29uc3RydWN0b3IifSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGNhc2UgQ29uc3RydWN0b3JBdHRyTnVtOlxuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBnZXRDb25zdHJ1Y3RvcihleGVjKTtc
biIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBjYXNlIENvbnN0cnVjdG9yQXR0ck51bTpcbiIpOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBnZXRDb25zdHJ1Y3RvcihleGVjKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gMDtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiAwO1xufVxuXG4iKTsKLQogICAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgYW55IHdy
aXRhYmxlIGF0dHJpYnV0ZXMKICAgICAgICAgbXkgJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMgPSAw
OwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVz
fSkgewogICAgICAgICAgICAgJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMgPSAxIGlmICRhdHRyaWJ1
dGUtPnR5cGUgIX4gL15yZWFkb25seS87CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCRoYXNSZWFk
V3JpdGVQcm9wZXJ0aWVzIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bVB1dEZ1bmN0aW9uIn0pIHsKKworICAgICAgICBteSAkaGFzU2V0dGVyID0gJGhhc1JlYWRXcml0
ZVByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAgIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0KKyAgICAgICAgICAgICAgICAgICAgIHx8
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn07
CisKKyAgICAgICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn0pIHsKQEAg
LTk4Nyw2ICsxMDE5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHIpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBp
ZiAoJGhhc1JlYWRXcml0ZVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBsb29rdXBQdXQ8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0ciwgJiR7Y2xhc3NOYW1lfVRhYmxlLCB0aGlzKTtcbiIpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTEwNjIsMTQgKzEwOTUsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSkgeworICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmdldFByb3BlcnR5TmFtZXMo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcylcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0UHJvcGVydHlOYW1lcyJ9KSB7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY3VzdG9tR2V0UHJvcGVydHlOYW1l
cyhleGVjLCBwcm9wZXJ0eU5hbWVzKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KSB7CisgICAgICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0pIHsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzdGF0aWNfY2FzdDwke2ltcGxDbGFzc05hbWV9Kj4oaW1wbCgpKS0+bGVuZ3RoKCk7ICsr
aSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oaSkpO1xuIik7CiAgICAgICAgIH0KQEAgLTE3MzUs
NyArMTc2OCw3IEBAIHN1YiBXcml0ZURhdGEKICAgICAgICAgY2xvc2UoJElNUEwpOwogICAgICAg
ICB1bmRlZigkSU1QTCk7CiAKLSAgICAgICAgQGltcGxIZWFkZXJDb250ZW50ID0gKCk7CisgICAg
ICAgIEBpbXBsQ29udGVudEhlYWRlciA9ICgpOwogICAgICAgICBAaW1wbENvbnRlbnQgPSAoKTsK
ICAgICAgICAgJWltcGxJbmNsdWRlcyA9ICgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9DYW52YXNQaXhlbEFycmF5LmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmFhZTNkCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBD
YW52YXNQaXhlbEFycmF5OjpjcmVhdGUodW5zaWduZWQgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENhbnZhc1BpeGVsQXJyYXkoc2l6ZSkpOworfQorCitDYW52YXNQaXhlbEFycmF5
OjpDYW52YXNQaXhlbEFycmF5KHVuc2lnbmVkIHNpemUpCisgICAgOiBtX2RhdGEoc2l6ZSkKK3sK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuaCBiL1dl
YkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMWYyNWU2NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNQ
aXhlbEFycmF5LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYW52YXNQaXhlbEFycmF5X2gK
KyNkZWZpbmUgQ2FudmFzUGl4ZWxBcnJheV9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgQ2FudmFzUGl4ZWxBcnJheSA6
IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1BpeGVsQXJyYXk+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1BpeGVsQXJyYXk+IGNyZWF0ZSh1bnNpZ25lZCBz
aXplKTsKKyAgICAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBkYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5z
aXplKCk7IH0KKyAgICAgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCEodmFsdWUgPiAwKSkgLy8gQ2xhbXAgTmFOIHRv
IDAKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1
ZSA+IDI1NSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDI1NTsKKyAgICAgICAgICAgIG1fZGF0
YVtpbmRleF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihyb3VuZCh2YWx1ZSkpOworICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBnZXQodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGNoYXIm
IHJlc3VsdCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGluZGV4ID49IG1fZGF0
YS5zaXplKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVz
dWx0ID0gbV9kYXRhW2luZGV4XTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBDYW52YXNQaXhlbEFycmF5KHVuc2lnbmVkIHNpemUp
OworICAgICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOworICAgIH07CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDYW52YXNQaXhlbEFycmF5X2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmlkbCBiL1dlYkNvcmUvaHRt
bC9DYW52YXNQaXhlbEFycmF5LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lOGY2MzQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJy
YXkuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKworICAgIGludGVyZmFjZSBb
CisgICAgICAgIEhhc0N1c3RvbUluZGV4R2V0dGVyLAorICAgICAgICBIYXNDdXN0b21JbmRleFNl
dHRlciwKKyAgICAgICAgR2VuZXJhdGVUb0pTCisgICAgXSBDYW52YXNQaXhlbEFycmF5IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbGVuZ3RoOworICAgIH07CisKK30KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29y
ZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMzI3YTQzZS4uZGFiMzg3
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRp
ZW50LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgorI2luY2x1ZGUgIkNhbnZhc1BpeGVs
QXJyYXkuaCIKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtNDEsNiArNDIsOCBAQAogI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZW5k
ZXJIVE1MQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTExNjIsNCArMTE2NSw0
MSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlGaWxsUGF0dGVybigpCiAg
ICAgc3RhdGUoKS5tX2FwcGxpZWRGaWxsUGF0dGVybiA9IHRydWU7CiB9CiAKK3N0YXRpYyBQYXNz
UmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlRW1wdHlJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK3sKKyAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRl
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgbWVtc2V0KGRhdGEtPmRhdGEoKS0+
ZGF0YSgpLmRhdGEoKSwgMCwgZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGRh
dGE7Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmNyZWF0ZUltYWdlRGF0YShmbG9hdCBzdywgZmxvYXQgc2gpIGNvbnN0Cit7CisgICAgRmxvYXRT
aXplIHVuc2NhbGVkU2l6ZShzdywgc2gpOworICAgIEludFNpemUgc2NhbGVkU2l6ZTsKKyAgICBp
ZiAobV9jYW52YXMpCisgICAgICAgIHNjYWxlZFNpemUgPSBtX2NhbnZhcy0+Y29udmVydExvZ2lj
YWxUb0RldmljZSh1bnNjYWxlZFNpemUpOworICAgIGVsc2UKKyAgICAgICAgc2NhbGVkU2l6ZSA9
IEludFNpemUoY2VpbGYoc3cpLCBjZWlsZihzaCkpOworICAgIGlmIChzY2FsZWRTaXplLndpZHRo
KCkgPCAxKQorICAgICAgICBzY2FsZWRTaXplLnNldFdpZHRoKDEpOworICAgIGlmIChzY2FsZWRT
aXplLmhlaWdodCgpIDwgMSkKKyAgICAgICAgc2NhbGVkU2l6ZS5zZXRIZWlnaHQoMSk7CisgICAg
CisgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKHNjYWxlZFNpemUpOworfQorCitQYXNz
UmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEo
ZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpIGNvbnN0Cit7CisgICAgRmxv
YXRSZWN0IHVuc2NhbGVkUmVjdChzeCwgc3ksIHN3LCBzaCk7CisgICAgSW50UmVjdCBzY2FsZWRS
ZWN0ID0gbV9jYW52YXMgPyBtX2NhbnZhcy0+Y29udmVydExvZ2ljYWxUb0RldmljZSh1bnNjYWxl
ZFJlY3QpIDogZW5jbG9zaW5nSW50UmVjdCh1bnNjYWxlZFJlY3QpOworICAgIGlmIChzY2FsZWRS
ZWN0LndpZHRoKCkgPCAxKQorICAgICAgICBzY2FsZWRSZWN0LnNldFdpZHRoKDEpOworICAgIGlm
IChzY2FsZWRSZWN0LmhlaWdodCgpIDwgMSkKKyAgICAgICAgc2NhbGVkUmVjdC5zZXRIZWlnaHQo
MSk7CisgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IG1fY2FudmFzID8gbV9jYW52YXMtPmJ1ZmZl
cigpIDogMDsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1h
Z2VEYXRhKHNjYWxlZFJlY3Quc2l6ZSgpKTsKKyAgICByZXR1cm4gYnVmZmVyLT5nZXRJbWFnZURh
dGEoc2NhbGVkUmVjdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCAzMGY3YTUzLi5mNGNjOTM4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29y
ZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAgICAgY2xhc3MgSFRN
TENhbnZhc0VsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKKyAgICBjbGFzcyBJ
bWFnZURhdGE7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC0xNjIsNyAr
MTYzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNH
cmFkaWVudD4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCBy
MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7CiAgICAgICAgIFBhc3NSZWZQdHI8Q2Fu
dmFzUGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MSW1hZ2VFbGVtZW50KiwgY29uc3QgU3RyaW5n
JiByZXBldGl0aW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICBQYXNzUmVmUHRyPENh
bnZhc1BhdHRlcm4+IGNyZWF0ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1lbnQqLCBjb25zdCBTdHJp
bmcmIHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7Ci0KKyAgICAgICAgCisgICAgICAg
IFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVJbWFnZURhdGEoZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpIGNvbnN0OworICAgICAg
ICAKICAgICAgICAgdm9pZCByZXNldCgpOwogICAgICAgICB2b2lkIGRldGFjaENhbnZhcygpIHsg
bV9jYW52YXMgPSAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGwKaW5kZXggM2Q1NjZkNC4uZDRlYTZlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5pZGwKQEAgLTEwMSw3ICsxMDEsMTIgQEAgbW9kdWxlIGh0bWwgewogICAgICAg
ICBbQ3VzdG9tXSB2b2lkIGNyZWF0ZVBhdHRlcm4oLyogMiAqLyk7CiAgICAgICAgIAogICAgICAg
ICBhdHRyaWJ1dGUgW0N1c3RvbV0gY3VzdG9tIHN0cm9rZVN0eWxlOwotICAgICAgICBhdHRyaWJ1
dGUgW0N1c3RvbV0gY3VzdG9tIGZpbGxTdHlsZTsgICAgICAgIAorICAgICAgICBhdHRyaWJ1dGUg
W0N1c3RvbV0gY3VzdG9tIGZpbGxTdHlsZTsKKyAgICAgICAgCisgICAgICAgIC8vIHBpeGVsIG1h
bmlwdWxhdGlvbgorICAgICAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKGluIGZsb2F0IHN3
LCBpbiBmbG9hdCBzaCk7CisgICAgICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoaW4gZmxvYXQg
c3gsIGluIGZsb2F0IHN5LCBpbiBmbG9hdCBzdywgaW4gZmxvYXQgc2gpOworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHB1dEltYWdlRGF0YSgvKiBpbiBJbWFnZURhdGEgaW1hZ2VkYXRhLCBpbiBmbG9h
dCBkeCwgaW4gZmxvYXQgZHkgWywgaW4gZmxvYXQgZGlydHlYLCBpbiBmbG9hdCBkaXJ0eVksIGlu
IGZsb2F0IGRpcnR5V2lkdGgsIGluIGZsb2F0IGRpcnR5SGVpZ2h0XSAqLyk7CiAgICAgfTsKIAog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZDcxMWZiZi4uNDU4OTVjNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBjb25z
dCBpbnQgZGVmYXVsdEhlaWdodCA9IDE1MDsKIC8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdo
dCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQg
CiAvLyByZWFjaGVzIHRoYXQgbGltaXQuIFdlIGxpbWl0IGJ5IGFyZWEgaW5zdGVhZCwgZ2l2aW5n
IHVzIGxhcmdlciBtYXhpbXVtIGRpbWVuc2lvbnMsCiAvLyBpbiBleGNoYW5nZSBmb3IgYSBzbWFs
bGVyIG1heGltdW0gY2FudmFzIHNpemUuCi1zdGF0aWMgY29uc3QgZmxvYXQgbWF4Q2FudmFzQXJl
YSA9IDMyNzY4ICogODE5MjsgLy8gTWF4aW11bSBjYW52YXMgYXJlYSBpbiBDU1MgcGl4ZWxzCitj
b25zdCBmbG9hdCBIVE1MQ2FudmFzRWxlbWVudDo6TWF4Q2FudmFzQXJlYSA9IDMyNzY4ICogODE5
MjsgLy8gTWF4aW11bSBjYW52YXMgYXJlYSBpbiBDU1MgcGl4ZWxzCiAKIEhUTUxDYW52YXNFbGVt
ZW50OjpIVE1MQ2FudmFzRWxlbWVudChEb2N1bWVudCogZG9jKQogICAgIDogSFRNTEVsZW1lbnQo
Y2FudmFzVGFnLCBkb2MpCkBAIC0xODUsMjQgKzE4NSw0MiBAQCB2b2lkIEhUTUxDYW52YXNFbGVt
ZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHIpCiAgICAgICAg
IHAtPnBhaW50QnVmZmVyKG1faW1hZ2VCdWZmZXIuZ2V0KCksIHIpOwogfQogCi12b2lkIEhUTUxD
YW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CitJbnRSZWN0IEhUTUxDYW52
YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0UmVjdCYgbG9naWNh
bFJlY3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX2NyZWF0ZWRJbWFnZUJ1ZmZlcik7Ci0gICAg
QVNTRVJUKCFtX2ltYWdlQnVmZmVyKTsKLQotICAgIG1fY3JlYXRlZEltYWdlQnVmZmVyID0gdHJ1
ZTsKKyAgICByZXR1cm4gSW50UmVjdChjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGxvZ2ljYWxSZWN0
LmxvY2F0aW9uKCkpLCBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGxvZ2ljYWxSZWN0LnNpemUoKSkp
OworfQogCi0gICAgZmxvYXQgdW5zY2FsZWRXaWR0aCA9IHdpZHRoKCk7Ci0gICAgZmxvYXQgdW5z
Y2FsZWRIZWlnaHQgPSBoZWlnaHQoKTsKK0ludFNpemUgSFRNTENhbnZhc0VsZW1lbnQ6OmNvbnZl
cnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSkgY29uc3QKK3sK
ICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLT5mcmFtZSgpID8gZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+c2NhbGVGYWN0b3IoKSA6IDEuMGY7Ci0g
ICAgZmxvYXQgd2YgPSBjZWlsZih1bnNjYWxlZFdpZHRoICogcGFnZVNjYWxlRmFjdG9yKTsKLSAg
ICBmbG9hdCBoZiA9IGNlaWxmKHVuc2NhbGVkSGVpZ2h0ICogcGFnZVNjYWxlRmFjdG9yKTsKKyAg
ICBmbG9hdCB3ZiA9IGNlaWxmKGxvZ2ljYWxTaXplLndpZHRoKCkgKiBwYWdlU2NhbGVGYWN0b3Ip
OworICAgIGZsb2F0IGhmID0gY2VpbGYobG9naWNhbFNpemUuaGVpZ2h0KCkgKiBwYWdlU2NhbGVG
YWN0b3IpOworICAgIAorICAgIGlmICghKHdmID49IDEgJiYgaGYgPj0gMSAmJiB3ZiAqIGhmIDw9
IE1heENhbnZhc0FyZWEpKQorICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCi0gICAgaWYgKCEo
d2YgPj0gMSAmJiBoZiA+PSAxICYmIHdmICogaGYgPD0gbWF4Q2FudmFzQXJlYSkpCi0gICAgICAg
IHJldHVybjsKKyAgICByZXR1cm4gSW50U2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2YpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaGYpKTsKK30KKworSW50UG9pbnQgSFRNTENhbnZhc0VsZW1l
bnQ6OmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRQb2ludCYgbG9naWNhbFBvcykg
Y29uc3QKK3sKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLT5mcmFtZSgp
ID8gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+c2NhbGVGYWN0b3IoKSA6
IDEuMGY7CisgICAgZmxvYXQgeGYgPSBsb2dpY2FsUG9zLngoKSAqIHBhZ2VTY2FsZUZhY3RvcjsK
KyAgICBmbG9hdCB5ZiA9IGxvZ2ljYWxQb3MueSgpICogcGFnZVNjYWxlRmFjdG9yOworICAgIAor
ICAgIHJldHVybiBJbnRQb2ludChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oeGYpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oeWYpKTsKK30KIAotICAgIEludFNpemUgc2l6ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4od2YpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGYpKTsKK3ZvaWQgSFRNTENhbnZhc0Vs
ZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1faW1hZ2VC
dWZmZXIpOwogCisgICAgbV9jcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOworICAgIAorICAgIEZs
b2F0U2l6ZSB1bnNjYWxlZFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEludFNpemUgc2l6
ZSA9IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UodW5zY2FsZWRTaXplKTsKKyAgICBpZiAoIXNpemUu
d2lkdGgoKSB8fCAhc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIG1faW1hZ2VC
dWZmZXIuc2V0KEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgZmFsc2UpLnJlbGVhc2UoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggMDgzNmYwOS4uMjg3NmJlMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTQ1LDkgKzQ1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOwogdHlwZWRlZiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNzIEZsb2F0UG9pbnQ7
CiBjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIEludFBvaW50OworY2xhc3MgSW50dFJlY3Q7
CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudCA6IHB1YmxpYyBIVE1M
RWxlbWVudCB7CiBwdWJsaWM6CkBAIC04Myw3ICs4OCwxMSBAQCBwdWJsaWM6CiAjZWxpZiBQTEFU
Rk9STShDQUlSTykKICAgICBjYWlyb19zdXJmYWNlX3QqIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBj
b25zdDsKICNlbmRpZgotCisgICAgCisgICAgSW50UmVjdCBjb252ZXJ0TG9naWNhbFRvRGV2aWNl
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIEludFNpemUgY29udmVydExvZ2ljYWxUb0Rl
dmljZShjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAgICBJbnRQb2ludCBjb252ZXJ0TG9naWNh
bFRvRGV2aWNlKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3QgZmxv
YXQgTWF4Q2FudmFzQXJlYTsKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigp
IGNvbnN0OwogICAgIHZvaWQgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMzY1MzAzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGEuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbWFnZURhdGEuaCIKKworI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpj
cmVhdGUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK0ltYWdlRGF0YTo6SW1h
Z2VEYXRhKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgOiBtX3dpZHRoKHdp
ZHRoKQorICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICwgbV9kYXRhKENhbnZhc1BpeGVsQXJy
YXk6OmNyZWF0ZSh3aWR0aCAqIGhlaWdodCAqIDQpKQoreworfQorCit9CisKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWFmMWY5Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1h
Z2VEYXRhX2gKKyNkZWZpbmUgSW1hZ2VEYXRhX2gKKworI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJy
YXkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRl
KHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOworCisgICAgICAgIHVuc2lnbmVkIHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgICAgICB1bnNpZ25lZCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAgICAgICBDYW52YXNQaXhlbEFycmF5KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBJbWFnZURhdGEodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisgICAgICAg
IHVuc2lnbmVkIG1fd2lkdGg7CisgICAgICAgIHVuc2lnbmVkIG1faGVpZ2h0OworICAgICAgICBS
ZWZQdHI8Q2FudmFzUGl4ZWxBcnJheT4gbV9kYXRhOworICAgIH07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEltYWdlRGF0YV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSW1hZ2VEYXRhLmlkbCBiL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmYxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBJbWFn
ZURhdGEgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ2FudmFzUGl4ZWxBcnJheSBkYXRhOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBhMTkyOThlLi44NjljZDcxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaWYgUExBVEZPUk0oQ0cpCkBAIC00Nyw2
ICs0OCw4IEBAIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBj
bGFzcyBJbWFnZURhdGE7CisgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZW5kZXJPYmpl
Y3Q7CiAKICAgICBjbGFzcyBJbWFnZUJ1ZmZlciA6IE5vbmNvcHlhYmxlIHsKQEAgLTY1LDYgKzY4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UoKSBjb25zdDsKICNlbmRpZgogCisgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCogbV9kYXRhOwogICAgICAgICBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDc3
NjUyOWUuLjFmNjhjZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNzIsNSArNzIsMTAgQEAgY2Fpcm9fc3VyZmFj
ZV90KiBJbWFnZUJ1ZmZlcjo6c3VyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFjZTsK
IH0KIAorUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKaW5kZXggMmQxYWMwMS4uZjQ1NmVjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSwgSW5jCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDYgKzI4LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKICNpbmNs
dWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtOTgsNCArMTAwLDYwIEBAIENHSW1hZ2VSZWYgSW1hZ2VC
dWZmZXI6OmNnSW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBtX2NnSW1hZ2U7CiB9CiAKK1Bhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBy
ZXN1bHQtPmRhdGEoKS0+ZGF0YSgpLmRhdGEoKTsKKyAgICAKKyAgICBpZiAocmVjdC54KCkgPCAw
IHx8IHJlY3QueSgpIDwgMCB8fCAocmVjdC54KCkgKyByZWN0LndpZHRoKCkpID4gbV9zaXplLndp
ZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkgPiBtX3NpemUuaGVpZ2h0KCkpCisg
ICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmRhdGEoKS0+bGVuZ3RoKCkpOworCisgICAg
aW50IG9yaWdpbnggPSByZWN0LngoKTsKKyAgICBpbnQgZGVzdHggPSAwOworICAgIGlmIChvcmln
aW54IDwgMCkgeworICAgICAgICBkZXN0eCA9IC1vcmlnaW54OworICAgICAgICBvcmlnaW54ID0g
MDsKKyAgICB9CisgICAgaW50IGVuZHggPSByZWN0LngoKSArIHJlY3Qud2lkdGgoKTsKKyAgICBp
ZiAoZW5keCA+IG1fc2l6ZS53aWR0aCgpKQorICAgICAgICBlbmR4ID0gbV9zaXplLndpZHRoKCk7
CisgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gb3JpZ2lueDsKKyAgICAKKyAgICBpbnQgb3Jp
Z2lueSA9IHJlY3QueSgpOworICAgIGludCBkZXN0eSA9IDA7CisgICAgaWYgKG9yaWdpbnkgPCAw
KSB7CisgICAgICAgIGRlc3R5ID0gLW9yaWdpbnk7CisgICAgICAgIG9yaWdpbnkgPSAwOworICAg
IH0KKyAgICBpbnQgZW5keSA9IHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKTsKKyAgICBpZiAoZW5k
eSA+IG1fc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgZW5keSA9IG1fc2l6ZS5oZWlnaHQoKTsKKyAg
ICBpbnQgbnVtUm93cyA9IGVuZHkgLSBvcmlnaW55OworICAgIAorICAgIHVuc2lnbmVkIHNyY0J5
dGVzUGVyUm93ID0gNCAqIG1fc2l6ZS53aWR0aCgpOworICAgIHVuc2lnbmVkIGRlc3RCeXRlc1Bl
clJvdyA9IDQgKiByZWN0LndpZHRoKCk7CisgICAgCisgICAgLy8gLW9yaWdpbnkgdG8gaGFuZGxl
IHRoZSBhY2N1cnNlZCBmbGlwcGVkIHkgYXhpcworICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3Mg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgKG1fc2l6ZS5oZWln
aHQoKSAtIG9yaWdpbnkgLSAxKSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CisgICAg
dW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cg
KyBkZXN0eCAqIDQ7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKKyAgICAgICAgICAg
IGlmICh1bnNpZ25lZCBjaGFyIGFscGhhID0gc3JjUm93c1szXSkgeworICAgICAgICAgICAgICAg
IGRlc3RSb3dzWzBdID0gKHNyY1Jvd3NbMF0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAg
ICAgZGVzdFJvd3NbMV0gPSAoc3JjUm93c1sxXSAqIDI1NSkgLyBhbHBoYTsKKyAgICAgICAgICAg
ICAgICBkZXN0Um93c1syXSA9IChzcmNSb3dzWzJdICogMjU1KSAvIGFscGhhOworICAgICAgICAg
ICAgICAgIGRlc3RSb3dzWzNdID0gYWxwaGE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cylbMF0gPSByZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cylbMF07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZXN0Um93cyArPSA0OworICAgICAgICB9CisgICAgICAgIHNyY1Jvd3MgLT0gc3Jj
Qnl0ZXNQZXJSb3c7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IGM5NWQ4Yzgu
Ljk4YmIyMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VC
dWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
clF0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
CiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVBpeG1hcD4KQEAgLTY5LDQgKzcwLDEw
IEBAIFFQaXhtYXAqIEltYWdlQnVmZmVyOjpwaXhtYXAoKSBjb25zdAogICAgIHJldHVybiAmbV9w
aXhtYXA7CiB9CiAKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VCdWZmZXJXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdl
QnVmZmVyV3guY3BwCmluZGV4IGJjNTRhODguLjJmOTMyNTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00Myw0ICs0NCwxMCBAQCBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVm
ZmVyOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorUGFzc1JlZlB0cjxJbWFn
ZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogfQo=
</data>
<flag name="review"
          id="8420"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>