<?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>125451</bug_id>
          
          <creation_ts>2013-12-09 07:12:14 -0800</creation_ts>
          <short_desc>AX: [ATK] Convert the get_{string,text}_at_offset atktest.c unit tests to layout tests</short_desc>
          <delta_ts>2013-12-09 10:37:16 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>125450</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Joanmarie Diggs">jdiggs</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>mario</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957877</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2013-12-09 07:12:14 -0800</bug_when>
    <thetext>Convert the get_{string,text}_at_offset atktest.c unit tests to layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957878</commentid>
    <comment_count>1</comment_count>
      <attachid>218757</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2013-12-09 07:29:10 -0800</bug_when>
    <thetext>Created attachment 218757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957892</commentid>
    <comment_count>2</comment_count>
      <attachid>218757</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 08:04:08 -0800</bug_when>
    <thetext>Comment on attachment 218757
Patch

Attachment 218757 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/44758142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957896</commentid>
    <comment_count>3</comment_count>
      <attachid>218757</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 08:13:04 -0800</bug_when>
    <thetext>Comment on attachment 218757
Patch

Attachment 218757 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/47228114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957899</commentid>
    <comment_count>4</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-12-09 08:16:20 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=218757&amp;action=review

I love this patch. I&apos;m happy to let it in as soon as the Mac build is fixed

&gt; Source/WebKit/gtk/tests/testatk.c:-1070
&gt; -    webkit_web_view_load_string(webView, contentsWithEmbeddedObjects, 0, 0, 0);

Could you remove the contentsWithEmbeddedObjects const variable, as it&apos;s not used anymore after the patch? Same applies to other ones that might not be unused too after this

&gt; Tools/DumpRenderTree/AccessibilityUIElement.h:220
&gt; +    // Text-specific
&gt; +    JSStringRef characterAtOffset(int offset);
&gt; +    JSStringRef wordAtOffset(int offset);
&gt; +    JSStringRef lineAtOffset(int offset);
&gt; +    JSStringRef sentenceAtOffset(int offset);

This functions are quite specifically designed to test the AtkText interface, so I think you should put them under a PLATFORM check for GTK || EFL

Otherwise, you&apos;ll need to provide dummy implementations for other platforms&apos;s versions of AccessibilityUIElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957906</commentid>
    <comment_count>5</comment_count>
      <attachid>218757</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 08:27:27 -0800</bug_when>
    <thetext>Comment on attachment 218757
Patch

Attachment 218757 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/44758147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957910</commentid>
    <comment_count>6</comment_count>
      <attachid>218766</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2013-12-09 08:37:42 -0800</bug_when>
    <thetext>Created attachment 218766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957926</commentid>
    <comment_count>7</comment_count>
      <attachid>218766</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 09:13:02 -0800</bug_when>
    <thetext>Comment on attachment 218766
Patch

Attachment 218766 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/47238121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957927</commentid>
    <comment_count>8</comment_count>
      <attachid>218766</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 09:19:52 -0800</bug_when>
    <thetext>Comment on attachment 218766
Patch

Attachment 218766 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/47238124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957931</commentid>
    <comment_count>9</comment_count>
      <attachid>218770</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2013-12-09 09:34:23 -0800</bug_when>
    <thetext>Created attachment 218770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957936</commentid>
    <comment_count>10</comment_count>
      <attachid>218770</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 09:40:46 -0800</bug_when>
    <thetext>Comment on attachment 218770
Patch

Attachment 218770 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/45888143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957944</commentid>
    <comment_count>11</comment_count>
      <attachid>218772</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2013-12-09 10:04:07 -0800</bug_when>
    <thetext>Created attachment 218772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957967</commentid>
    <comment_count>12</comment_count>
      <attachid>218772</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-12-09 10:32:48 -0800</bug_when>
    <thetext>Comment on attachment 218772
Patch

Great. Let&apos;s try this now (and watch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957971</commentid>
    <comment_count>13</comment_count>
      <attachid>218772</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 10:37:13 -0800</bug_when>
    <thetext>Comment on attachment 218772
Patch

Clearing flags on attachment: 218772

Committed r160316: &lt;http://trac.webkit.org/changeset/160316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957972</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 10:37:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218757</attachid>
            <date>2013-12-09 07:29:10 -0800</date>
            <delta_ts>2013-12-09 08:37:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125451-20131209162908.patch</filename>
            <type>text/plain</type>
            <size>87434</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Q3NmMyNDAy
YzNmMzIxZmI3MGRmM2JjMTZmNWJhNGM0NTMwNzZiMC4uNzE3MTViMzUxMjY4ZDQxYTc1N2MxNzYz
Y2MxZTVkOWUyODUwZDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBB
WDogW0FUS10gQ29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3Qu
YyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6IFJlbW92ZSB0aGUgdGVzdHMg
d2hpY2ggbm93IGV4aXN0IGFzIGxheW91dCB0ZXN0cy4gTm90ZSB0aGF0IHRoZQorICAgICAgICB0
ZXN0cyBmb3IgYXRrX3RleHRfZ2V0X3RleHRfe2JlZm9yZSxhZnRlcn1fb2Zmc2V0IHdlcmUgcmVt
b3ZlZCB3aXRob3V0IGVxdWl2YWxlbnRzCisgICAgICAgIGFkZGVkIHRvIHRoZSBsYXlvdXQgdGVz
dHMuIFRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBFTkQgQXRrVGV4dEJvdW5kYXJ5IHR5cGVzLiBC
b3RoCisgICAgICAgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIEFUSyBhbmQgYXJlIG5vdCBiZWlu
ZyB1c2VkIGJ5IEFULVNQSTIgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4KKyAgICAgICAgKHRlc3RH
ZXRUZXh0RnVuY3Rpb24pOgorICAgICAgICAobWFpbik6CisKIDIwMTMtMTItMDcgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4
cGVjdGF0aW9uIGZvbGxvd2luZyAxNjAyMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0YXRrLmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKaW5k
ZXggNTVhMDAxMTUzYmU2NTMxYzE1MjA3ODA1NDk2YjQ4ZGNkZmExYzZlMy4uZTM4Y2Y4YTRjZmU5
M2U1OTRjZWIxZGQ4MzdhMGY3NjhhODA3YmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwpAQCAtNjE0LDUxNyArNjE0LDYgQEAgc3RhdGljIHZvaWQgdGVzdEdldFRleHRGdW5jdGlvbihB
dGtUZXh0KiB0ZXh0T2JqZWN0LCBBdGtHZXRUZXh0RnVuY3Rpb24gZm4sIEF0a1QKICAgICBnX2Fz
c2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwgZW5kT2Zmc2V0UmVzdWx0KTsKICAgICBnX2ZyZWUo
dGV4dCk7CiB9Ci0KLXN0YXRpYyB2b2lkIHJ1bkdldFRleHRUZXN0cyhBdGtUZXh0KiB0ZXh0T2Jq
ZWN0KQotewotICAgIGNoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0T2JqZWN0LCAw
LCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBhIHRlc3QuIFRo
aXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIpOwotICAgIGdf
ZnJlZSh0ZXh0KTsKLQotICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX0NIQVIgKi8KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUIiwg
MCwgMSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dl
dF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDAsICJoIiwgMSwgMik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX0NIQVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIiwgMCwgMCk7Ci0KLSAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAx
LCAiVCIsIDAsIDEpOwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCAqLwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09S
RF9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDQsICJUaGlzICIsIDAsIDUpOwotCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAxMCwgInRlc3QuICIsIDEwLCAxNik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
V09SRF9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDU4LCAidGhpcmQuIiwgNTgsIDY0
KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3Rl
eHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAg
ICAgICAgICAgICAgNjQsICJ0aGlyZC4iLCA1OCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIiIsIDAs
IDApOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAg
ICAgICAgICAgICAgICAgICAgNSwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA3LCAiVGhp
cyAiLCAwLCA1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIDY0LCAidGhlICIsIDU0LCA1OCk7Ci0KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IDAsICJpcyAiLCA1LCA4KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwg
YXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NU
QVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNCwgImlzICIsIDUsIDgpOwotCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAzLCAiaXMgIiwgNSwgOCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9T
VEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDY0LCAiIiwgNjQsIDY0KTsKLQotICAgIC8q
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5EICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0
ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMiLCAwLCA0KTsKLQot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDQsICIgaXMiLCA0LCA3KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVj
dCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VO
RCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDUsICIgaXMiLCA0LCA3KTsKLQotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDksICIg
dGVzdCIsIDksIDE0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDU4LCAiIHRoaXJkIiwgNTcsIDYzKTsKLQotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDY0LCAi
LiIsIDYzLCA2NCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAot
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgIiIsIDAsIDApOwotCi0gICAgdGVzdEdldFRleHRG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtf
VEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDUsICJUaGlz
IiwgMCwgNCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAg
ICAgICAgICAgICAgICAgICAgICAgNCwgIlRoaXMiLCAwLCA0KTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA3LCAiIGlz
IiwgNCwgNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAg
ICAgICAgICAgICAgICAgICAgICAgNjQsICIgdGhpcmQiLCA1NywgNjMpOwotCi0gICAgdGVzdEdl
dFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwg
IiBpcyIsIDQsIDcpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtf
dGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAot
ICAgICAgICAgICAgICAgICAgICAgICAgNSwgIiBhIiwgNywgOSk7Ci0KLSAgICB0ZXN0R2V0VGV4
dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAiIGEi
LCA3LCA5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRf
Z2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDY0LCAiIiwgNjQsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0JP
VU5EQVJZX1NFTlRFTkNFX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2Jq
ZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRF
TkNFX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgaXMgYSB0ZXN0LiAi
LCAwLCAxNik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAxNSwgIlRoaXMgaXMgYSB0ZXN0LiAiLCAwLCAxNik7Ci0K
LSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2Fm
dGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAwLCAiVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiAiLCAxNiwgNDUp
OwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4
dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJULAotICAgICAg
ICAgICAgICAgICAgICAgICAgMTUsICJUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuICIsIDE2
LCA0NSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dl
dF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJULAot
ICAgICAgICAgICAgICAgICAgICAgICAgMTYsICJUaGlzIGlzIGEgdGVzdC4gIiwgMCwgMTYpOwot
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9i
ZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDQ0LCAiVGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAxNSwgIiIsIDAsIDApOwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVO
Q0VfRU5EICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7Ci0KLSAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAg
ICAgMTUsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIsIDE1LCA0NCk7Ci0KLSAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAg
ICAgMTYsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIsIDE1LCA0NCk7Ci0KLSAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAg
ICAgMTcsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIsIDE1LCA0NCk7Ci0KLSAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIiwgMTUsIDQ0KTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAxNSwgIiBBbmQgdGhpcyB0aGUgdGhpcmQuIiwgNDQsIDY0KTsKLQotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAg
ICAgMTYsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0
aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiVGhp
cyBpcyBhIHRlc3QuIiwgMCwgMTUpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2Jq
ZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9T
RU5URU5DRV9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNCwgIiIsIDAsIDApOwotCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZv
cmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICA0NCwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIiwgMTUsIDQ0KTsK
LQotICAgIC8qIEl0J3MgdHJpY2t5IHRvIHRlc3QgdGhlc2UgcHJvcGVybHkgcmlnaHQgbm93LCBz
aW5jZSBvdXIgYTExeQotICAgICAgIGltcGxlbWVudGF0aW9uIHNwbGl0cyBkaWZmZXJlbnQgbGlu
ZXMgaW4gZGlmZmVyZW50IGExMXkgaXRlbXMuICovCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllf
TElORV9TVEFSVCAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULAotICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNv
bmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4iLCAwLCA2NCk7Ci0KLSAgICAvKiBBVEtf
VEVYVF9CT1VOREFSWV9MSU5FX0VORCAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9i
amVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBp
cyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQuIiwgMCwgNjQpOwotCi0g
ICAgLyogRm9yIG9iamVjdHMgaW1wbGVtZW50aW5nIEF0a0VkaXRhYmxlVGV4dCwgdHJ5IHRvIGNo
YW5nZSB0aGUKLSAgICAgICBleHBvc2VkIHRleHQgYW5kIHJldHJpZXZlIGl0IGFnYWluIGFzIGEg
ZnVsbCBsaW5lLgotICAgICAgIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcyODMwKSAqLwotICAgIGlmIChBVEtfSVNfRURJVEFCTEVfVEVYVCh0ZXh0T2JqZWN0
KSkgewotICAgICAgICBhdGtfZWRpdGFibGVfdGV4dF9zZXRfdGV4dF9jb250ZW50cyhBVEtfRURJ
VEFCTEVfVEVYVCh0ZXh0T2JqZWN0KSwgImZvbyBiYXIgYmF6Iik7Ci0gICAgICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtf
VEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAwLCAiZm9vIGJhciBiYXoiLCAwLCAxMSk7Ci0gICAg
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMCwgImZvbyBiYXIgYmF6IiwgMCwg
MTEpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNl
dCgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJr
aXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAg
IEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtf
d2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwot
ICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50cywgMCwgMCwg
MCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0
a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2Vy
dChvYmplY3QpOwotICAgIG9iamVjdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQo
b2JqZWN0LCAwKTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrVGV4dCogdGV4dE9i
amVjdCA9IEFUS19URVhUKG9iamVjdCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dE9i
amVjdCkpOwotCi0gICAgcnVuR2V0VGV4dFRlc3RzKHRleHRPYmplY3QpOwotCi0gICAgZ19vYmpl
Y3RfdW5yZWYob2JqZWN0KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3Rh
dGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldE5ld2xpbmVzKCkKLXsKLSAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlv
biBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9h
bGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aE5ld2xpbmVzLCAwLCAwLCAw
KTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICovCi0gICAgQXRr
T2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0
KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChv
YmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtUZXh0KiB0ZXh0T2Jq
ZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0T2Jq
ZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4dE9iamVjdCk7Ci0KLSAgICBnX29iamVj
dF91bnJlZihvYmplY3QpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0VGV4dGFyZWEoKQotewotICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9u
IGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2Fs
bG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRhcmVhLCAwLCAwLCAwKTsK
LQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICovCi0gICAgQXRrT2Jq
ZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9i
amVjdCk7Ci0gICAgQXRrT2JqZWN0KiBjaGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVf
Y2hpbGQob2JqZWN0LCAwKTsKLSAgICBnX2Fzc2VydChjaGlsZCk7Ci0gICAgQXRrT2JqZWN0KiBn
cmFuZGNoaWxkID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChjaGlsZCwgMCk7Ci0g
ICAgZ19hc3NlcnQoZ3JhbmRjaGlsZCk7Ci0KLSAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRL
X1RFWFQoZ3JhbmRjaGlsZCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dE9iamVjdCkp
OwotCi0gICAgcnVuR2V0VGV4dFRlc3RzKHRleHRPYmplY3QpOwotCi0gICAgZ19vYmplY3RfdW5y
ZWYoY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hpbGQpOwotICAgIGdfb2JqZWN0
X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0
T2Zmc2V0VGV4dElucHV0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmso
d2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYw
MCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAm
YWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNv
bnRlbnRzSW5UZXh0SW5wdXQsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBB
dGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmpl
Y3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIGNoaWxk
ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNz
ZXJ0KGNoaWxkKTsKLSAgICBBdGtPYmplY3QqIGdyYW5kY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKGNoaWxkLCAwKTsKLSAgICBnX2Fzc2VydChncmFuZGNoaWxkKTsKLQot
ICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChncmFuZGNoaWxkKTsKLSAgICBnX2Fz
c2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4
dE9iamVjdCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5y
ZWYoZ3JhbmRjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCgp
Ci17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRf
d2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0
a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lk
Z2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAg
IHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhQcmVmb3Jt
YXR0ZWRUZXh0LCAwLCAwLCAwKTsKLQotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJl
YU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0
KiBwcmVmb3JtYXR0ZWRUZXh0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmpl
Y3QsIDApOwotICAgIGdfYXNzZXJ0KEFUS19JU19PQkpFQ1QocHJlZm9ybWF0dGVkVGV4dCkpOwot
ICAgIGdfYXNzZXJ0KGF0a19vYmplY3RfZ2V0X3JvbGUocHJlZm9ybWF0dGVkVGV4dCkgPT0gQVRL
X1JPTEVfUEFORUwpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHByZWZvcm1hdHRlZFRleHQp
KTsKLSAgICBjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQocHJlZm9ybWF0
dGVkVGV4dCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJcdFxuXHRm
aXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0g
ICAgLyogVHJ5IHJldHJpZXZpbmcgYWxsIHRoZSBsaW5lcyBpbmRpY2F0aW5nIHRoZSBwb3NpdGlv
biBvZiB0aGUgb2Zmc2V0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggb2YgdGhlbS4gKi8KLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQpLCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsICJc
dFxuIiwgMCwgMik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChwcmVmb3JtYXR0
ZWRUZXh0KSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9M
SU5FX1NUQVJULCAyLCAiXHRmaXJzdCBsaW5lXG4iLCAyLCAxNCk7Ci0gICAgdGVzdEdldFRleHRG
dW5jdGlvbihBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgYXRrX3RleHRfZ2V0X3RleHRfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAxNCwgIlx0c2Vjb25kIGxpbmVc
biIsIDE0LCAyNyk7Ci0KLSAgICBnX29iamVjdF91bnJlZihwcmVmb3JtYXR0ZWRUZXh0KTsKLSAg
ICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0
a0dldFRleHRBdE9mZnNldFdpdGhTcGVjaWFsQ2hhcmFjdGVycygpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwot
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Nh
dGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUo
R1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhTcGVjaWFsQ2hhcnMsIDAsIDAsIDApOwot
Ci0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmpl
Y3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2Jq
ZWN0KTsKLQotICAgIEF0a09iamVjdCogcGFyYWdyYXBoID0gYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFw
aCkpOwotCi0gICAgZ2NoYXIqIGV4cGVjdGVkVGV4dCA9IGdfc3RyZHVwKCJcMzAyXDI1M1wzMDJc
MjQwVGhpcyBpcyBhIHBhcmFncmFwaCB3aXRoIFwzNDJcMjAwXDIzNHNwZWNpYWxcMzQyXDIwMFwy
MzUgY2hhcmFjdGVycyBpbnNpZGUuXDMwMlwyNDBcMzAyXDI3MyIpOwotICAgIGNoYXIqIHRleHQg
PSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChwYXJhZ3JhcGgpLCAwLCAtMSk7Ci0gICAgZ19h
c3NlcnRfY21wc3RyKHRleHQsID09LCBleHBlY3RlZFRleHQpOwotICAgIGdfZnJlZSh0ZXh0KTsK
LQotICAgIC8qIENoZWNrIHRoYXQgZ2V0dGluZyB0aGUgdGV4dCB3aXRoIEFUS19URVhUX0JPVU5E
QVJZX0xJTkVfU1RBUlQKLSAgICAgICBhbmQgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQgZG9l
cyBub3QgY3Jhc2ggYmVjYXVzZSBvZiBub3QKLSAgICAgICBwcm9wZXJseSBoYW5kbGluZyBjaGFy
YWN0ZXJzIGluc2lkZSB0aGUgVVRGLTggc3RyaW5nLiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24oQVRLX1RFWFQocGFyYWdyYXBoKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtf
VEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAwLCBleHBlY3RlZFRleHQsIDAsIDU3KTsKLSAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhUKHBhcmFncmFwaCksIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDAsIGV4cGVjdGVkVGV4dCwg
MCwgNTcpOwotICAgIGdfZnJlZShleHBlY3RlZFRleHQpOwotCi0gICAgQXRrT2JqZWN0KiBsaXN0
ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpOwotICAgIGdfYXNz
ZXJ0KEFUS19PQkpFQ1QobGlzdCkpOwotCi0gICAgQXRrVGV4dCogbGlzdEl0ZW0gPSBBVEtfVEVY
VChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGxpc3QsIDApKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwotCi0gICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0
KEFUS19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9
PSwgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jv
c3MgZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIC8qIENoZWNr
IHRoYXQgZ2V0dGluZyB0aGUgdGV4dCB3aXRoIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQK
LSAgICAgICBhbmQgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQgZm9yIGxpbmUgaXRlbXMgd2l0
aCBidWxsZXRzCi0gICAgICAgKHNwZWNpYWwgY2hhcmFjdGVyKSBhbmQgd3JhcHBlZCB0ZXh0IGFs
d2F5cyByZXR1cm4gdGhlIHJpZ2h0Ci0gICAgICAgcGllY2Ugb2YgdGV4dCBmb3IgZWFjaCBsaW5l
LiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDMsICJc
MzQyXDIwMFwyNDIgTGlzdCBpdGVtICIsIDAsIDEyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KEFUS19URVhUKGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX1NUQVJULCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwotICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfdGV4dF9h
dF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAwLCAiXDM0MlwyMDBcMjQyIExp
c3QgaXRlbSIsIDAsIDExKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhUKGxpc3RJ
dGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCwgMTIsICIgd2l0aCBzb21lIiwgMTEsIDIxKTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGxp
c3RJdGVtKTsKLQotICAgIGxpc3RJdGVtID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChsaXN0LCAxKSk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobGlzdEl0ZW0p
KTsKLQotICAgIC8qIENoZWNrIHRoYXQgcGxhY2luZyB0aGUgc2FtZSB0ZXh0IGluIGEgcGFyYWdy
YXBoIGRvZXNuJ3QgYnJlYWsgdGhpbmdzLiAqLwotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4
dChBVEtfVEVYVChsaXN0SXRlbSksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwg
PT0sICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNy
b3NzIGRpZmZlcmVudCBsaW5lcy4iKTsKLSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICB0ZXN0R2V0
VGV4dEZ1bmN0aW9uKEFUS19URVhUKGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAzLCAiXDM0MlwyMDBcMjQyIExpc3Qg
aXRlbSAiLCAwLCAxMik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRl
bSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9T
VEFSVCwgMTMsICJ3aXRoIHNvbWUgIiwgMTIsIDIyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KEFUS19URVhUKGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCwgMCwgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0iLCAwLCAxMSk7
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDEyLCAiIHdpdGgg
c29tZSIsIDExLCAyMSk7Ci0KLSAgICBnX29iamVjdF91bnJlZihsaXN0KTsKLSAgICBnX29iamVj
dF91bnJlZihsaXN0SXRlbSk7Ci0gICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoKTsKLSAgICBn
X29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dl
dFRleHRBdE9mZnNldFdpdGhXcmFwcGVkTGluZXMoKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29i
amVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7
IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURH
RVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJp
bmcod2ViVmlldywgY29udGVudHNXaXRoV3JhcHBlZExpbmVzLCAwLCAwLCAwKTsKLQotICAgIC8q
IEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICovCi0gICAgQXRrT2JqZWN0KiBvYmpl
Y3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0K
LSAgICAvKiBDaGVjayB0aGUgcGFyYWdyYXBoIHdpdGggdGhlIHRleHQgd3JhcHBlZCBiZWNhdXNl
IG9mIG1heC13aWR0aC4gKi8KLSAgICBBdGtUZXh0KiBwYXJhZ3JhcGgxID0gQVRLX1RFWFQoYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApKTsKLSAgICBnX2Fzc2VydChB
VEtfSVNfVEVYVChwYXJhZ3JhcGgxKSk7Ci0KLSAgICBnY2hhciogdGV4dCA9IGF0a190ZXh0X2dl
dF90ZXh0KHBhcmFncmFwaDEsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0s
ICJUaGlzIGlzIG9uZSBsaW5lIHdyYXBwZWQgYmVjYXVzZSBvZiB0aGUgbWF4aW11bSB3aWR0aCBv
ZiBpdHMgY29udGFpbmVyLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfQ0hBUiwgMTYsICJlIiwgMTUsIDE2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfQ0hBUiwgMTYsICIgIiwgMTYsIDE3KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfQ0hBUiwgMTYsICJ3IiwgMTcsIDE4KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfV09SRF9TVEFSVCwgMTYsICJvbmUgIiwgOCwgMTIpOwotICAgIHRlc3RHZXRUZXh0RnVu
Y3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX1NUQVJULCAxNiwgImxpbmUgIiwgMTIsIDE3KTsKLSAgICB0ZXN0R2V0VGV4
dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMTYsICJ3cmFwcGVkICIsIDE3LCAyNSk7Ci0KLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9y
ZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAxNiwgIiBsaW5lIiwgMTEsIDE2
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDE2LCAiIHdyYXBwZWQiLCAx
NiwgMjQpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwgMTYsICIgYmVj
YXVzZSIsIDI0LCAzMik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0
a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RB
UlQsIDE3LCAiVGhpcyBpcyBvbmUgbGluZSAiLCAwLCAxNyk7Ci0gICAgdGVzdEdldFRleHRGdW5j
dGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfU1RBUlQsIDE3LCAid3JhcHBlZCBiZWNhdXNlICIsIDE3LCAzMyk7Ci0gICAg
dGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDE3LCAib2YgdGhlIG1heGltdW0g
IiwgMzMsIDQ4KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3Rl
eHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDE3
LCAiVGhpcyBpcyBvbmUgbGluZSIsIDAsIDE2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBh
cmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
TElORV9FTkQsIDE3LCAiIHdyYXBwZWQgYmVjYXVzZSIsIDE2LCAzMik7Ci0gICAgdGVzdEdldFRl
eHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAxNywgIiBvZiB0aGUgbWF4aW11bSIsIDMyLCA0Nyk7
Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgxKTsKLQotICAgIC8qIENoZWNrIHRoZSBw
YXJhZ3JhcGggd2l0aCB0aGUgdGV4dCB3cmFwcGVkIGJlY2F1c2Ugb2YgPGJyPiBlbGVtZW50cy4g
Ki8KLSAgICBBdGtUZXh0KiBwYXJhZ3JhcGgyID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNj
ZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJh
Z3JhcGgyKSk7Ci0KLSAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMiwgMCwg
LTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgYW5vdGhlciBsaW5l
IHdyYXBwZWRcbmJlY2F1c2Ugb2Ygb25lIGZvcmNlZFxubGluZSBicmVhayBpbiB0aGUgbWlkZGxl
LiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
Q0hBUiwgMjgsICJkIiwgMjcsIDI4KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFw
aDIsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwg
MjgsICJcbiIsIDI4LCAyOSk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBh
dGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIsIDI4
LCAiYiIsIDI5LCAzMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0
a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RB
UlQsIDI4LCAibGluZSAiLCAxNiwgMjEpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JE
X1NUQVJULCAyOCwgIndyYXBwZWRcbiIsIDIxLCAyOSk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlv
bihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX1dPUkRfU1RBUlQsIDI4LCAiYmVjYXVzZSAiLCAyOSwgMzcpOwotCi0gICAgdGVzdEdl
dFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0
LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwgMjgsICIgd3JhcHBlZCIsIDIwLCAyOCk7Ci0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAyOCwgIlxuYmVjYXVzZSIsIDI4LCAz
Nik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4
dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAyOCwgIiBvZiIsIDM2
LCAzOSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dl
dF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDMwLCAi
VGhpcyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZFxuIiwgMCwgMjkpOwotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX1NUQVJULCAzMCwgImJlY2F1c2Ugb2Ygb25lIGZvcmNlZFxuIiwgMjks
IDUxKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90
ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMzAsICJsaW5l
IGJyZWFrIGluIHRoZSBtaWRkbGUuIiwgNTEsIDc2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfTElORV9FTkQsIDMwLCAiVGhpcyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZCIsIDAs
IDI4KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90
ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDMwLCAiXG5iZWNhdXNl
IG9mIG9uZSBmb3JjZWQiLCAyOCwgNTApOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9M
SU5FX0VORCwgMzAsICJcbmxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iLCA1MCwgNzYpOwotCi0g
ICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoMik7Ci0KLSAgICBnX29iamVjdF91bnJlZih3ZWJW
aWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFdpdGhF
bWJlZGRlZE9iamVjdHMoKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3
ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAw
IH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZh
bGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29u
dGVudHNXaXRoRW1iZWRkZWRPYmplY3RzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUg
aW5uZXIgQXRrVGV4dCBvYmplY3QuICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJB
cmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICAvKiBDaGVj
ayB0aGUgcGFyYWdyYXBoIHdpdGggdGhlIHRleHQgd3JhcHBlZCBiZWNhdXNlIG9mIG1heC13aWR0
aC4gKi8KLSAgICBBdGtUZXh0KiBwYXJhZ3JhcGggPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBh
cmFncmFwaCkpOwotCi0gICAgZ2NoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChwYXJhZ3Jh
cGgsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJUaGlzIGlzIG9uZSBs
aW5lIGNvbnRhaW5pbmcgdHdvIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCBvYmplY3RzIFwzNTdcMjc3
XDI3NCBpbiB0aGUgbWlkZGxlLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIC8qIENoZWNr
IHJpZ2h0IGJlZm9yZSB0aGUgZmlyc3QgZW1iZWRkZWQgb2JqZWN0ICovCi0gICAgdGVzdEdldFRl
eHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfQ0hBUiwgMzIsICJcMzU3XDI3N1wyNzQiLCAzMiwgMzMpOwotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDMyLCAidHdvIFwzNTdcMjc3XDI3NCAiLCAyOCwg
MzQpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAzMiwgIiBcMzU3XDI3N1wy
NzQgZW1iZWRkZWQiLCAzMSwgNDIpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYWZ0ZXIgdGhlIGZp
cnN0IGVtYmVkZGVkIG9iamVjdCAoYW5kIGJlZm9yZSB0aGUgZmlyc3Qgd29yZCBhZnRlciBpdCkg
Ki8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAzMywgIiAiLCAzMywgMzQpOwotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDMzLCAidHdvIFwzNTdcMjc3XDI3NCAi
LCAyOCwgMzQpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAzMywgIiBcMzU3
XDI3N1wyNzQgZW1iZWRkZWQiLCAzMSwgNDIpOwotCi0gICAgLyogQ2hlY2sgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZmlyc3Qgd29yZCBiZXR3ZWVuIHRoZSB0d28gZW1iZWRkZWQgb2JqZWN0cyAq
LwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9h
dF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIsIDM0LCAiZSIsIDM0LCAzNSk7Ci0gICAg
dGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMzQsICJlbWJlZGRlZCAiLCAzNCwgNDMp
OwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9h
dF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAzNCwgIiBcMzU3XDI3N1wyNzQg
ZW1iZWRkZWQiLCAzMSwgNDIpOwotCi0gICAgLyogQ2hlY2sgYXQgdGhlIGVuZCBvZiB0aGUgZmly
c3Qgd29yZCBiZXR3ZWVuIHRoZSB0d28gZW1iZWRkZWQgb2JqZWN0cyAqLwotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX0NIQVIsIDQyLCAiICIsIDQyLCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5j
dGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfV09SRF9TVEFSVCwgNDIsICJlbWJlZGRlZCAiLCAzNCwgNDMpOwotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX1dPUkRfRU5ELCA0MiwgIiBvYmplY3RzIiwgNDIsIDUwKTsKLQotICAgIC8q
IENoZWNrIHJpZ2h0IGJlZm9yZSB0aGUgc2Vjb25kIGVtYmVkZGVkIG9iamVjdCAqLwotICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0NIQVIsIDUxLCAiXDM1N1wyNzdcMjc0IiwgNTEsIDUyKTsKLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA1MSwgIm9iamVjdHMgXDM1N1wyNzdc
Mjc0ICIsIDQzLCA1Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190
ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDUxLCAi
IFwzNTdcMjc3XDI3NCBpbiIsIDUwLCA1NSk7Ci0KLSAgICAvKiBDaGVjayByaWdodCBhZnRlciB0
aGUgc2Vjb25kIGVtYmVkZGVkIG9iamVjdCAoYW5kIGJlZm9yZSB0aGUgZmlyc3Qgd29yZCBhZnRl
ciBpdCkgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0
X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCA1MiwgIiAiLCA1MiwgNTMp
OwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9h
dF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDUyLCAib2JqZWN0cyBcMzU3
XDI3N1wyNzQgIiwgNDMsIDUzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwg
YXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwg
NTIsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3Rz
ICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTMsICJpIiwgNTMsIDU0KTsKLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA1MywgImluICIsIDUzLCA1Nik7Ci0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDUzLCAiIFwzNTdcMjc3XDI3NCBpbiIs
IDUwLCA1NSk7Ci0KLSAgICAvKiBDaGVjayBhdCB0aGUgZW5kIG9mIHRoZSBmaXJzdCB3b3JkIGFm
dGVyIHRoZSB0d28gZW1iZWRkZWQgb2JqZWN0cyAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X0NIQVIsIDU1LCAiICIsIDU1LCA1Nik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9T
VEFSVCwgNTUsICJpbiAiLCA1MywgNTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRf
RU5ELCA1NSwgIiB0aGUiLCA1NSwgNTkpOwotCi0gICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBo
KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQogI2Vsc2UgLy8gIUFUS19DSEVD
S19WRVJTSU9OKDIsIDEwLCAwKQogCiB0eXBlZGVmIGdjaGFyKiAoKkF0a0dldFN0cmluZ0Z1bmN0
aW9uKSAoQXRrVGV4dCosIGdpbnQsIEF0a1RleHRHcmFudWxhcml0eSwgZ2ludCosIGdpbnQqKTsK
QEAgLTExNDAsMzM5ICs2MjksNiBAQCBzdGF0aWMgdm9pZCB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24o
QXRrVGV4dCogdGV4dE9iamVjdCwgQXRrR2V0U3RyaW5nRnVuY3Rpb24gZm4sCiAgICAgZ19mcmVl
KHRleHQpOwogfQogCi1zdGF0aWMgdm9pZCBydW5HZXRTdHJpbmdUZXN0cyhBdGtUZXh0KiB0ZXh0
T2JqZWN0KQotewotICAgIGNoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0T2JqZWN0
LCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBhIHRlc3Qu
IFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIpOwotICAg
IGdfZnJlZSh0ZXh0KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIgKi8KLSAg
ICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAwLCAiVCIsIDAsIDEpOwotCi0gICAgLyogQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCAq
LwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDAsICJUaGlzICIsIDAsIDUpOwotCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9u
KHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFO
VUxBUklUWV9XT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgNCwgIlRoaXMgIiwgMCwgNSk7
Ci0KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0
cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAxMCwgInRlc3QuICIsIDEwLCAxNik7Ci0KLSAgICB0ZXN0R2V0U3RyaW5nRnVu
Y3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhU
X0dSQU5VTEFSSVRZX1dPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1OCwgInRoaXJkLiIs
IDU4LCA2NCk7Ci0KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICA2NCwgInRoaXJkLiIsIDU4LCA2NCk7Ci0KLSAgICAvKiBBVEtf
VEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0
ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVM
QVJJVFlfU0VOVEVOQ0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBhIHRl
c3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBh
dGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfU0VOVEVO
Q0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIlRoaXMgaXMgYSB0ZXN0LiAiLCAwLCAx
Nik7Ci0KLSAgICAvKiBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FICovCi0gICAgLyogSXQncyB0
cmlja3kgdG8gdGVzdCB0aGVzZSBwcm9wZXJseSByaWdodCBub3csIHNpbmNlIG91ciBhMTF5Ci0g
ICAgICAgaW1wbGVtZW50YXRpb24gc3BsaXRzIGRpZmZlcmVudCBsaW5lcyBpbiBkaWZmZXJlbnQg
YTExeSBpdGVtcy4gKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJTkUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNl
Y29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIsIDAsIDY0KTsKLQotICAgIC8qIEZv
ciBvYmplY3RzIGltcGxlbWVudGluZyBBdGtFZGl0YWJsZVRleHQsIHRyeSB0byBjaGFuZ2UgdGhl
Ci0gICAgICAgZXhwb3NlZCB0ZXh0IGFuZCByZXRyaWV2ZSBpdCBhZ2FpbiBhcyBhIGZ1bGwgbGlu
ZS4KLSAgICAgICAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjgzMCkgKi8KLSAgICBpZiAoQVRLX0lTX0VESVRBQkxFX1RFWFQodGV4dE9iamVjdCkpIHsKLSAg
ICAgICAgYXRrX2VkaXRhYmxlX3RleHRfc2V0X3RleHRfY29udGVudHMoQVRLX0VESVRBQkxFX1RF
WFQodGV4dE9iamVjdCksICJmb28gYmFyIGJheiIpOwotICAgICAgICB0ZXN0R2V0U3RyaW5nRnVu
Y3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhU
X0dSQU5VTEFSSVRZX0xJTkUsIDAsICJmb28gYmFyIGJheiIsIDAsIDExKTsKLSAgICB9Ci19Ci0K
LXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldCgpCi17Ci0gICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3
KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24g
YWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxs
b2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJf
dmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50cywgMCwgMCwgMCk7Ci0KLSAgICAvKiBH
ZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0
ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotICAg
IG9iamVjdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKTsKLSAg
ICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhU
KG9iamVjdCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dE9iamVjdCkpOwotCi0gICAg
cnVuR2V0U3RyaW5nVGVzdHModGV4dE9iamVjdCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihvYmpl
Y3QpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXROZXdsaW5lcygpCi17Ci0gICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAg
IGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlv
biA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RL
X1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhOZXdsaW5lcywgMCwgMCwgMCk7Ci0KLSAgICAv
KiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2Jq
ZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwot
ICAgIG9iamVjdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKTsK
LSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19U
RVhUKG9iamVjdCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dE9iamVjdCkpOwotCi0g
ICAgcnVuR2V0U3RyaW5nVGVzdHModGV4dE9iamVjdCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihv
YmplY3QpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0
ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRUZXh0YXJlYSgpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwot
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Nh
dGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUo
R1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c0luVGV4dGFyZWEsIDAsIDAsIDApOwotCi0gICAg
LyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9i
amVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsK
LSAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChv
YmplY3QsIDApOwotICAgIGdfYXNzZXJ0KGNoaWxkKTsKLSAgICBBdGtPYmplY3QqIGdyYW5kY2hp
bGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGNoaWxkLCAwKTsKLSAgICBnX2Fz
c2VydChncmFuZGNoaWxkKTsKLQotICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChn
cmFuZGNoaWxkKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAg
ICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGNo
aWxkKTsKLSAgICBnX29iamVjdF91bnJlZihncmFuZGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJl
Zih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zm
c2V0VGV4dElucHV0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dF
Ql9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2Vi
Vmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9
OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxs
b2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRl
bnRzSW5UZXh0SW5wdXQsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtU
ZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qo
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIGNoaWxkID0g
YXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0
KGNoaWxkKTsKLSAgICBBdGtPYmplY3QqIGdyYW5kY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nl
c3NpYmxlX2NoaWxkKGNoaWxkLCAwKTsKLSAgICBnX2Fzc2VydChncmFuZGNoaWxkKTsKLQotICAg
IEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChncmFuZGNoaWxkKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0
T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJl
ZihncmFuZGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3RhdGlj
IHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFByZWZvcm1hdHRlZFRleHQo
KQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0
X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBH
dGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dp
ZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNXaXRoUHJlZm9y
bWF0dGVkVGV4dCwgMCwgMCwgMCk7Ci0KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFy
ZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLQotICAgIEF0a09iamVj
dCogcHJlZm9ybWF0dGVkVGV4dCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2Jq
ZWN0LCAwKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfT0JKRUNUKHByZWZvcm1hdHRlZFRleHQpKTsK
LSAgICBnX2Fzc2VydChhdGtfb2JqZWN0X2dldF9yb2xlKHByZWZvcm1hdHRlZFRleHQpID09IEFU
S19ST0xFX1BBTkVMKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwcmVmb3JtYXR0ZWRUZXh0
KSk7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHByZWZvcm1h
dHRlZFRleHQpLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiXHRcblx0
Zmlyc3QgbGluZVxuXHRzZWNvbmQgbGluZVxuXHRcbiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQot
ICAgIC8qIFRyeSByZXRyaWV2aW5nIGFsbCB0aGUgbGluZXMgaW5kaWNhdGluZyB0aGUgcG9zaXRp
b24gb2YgdGhlIG9mZnNldHMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIG9mIHRoZW0uICovCi0g
ICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQpLCBhdGtf
dGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMCwg
Ilx0XG4iLCAwLCAyKTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQocHJlZm9y
bWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFO
VUxBUklUWV9MSU5FLCAyLCAiXHRmaXJzdCBsaW5lXG4iLCAyLCAxNCk7Ci0gICAgdGVzdEdldFN0
cmluZ0Z1bmN0aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQpLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMTQsICJcdHNlY29uZCBs
aW5lXG4iLCAxNCwgMjcpOwotCi0gICAgZ19vYmplY3RfdW5yZWYocHJlZm9ybWF0dGVkVGV4dCk7
Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJr
aXRBdGtHZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hhcmFjdGVycygpCi17Ci0gICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3
KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24g
YWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxs
b2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJf
dmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhTcGVjaWFsQ2hhcnMsIDAsIDAs
IDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBB
dGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3Nl
cnQob2JqZWN0KTsKLQotICAgIEF0a09iamVjdCogcGFyYWdyYXBoID0gYXRrX29iamVjdF9yZWZf
YWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBh
cmFncmFwaCkpOwotCi0gICAgZ2NoYXIqIGV4cGVjdGVkVGV4dCA9IGdfc3RyZHVwKCJcMzAyXDI1
M1wzMDJcMjQwVGhpcyBpcyBhIHBhcmFncmFwaCB3aXRoIFwzNDJcMjAwXDIzNHNwZWNpYWxcMzQy
XDIwMFwyMzUgY2hhcmFjdGVycyBpbnNpZGUuXDMwMlwyNDBcMzAyXDI3MyIpOwotICAgIGNoYXIq
IHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChwYXJhZ3JhcGgpLCAwLCAtMSk7Ci0g
ICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCBleHBlY3RlZFRleHQpOwotICAgIGdfZnJlZSh0
ZXh0KTsKLQotICAgIC8qIENoZWNrIHRoYXQgZ2V0dGluZyB0aGUgdGV4dCB3aXRoIEFUS19URVhU
X0JPVU5EQVJZX0xJTkVfU1RBUlQgZG9lcyBub3QgY3Jhc2gKLSAgICAgICBiZWNhdXNlIG9mIG5v
dCBwcm9wZXJseSBoYW5kbGluZyBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgVVRGLTggc3RyaW5nLiAq
LwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBVEtfVEVYVChwYXJhZ3JhcGgpLCBhdGtfdGV4
dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMCwgZXhw
ZWN0ZWRUZXh0LCAwLCA1Nyk7Ci0gICAgZ19mcmVlKGV4cGVjdGVkVGV4dCk7Ci0KLSAgICBBdGtP
YmplY3QqIGxpc3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSk7
Ci0gICAgZ19hc3NlcnQoQVRLX09CSkVDVChsaXN0KSk7Ci0KLSAgICBBdGtUZXh0KiBsaXN0SXRl
bSA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQobGlzdCwgMCkpOwot
ICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGxpc3RJdGVtKSk7Ci0KLSAgICB0ZXh0ID0gYXRrX3Rl
eHRfZ2V0X3RleHQoQVRLX1RFWFQobGlzdEl0ZW0pLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21w
c3RyKHRleHQsID09LCAiXDM0MlwyMDBcMjQyIExpc3QgaXRlbSB3aXRoIHNvbWUgdGV4dCB0aGF0
IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0g
ICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllf
TElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCBmb3IgbGlu
ZSBpdGVtcyB3aXRoIGJ1bGxldHMKLSAgICAgICAoc3BlY2lhbCBjaGFyYWN0ZXIpIGFuZCB3cmFw
cGVkIHRleHQgYWx3YXlzIHJldHVybiB0aGUgcmlnaHQKLSAgICAgICBwaWVjZSBvZiB0ZXh0IGZv
ciBlYWNoIGxpbmUuICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19URVhUKGxpc3RJ
dGVtKSwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0xJTkUsIDMsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtICIsIDAsIDEyKTsKLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0
X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMTMsICJ3aXRoIHNvbWUgIiwgMTIs
IDIyKTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGxpc3RJdGVtKTsKLQotICAgIGxpc3RJdGVtID0g
QVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChsaXN0LCAxKSk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQobGlzdEl0ZW0pKTsKLQotICAgIC8qIENoZWNrIHRoYXQgcGxh
Y2luZyB0aGUgc2FtZSB0ZXh0IGluIGEgcGFyYWdyYXBoIGRvZXNuJ3QgYnJlYWsgdGhpbmdzLiAq
LwotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChsaXN0SXRlbSksIDAsIC0x
KTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVt
IHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4iKTsKLSAg
ICBnX2ZyZWUodGV4dCk7Ci0KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQobGlz
dEl0ZW0pLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJ
VFlfTElORSwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gIiwgMCwgMTIpOwotICAgIHRlc3RH
ZXRTdHJpbmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF9zdHJpbmdf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAxMywgIndpdGggc29tZSAiLCAx
MiwgMjIpOwotCi0gICAgZ19vYmplY3RfdW5yZWYobGlzdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYo
bGlzdEl0ZW0pOwotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaCk7Ci0gICAgZ19vYmplY3Rf
dW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdB
dE9mZnNldFdpdGhXcmFwcGVkTGluZXMoKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29iamVjdF9y
ZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAs
IDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2Vi
VmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2Vi
VmlldywgY29udGVudHNXaXRoV3JhcHBlZExpbmVzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0
byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBn
ZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICAv
KiBDaGVjayB0aGUgcGFyYWdyYXBoIHdpdGggdGhlIHRleHQgd3JhcHBlZCBiZWNhdXNlIG9mIG1h
eC13aWR0aC4gKi8KLSAgICBBdGtUZXh0KiBwYXJhZ3JhcGgxID0gQVRLX1RFWFQoYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApKTsKLSAgICBnX2Fzc2VydChBVEtfSVNf
VEVYVChwYXJhZ3JhcGgxKSk7Ci0KLSAgICBnY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0
KHBhcmFncmFwaDEsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJUaGlz
IGlzIG9uZSBsaW5lIHdyYXBwZWQgYmVjYXVzZSBvZiB0aGUgbWF4aW11bSB3aWR0aCBvZiBpdHMg
Y29udGFpbmVyLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5j
dGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRf
R1JBTlVMQVJJVFlfQ0hBUiwgMTYsICIgIiwgMTYsIDE3KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVu
Y3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhU
X0dSQU5VTEFSSVRZX1dPUkQsIDE2LCAibGluZSAiLCAxMiwgMTcpOwotICAgIHRlc3RHZXRTdHJp
bmdGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRL
X1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMTcsICJ3cmFwcGVkIGJlY2F1c2UgIiwgMTcsIDMzKTsK
LQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaDEpOwotCi0gICAgLyogQ2hlY2sgdGhlIHBh
cmFncmFwaCB3aXRoIHRoZSB0ZXh0IHdyYXBwZWQgYmVjYXVzZSBvZiA8YnI+IGVsZW1lbnRzLiAq
LwotICAgIEF0a1RleHQqIHBhcmFncmFwaDIgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nl
c3NpYmxlX2NoaWxkKG9iamVjdCwgMSkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFn
cmFwaDIpKTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChwYXJhZ3JhcGgyLCAwLCAt
MSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBhbm90aGVyIGxpbmUg
d3JhcHBlZFxuYmVjYXVzZSBvZiBvbmUgZm9yY2VkXG5saW5lIGJyZWFrIGluIHRoZSBtaWRkbGUu
Iik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaDIsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9DSEFSLCAyOCwgIlxuIiwgMjgsIDI5KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFS
SVRZX1dPUkQsIDI4LCAid3JhcHBlZFxuIiwgMjEsIDI5KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVu
Y3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhU
X0dSQU5VTEFSSVRZX0xJTkUsIDMwLCAiYmVjYXVzZSBvZiBvbmUgZm9yY2VkXG4iLCAyOSwgNTEp
OwotCi0gICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoMik7Ci0KLSAgICBnX29iamVjdF91bnJl
Zih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zm
c2V0V2l0aEVtYmVkZGVkT2JqZWN0cygpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwg
ODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJW
aWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJW
aWV3LCBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0
IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9
IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLQotICAg
IC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4dCB3cmFwcGVkIGJlY2F1c2Ugb2Yg
bWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaCA9IEFUS19URVhUKGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKSk7Ci0gICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0
KHBhcmFncmFwaCwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMg
aXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gXDM1N1wyNzdcMjc0IGVtYmVkZGVkIG9iamVjdHMg
XDM1N1wyNzdcMjc0IGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAg
LyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBmaXJzdCBlbWJlZGRlZCBvYmplY3QgKi8KLSAgICB0
ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29m
ZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hBUiwgMzIsICJcMzU3XDI3N1wyNzQiLCAzMiwg
MzMpOwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9z
dHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9XT1JELCAzMiwgInR3byBcMzU3
XDI3N1wyNzQgIiwgMjgsIDM0KTsKLQotICAgIC8qIENoZWNrIHJpZ2h0IGFmdGVyIHRoZSBmaXJz
dCBlbWJlZGRlZCBvYmplY3QgKGFuZCBiZWZvcmUgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgaXQpICov
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDMzLCAiICIsIDMzLCAzNCk7
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDMzLCAidHdvIFwzNTdcMjc3
XDI3NCAiLCAyOCwgMzQpOwotCi0gICAgLyogQ2hlY2sgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUg
Zmlyc3Qgd29yZCBiZXR3ZWVuIHRoZSB0d28gZW1iZWRkZWQgb2JqZWN0cyAqLwotICAgIHRlc3RH
ZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0
LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAzNCwgImUiLCAzNCwgMzUpOwotICAgIHRlc3RH
ZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0
LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9XT1JELCAzNCwgImVtYmVkZGVkICIsIDM0LCA0Myk7Ci0K
LSAgICAvKiBDaGVjayBhdCB0aGUgZW5kIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3
byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFw
aCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NI
QVIsIDQyLCAiICIsIDQyLCA0Myk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFw
aCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dP
UkQsIDQyLCAiZW1iZWRkZWQgIiwgMzQsIDQzKTsKLQotICAgIC8qIENoZWNrIHJpZ2h0IGJlZm9y
ZSB0aGUgc2Vjb25kIGVtYmVkZGVkIG9iamVjdCAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlv
bihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFO
VUxBUklUWV9DSEFSLCA1MSwgIlwzNTdcMjc3XDI3NCIsIDUxLCA1Mik7Ci0gICAgdGVzdEdldFN0
cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFU
S19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUxLCAib2JqZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMs
IDUzKTsKLQotICAgIC8qIENoZWNrIHJpZ2h0IGFmdGVyIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2Jq
ZWN0IChhbmQgYmVmb3JlIHRoZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRT
dHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCA1MiwgIiAiLCA1MiwgNTMpOwotICAgIHRlc3RHZXRT
dHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9HUkFOVUxBUklUWV9XT1JELCA1MiwgIm9iamVjdHMgXDM1N1wyNzdcMjc0ICIsIDQz
LCA1Myk7Ci0KLSAgICAvKiBDaGVjayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3Jk
IGFmdGVyIHRoZSB0d28gZW1iZWRkZWQgb2JqZWN0cyAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5j
dGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9H
UkFOVUxBUklUWV9DSEFSLCA1MywgImkiLCA1MywgNTQpOwotICAgIHRlc3RHZXRTdHJpbmdGdW5j
dGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9H
UkFOVUxBUklUWV9XT1JELCA1MywgImluICIsIDUzLCA1Nik7Ci0KLSAgICAvKiBDaGVjayBhdCB0
aGUgZW5kIG9mIHRoZSBmaXJzdCB3b3JkIGFmdGVyIHRoZSB0d28gZW1iZWRkZWQgb2JqZWN0cyAq
LwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJp
bmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCA1NSwgIiAiLCA1NSwgNTYp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF9zdHJp
bmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9XT1JELCA1NSwgImluICIsIDUzLCA1
Nik7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVm
KHdlYlZpZXcpOwotfQogI2VuZGlmIC8vICFBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMCwgMCkKIAog
c3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRJblBhcmFncmFwaEFuZEJvZHlTaW1wbGUo
KQpAQCAtMjU5NiwyNSArMTc1Miw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2NvbWJvQm94IiwgdGVzdFdlYmtpdEF0
a0NvbWJvQm94KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2RvY3VtZW50TG9h
ZGluZ0V2ZW50cyIsIHRlc3RXZWJraXRBdGtEb2N1bWVudExvYWRpbmdFdmVudHMpOwogICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZW1iZWRkZWRPYmplY3RzIiwgdGVzdFdlYmtpdEF0
a0VtYmVkZGVkT2JqZWN0cyk7Ci0jaWYgIUFUS19DSEVDS19WRVJTSU9OKDIsIDEwLCAwKQotICAg
IGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0IiwgdGVzdFdlYmtp
dEF0a0dldFRleHRBdE9mZnNldCk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9n
ZXRUZXh0QXRPZmZzZXROZXdsaW5lcyIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXROZXds
aW5lcyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRUZXh0QXRPZmZzZXRU
ZXh0YXJlYSIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0YXJlYSk7Ci0gICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQiLCB0ZXN0
V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0VGV4dElucHV0KTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvYXRrL2dldFRleHRBdE9mZnNldFdpdGhQcmVmb3JtYXR0ZWRUZXh0IiwgdGVzdFdl
YmtpdEF0a0dldFRleHRBdE9mZnNldFdpdGhQcmVmb3JtYXR0ZWRUZXh0KTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRBdE9mZnNldFdpdGhTcGVjaWFsQ2hhcmFjdGVy
cyIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRXaXRoU3BlY2lhbENoYXJhY3RlcnMpOwot
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0V2l0aFdyYXBw
ZWRMaW5lcyIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRXaXRoV3JhcHBlZExpbmVzKTsK
LSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRBdE9mZnNldFdpdGhFbWJl
ZGRlZE9iamVjdHMiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2Jq
ZWN0cyk7Ci0jZWxzZQotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0U3RyaW5n
QXRPZmZzZXQiLCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXQpOwotICAgIGdfdGVzdF9h
ZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0U3RyaW5nQXRPZmZzZXROZXdsaW5lcyIsIHRlc3RXZWJr
aXRBdGtHZXRTdHJpbmdBdE9mZnNldE5ld2xpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93
ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0VGV4dGFyZWEiLCB0ZXN0V2Via2l0QXRrR2V0U3Ry
aW5nQXRPZmZzZXRUZXh0YXJlYSk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9n
ZXRTdHJpbmdBdE9mZnNldFRleHRJbnB1dCIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNl
dFRleHRJbnB1dCk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdB
dE9mZnNldFdpdGhQcmVmb3JtYXR0ZWRUZXh0IiwgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zm
c2V0V2l0aFByZWZvcm1hdHRlZFRleHQpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9h
dGsvZ2V0U3RyaW5nQXRPZmZzZXRXaXRoU3BlY2lhbENoYXJhY3RlcnMiLCB0ZXN0V2Via2l0QXRr
R2V0U3RyaW5nQXRPZmZzZXRXaXRoU3BlY2lhbENoYXJhY3RlcnMpOwotICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC9hdGsvZ2V0U3RyaW5nQXRPZmZzZXRXaXRoV3JhcHBlZExpbmVzIiwgdGVz
dFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcyk7Ci0gICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldFdpdGhFbWJlZGRlZE9iamVj
dHMiLCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKTsK
LSNlbmRpZgogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEluUGFyYWdy
YXBoQW5kQm9keVNpbXBsZSIsIHRlc3RXZWJraXRBdGtHZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5
U2ltcGxlKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRJblBhcmFn
cmFwaEFuZEJvZHlNb2RlcmF0ZSIsIHRlc3RXZWJraXRBdGtHZXRUZXh0SW5QYXJhZ3JhcGhBbmRC
b2R5TW9kZXJhdGUpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dElu
VGFibGUiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEluVGFibGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlMDY5NWNmZGQzMTBhMTY4ZTE3MWE3
ZDhhZWIyYjA5ZjE4MWQyMjAuLmI1MDc0NWYzOWVjMzkwMmE2YjVlMzMzMjMzMmExNzBjMjA4NzY0
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxMy0xMi0wOSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxp
YS5jb20+CisKKyAgICAgICAgQVg6IFtBVEtdIENvbnZlcnQgdGhlIGdldF97c3RyaW5nLHRleHR9
X2F0X29mZnNldCBhdGt0ZXN0LmMgdW5pdCB0ZXN0cyB0byBsYXlvdXQgdGVzdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTQ1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSB0aGUgbmVlZGVk
IGNhbGxiYWNrcyBmb3IgRFJUIGFuZCBXS1RSLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChjaGFyYWN0ZXJBdE9mZnNldENh
bGxiYWNrKTogYWRkZWQKKyAgICAgICAgKHdvcmRBdE9mZnNldENhbGxiYWNrKTogYWRkZWQKKyAg
ICAgICAgKGxpbmVBdE9mZnNldENhbGxiYWNrKTogYWRkZWQKKyAgICAgICAgKHNlbnRlbmNlQXRP
ZmZzZXRDYWxsYmFjayk6IGFkZGVkCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwOgorICAgICAgICAoc3RyaW5nQXRPZmZzZXQpOiBhZGRlZAorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOiBhZGRlZAorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNl
dCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9m
ZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVB
dE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bnRlbmNlQXRPZmZzZXQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OnN0cmluZ0F0T2Zmc2V0KTogYWRkZWQKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOiBh
ZGRlZAorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQp
OiBhZGRlZAorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZz
ZXQpOiBhZGRlZAorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5j
ZUF0T2Zmc2V0KTogYWRkZWQKKwogMjAxMy0xMi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDb2NvYV0gQ29udmVydCBhIGZldyBtb3JlIHBhcnRzIG9mIE1pbmlC
cm93c2VyIG92ZXIgdG8gdGhlIE9iamVjdGl2ZS1DIEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAzMjdiOTg4Y2VmNTg3Y2I1OGZh
YmRhYzU1MjljZjg1OTNkMzAzNzY4Li4xNmRhMTRhNTUwZmQ1YjBkNGRjN2Y5YWE2NDZlNDMzNjU2
YTU5ZWJmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcApAQCAtMTEwMyw2ICsxMTAzLDQ2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNW
YWx1ZVJlZiBjaGFyYWN0ZXJBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0g
MSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjaGFyYWN0ZXJB
dE9mZnNldChBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmNoYXJhY3RlckF0T2Zmc2V0
KG9mZnNldCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBjaGFyYWN0
ZXJBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHdvcmRBdE9mZnNldENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0g
LTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiB3b3JkQXRPZmZzZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNP
YmplY3QpLT53b3JkQXRPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3Ry
aW5nKGNvbnRleHQsIHdvcmRBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVm
IGxpbmVBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAg
b2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsaW5lQXRPZmZzZXQoQWRvcHQsIHRv
QVhFbGVtZW50KHRoaXNPYmplY3QpLT5saW5lQXRPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGxpbmVBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNlbnRlbmNlQXRPZmZzZXRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaW50IG9mZnNldCA9IC0xOworICAgIGlmIChhcmd1bWVudENv
dW50ID09IDEpCisgICAgICAgIG9mZnNldCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1
bWVudHNbMF0sIGV4Y2VwdGlvbik7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2Vu
dGVuY2VBdE9mZnNldChBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnNlbnRlbmNlQXRP
ZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHNl
bnRlbmNlQXRPZmZzZXQuZ2V0KCkpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogCiBzdGF0aWMg
SlNWYWx1ZVJlZiBzdHJpbmdGb3JTZWxlY3Rpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCkBAIC0xNDc1LDYgKzE1MTUsMTAgQEAgSlNDbGFzc1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAic2V0U2VsZWN0ZWRD
aGlsZCIsIHNldFNlbGVjdGVkQ2hpbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZWxl
Y3RlZENoaWxkQXRJbmRleCIsIHNlbGVjdGVkQ2hpbGRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2Nyb2xsVG9NYWtlVmlzaWJsZSIsIHNjcm9sbFRvTWFrZVZpc2libGVDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJjaGFyYWN0ZXJBdE9mZnNldCIsIGNoYXJhY3RlckF0
T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAid29yZEF0T2Zmc2V0Iiwgd29yZEF0
T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAibGluZUF0T2Zmc2V0IiwgbGluZUF0
T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2VudGVuY2VBdE9mZnNldCIsIHNl
bnRlbmNlQXRPZmZzZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogI2lmIFBMQVRGT1JNKElPUykKICAgICAg
ICAgeyAibGlua2VkRWxlbWVudCIsIGxpbmtlZEVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJoZWFkZXJFbGVtZW50QXRJbmRleCIsIGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAppbmRleCBhYjQ2ZjY1NGNiOWZkM2RlOGVhMjk1MjUyMTA0OTNkZDk5MGI5ZTgwLi4zMjE4
MTYwOWY2ZGE1ZWU1NWRlZmM2ZDQ3ZDc1YzdkNGQ0ZDU0M2Y0IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0yMTMsNiArMjEzLDEyIEBAIHB1
YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGxpbmtlZEVsZW1lbnQoKTsKICNlbmRp
ZgogCisgICAgLy8gVGV4dC1zcGVjaWZpYworICAgIEpTU3RyaW5nUmVmIGNoYXJhY3RlckF0T2Zm
c2V0KGludCBvZmZzZXQpOworICAgIEpTU3RyaW5nUmVmIHdvcmRBdE9mZnNldChpbnQgb2Zmc2V0
KTsKKyAgICBKU1N0cmluZ1JlZiBsaW5lQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNTdHJp
bmdSZWYgc2VudGVuY2VBdE9mZnNldChpbnQgb2Zmc2V0KTsKKwogICAgIC8vIFRhYmxlLXNwZWNp
ZmljCiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2ln
bmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IGVkZTE0ZWFjZTJl
YzU3YjYxZGIxYWU1YzhhNmFiZTVkOWVhM2RjMjguLmFlZjgwZmViNzgwMzdkNWQzZTViNjljM2E0
ZDdhNTYwZDE1Y2M0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTE0MzUsNCArMTQzNSw1OSBAQCBKU1N0
cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitKU1N0cmluZ1JlZiBzdHJpbmdBdE9mZnNldChQbGF0Zm9ybVVJ
RWxlbWVudCBlbGVtZW50LCBBdGtUZXh0Qm91bmRhcnkgYm91bmRhcnksIGludCBvZmZzZXQpCit7
CisgICAgaWYgKCFBVEtfSVNfVEVYVChlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBnaW50IHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQ7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisjaWYgQVRLX0NIRUNLX1ZFUlNJ
T04oMiwgMTAsIDApCisgICAgQXRrVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5OworICAgIHN3
aXRjaCAoYm91bmRhcnkpIHsKKyAgICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX0NIQVI6CisgICAg
ICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hBUjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJUOgorICAgICAgICBncmFu
dWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVDoKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFU
S19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJUOgorICAgICAgICBncmFudWxhcml0eSA9IEFU
S19URVhUX0dSQU5VTEFSSVRZX1NFTlRFTkNFOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAg
ICB9CisKKyAgICBidWlsZGVyLmFwcGVuZChhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChB
VEtfVEVYVChlbGVtZW50KSwgb2Zmc2V0LCBncmFudWxhcml0eSwgJnN0YXJ0T2Zmc2V0LCAmZW5k
T2Zmc2V0KSk7CisjZWxzZQorICAgIGJ1aWxkZXIuYXBwZW5kKGF0a190ZXh0X2dldF90ZXh0X2F0
X29mZnNldChBVEtfVEVYVChlbGVtZW50KSwgb2Zmc2V0LCBib3VuZGFyeSwgJnN0YXJ0T2Zmc2V0
LCAmZW5kT2Zmc2V0KSk7CisjZW5kaWYKKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiLCAlaSwgJWkiLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRP
ZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50
LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCBvZmZzZXQpOworfQorCitKU1N0cmluZ1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1
cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJU
LCBvZmZzZXQpOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5l
QXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVt
ZW50LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCBvZmZzZXQpOworfQorCitKU1N0cmlu
Z1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQp
Cit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRB
UllfU0VOVEVOQ0VfU1RBUlQsIG9mZnNldCk7Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKaW5kZXggMmJkOWVjZmQ2Nzg5ZDViNjhmNTkzOGRhZjdjM2M2YWI4YWUw
NjE5Yy4uNGZlNWM0YjFkZTVkZjJkZTMxYjIwMmU0NmJjMmJlZTViNjBmMmNjNCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0xNjQsNiArMTY0LDEwIEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9y
UmFuZ2UodW5zaWduCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJp
bmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9
CiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJj
aFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBib29sLCBK
U1ZhbHVlUmVmLCBKU1N0cmluZ1JlZiwgYm9vbCkgeyByZXR1cm4gMDsgfQogUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kiwg
Ym9vbCwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYsIGJvb2wpIHsgcmV0dXJuIDA7IH0KK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9m
ZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9CitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGlu
dCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9CiBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCA5MGY1
Y2IxMGNiNzExZmI3MjJlN2VkMWIyYTVhYjhmMGI2ZjNmODAyLi5jZDhlMGY4MGM5MDZlNTJiNWY4
ZDg2MzFiMGViZjYzODAyYWFjZGVhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAt
MjAxLDYgKzIwMSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJ
c01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdW5z
aWduZWQgdWlFbGVtZW50Q291bnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBK
U1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxl
T25seSk7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBz
dGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwg
SlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSk7CisKKyAgICAvLyBUZXh0
LXNwZWNpZmljCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNoYXJhY3RlckF0T2Zmc2V0
KGludCBvZmZzZXQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB3b3JkQXRPZmZzZXQo
aW50IG9mZnNldCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxpbmVBdE9mZnNldChp
bnQgb2Zmc2V0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VudGVuY2VBdE9mZnNl
dChpbnQgb2Zmc2V0KTsKICAgICAKICAgICAvLyBUYWJsZS1zcGVjaWZpYwogICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBj
b2x1bW4sIHVuc2lnbmVkIHJvdyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmlkbAppbmRleCA3Y2RlNTg2YzU2MmQ0OWZlNTU3MTRjNDg3YWY3MDExMmY3ZTU5
MTNhLi5lZWQzM2QyMmE2MzBmMzcyYzMzZjBjZDk0OGE3MzAwNjA4MzVhMzk0IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKQEAgLTExNCw2ICsxMTQs
MTIgQEAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewogICAgIERPTVN0cmluZyBh
dHRyaWJ1dGVzT2ZDaGlsZHJlbigpOwogICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZMaW5rZWRV
SUVsZW1lbnRzKCk7CiAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKTsK
KworICAgIC8vIFRleHQgaW5mby4KKyAgICBET01TdHJpbmcgY2hhcmFjdGVyQXRPZmZzZXQoaW50
IG9mZnNldCk7CisgICAgRE9NU3RyaW5nIHdvcmRBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBE
T01TdHJpbmcgbGluZUF0T2Zmc2V0KGludCBvZmZzZXQpOworICAgIERPTVN0cmluZyBzZW50ZW5j
ZUF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIAogICAgIC8vIFRhYmxlIGluZm8uCiAgICAgRE9N
U3RyaW5nIGF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggZmQ0NmMyNTk0ZWE2ZDliZWRkNDAzZGVlMGFj
YmJlZjczNTM4ZThhOS4uODEyNDJjYzMwMDBiYjc1Mjc4Njc1YjViY2ZhYWUyZDlmNTg2Yzg1MiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTE2MDYs
NiArMTYwNiw2MSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y2xhc3NMaXN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0T2Zmc2V0KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1l
bnQsIEF0a1RleHRCb3VuZGFyeSBib3VuZGFyeSwgaW50IG9mZnNldCkKK3sKKyAgICBpZiAoIUFU
S19JU19URVhUKGVsZW1lbnQuZ2V0KCkpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIGdpbnQgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAx
MCwgMCkKKyAgICBBdGtUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CisgICAgc3dpdGNoIChi
b3VuZGFyeSkgeworICAgIGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUjoKKyAgICAgICAgZ3Jh
bnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQ6CisgICAgICAgIGdyYW51bGFyaXR5
ID0gQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
VEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUOgorICAgICAgICBncmFudWxhcml0eSA9IEFUS19U
RVhUX0dSQU5VTEFSSVRZX0xJTkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVRLX1RFWFRf
Qk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRf
R1JBTlVMQVJJVFlfU0VOVEVOQ0U7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIH0KKwor
ICAgIGJ1aWxkZXIuYXBwZW5kKGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0KEFUS19URVhU
KGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGdyYW51bGFyaXR5LCAmc3RhcnRPZmZzZXQsICZlbmRP
ZmZzZXQpKTsKKyNlbHNlCisgICAgYnVpbGRlci5hcHBlbmQoYXRrX3RleHRfZ2V0X3RleHRfYXRf
b2Zmc2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGJvdW5kYXJ5LCAmc3RhcnRP
ZmZzZXQsICZlbmRPZmZzZXQpKTsKKyNlbmRpZgorICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCIsICVpLCAlaSIsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpKTsKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5n
QXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCBvZmZzZXQpOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d29yZEF0
T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVu
dCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgb2Zmc2V0KTsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldChpbnQg
b2Zmc2V0KQoreworICAgIHJldHVybiBzdHJpbmdBdE9mZnNldChtX2VsZW1lbnQsIEFUS19URVhU
X0JPVU5EQVJZX0xJTkVfU1RBUlQsIG9mZnNldCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQp
Cit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRB
UllfU0VOVEVOQ0VfU1RBUlQsIG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgogCiAj
ZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNmMDdiOWUzOWQxYzZkODVhMWQz
NDE0N2I3NDQyMTU3OTJiZGI1N2EuLmVjNjNhYjk1ZGNlNmMyZTI4NTkxNDVhYzhlYzJmYTQyMDJm
OTg2YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0xMi0wOSAgSm9hbm1hcmllIERpZ2dz
ICA8amRpZ2dzQGlnYWxpYS5jb20+CisKKyAgICAgICAgQVg6IFtBVEtdIENvbnZlcnQgdGhlIGdl
dF97c3RyaW5nLHRleHR9X2F0X29mZnNldCBhdGt0ZXN0LmMgdW5pdCB0ZXN0cyB0byBsYXlvdXQg
dGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
dyB0ZXN0cyBhbmQgZXhwZWN0YXRpb25zIGJhc2VkIG9uIHRoZSB0ZXN0cyBhbmQgZXhwZWN0YXRp
b25zIGZvdW5kIGluIGF0a3Rlc3QuYy4KKyAgICAgICAgVGhlc2Ugd2VyZSBkb25lIGFzIHBsYXRm
b3JtLXNwZWNpZmljIHRlc3RzIGJlY2F1c2Ugb25seSBBVEstYmFzZWQgYXNzaXN0aXZlIHRlY2hu
b2xvZ2llcworICAgICAgICBzZWVtIHRvIGhhdmUgYW55IG5lZWQgZm9yIHRoaXMgc3VwcG9ydC4K
KworICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVt
YmVkZGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1lbWJlZGRlZC1vYmplY3RzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0
LW5ld2xpbmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3bGluZXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQt
b2Zmc2V0LXNpbXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3Bl
Y2lhbC1jaGFycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJp
bGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQt
b2Zmc2V0LXRleHRpbnB1dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC13cmFw
cGVkLWxpbmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy5odG1sOiBBZGRlZC4KKwog
MjAxMy0xMi0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TVNFXSBCcmluZyBlbmQtb2Ytc3RyZWFtIGFsZ29yaXRobSBzZWN0aW9uIHVwIHRvIGN1cnJlbnQg
c3BlYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2Jq
ZWN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFhOTE4MDJhZTgyMjdkN2FmZjAxNjlhMmVk
OGMwZDcxZDVhYTE2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjcgQEAKK1RoaXMgaXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gIGVt
YmVkZGVkIG9iamVjdHMgIGluIHRoZSBtaWRkbGUuCisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkg
dG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNl
dHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFj
dGVyQXRPZmZzZXQoMzIpIGlzICfDr8K/wrwsIDMyLCAzMycKK1BBU1MgY29udGVudC53b3JkQXRP
ZmZzZXQoMzIpIGlzICd0d28gw6/Cv8K8ICwgMjgsIDM0JworUEFTUyBjb250ZW50LmNoYXJhY3Rl
ckF0T2Zmc2V0KDMzKSBpcyAnICwgMzMsIDM0JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCgz
MykgaXMgJ3R3byDDr8K/wrwgLCAyOCwgMzQnCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZz
ZXQoMzQpIGlzICdlLCAzNCwgMzUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDM0KSBpcyAn
ZW1iZWRkZWQgLCAzNCwgNDMnCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoNDIpIGlz
ICcgLCA0MiwgNDMnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDQyKSBpcyAnZW1iZWRkZWQg
LCAzNCwgNDMnCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoNTEpIGlzICfDr8K/wrws
IDUxLCA1MicKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTEpIGlzICdvYmplY3RzIMOvwr/C
vCAsIDQzLCA1MycKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1MikgaXMgJyAsIDUy
LCA1MycKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTIpIGlzICdvYmplY3RzIMOvwr/CvCAs
IDQzLCA1MycKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1MykgaXMgJ2ksIDUzLCA1
NCcKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTMpIGlzICdpbiAsIDUzLCA1NicKK1BBU1Mg
Y29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1NSkgaXMgJyAsIDU1LCA1NicKK1BBU1MgY29udGVu
dC53b3JkQXRPZmZzZXQoNTUpIGlzICdpbiAsIDUzLCA1NicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1lbWJlZGRlZC1vYmplY3Rz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9m
ZnNldC1lbWJlZGRlZC1vYmplY3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg2YzVkOWJkNDdlM2Q5M2Nl
MGE0ZDE3MWFmM2Q5ZDg0OTA4NDIwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+
Cis8cD5UaGlzIGlzIG9uZSBsaW5lIGNvbnRhaW5pbmcgdHdvIDxpbWc+IGVtYmVkZGVkIG9iamVj
dHMgPGltZz4gaW4gdGhlIG1pZGRsZS48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVs
YXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMo
KTsKKyAgICAgICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsK
KworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgzMikiLCAiJ1wz
NTdcMjc3XDI3NCwgMzIsIDMzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRP
ZmZzZXQoMzIpIiwgIid0d28gXDM1N1wyNzdcMjc0ICwgMjgsIDM0JyIpOworICAgICAgICBzaG91
bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgzMykiLCAiJyAsIDMzLCAzNCciKTsKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDMzKSIsICIndHdvIFwzNTdcMjc3
XDI3NCAsIDI4LCAzNCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRP
ZmZzZXQoMzQpIiwgIidlLCAzNCwgMzUnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Lndv
cmRBdE9mZnNldCgzNCkiLCAiJ2VtYmVkZGVkICwgMzQsIDQzJyIpOworICAgICAgICBzaG91bGRC
ZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg0MikiLCAiJyAsIDQyLCA0MyciKTsKKyAgICAg
ICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQyKSIsICInZW1iZWRkZWQgLCAzNCwg
NDMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUxKSIs
ICInXDM1N1wyNzdcMjc0LCA1MSwgNTInIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Lndv
cmRBdE9mZnNldCg1MSkiLCAiJ29iamVjdHMgXDM1N1wyNzdcMjc0ICwgNDMsIDUzJyIpOworICAg
ICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1MikiLCAiJyAsIDUyLCA1
MyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDUyKSIsICInb2Jq
ZWN0cyBcMzU3XDI3N1wyNzQgLCA0MywgNTMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50
LmNoYXJhY3RlckF0T2Zmc2V0KDUzKSIsICInaSwgNTMsIDU0JyIpOworICAgICAgICBzaG91bGRC
ZSgiY29udGVudC53b3JkQXRPZmZzZXQoNTMpIiwgIidpbiAsIDUzLCA1NiciKTsKKyAgICAgICAg
c2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoNTUpIiwgIicgLCA1NSwgNTYnIik7
CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1NSkiLCAiJ2luICwgNTMs
IDU2JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQt
bmV3bGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3bGluZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRh
NmVlODBhNmZlMDlhZDFlZGMyNzE5MWE1MThjYmQxODkzZmEzYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1u
ZXdsaW5lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyBpcyBhIHRlc3QuIFRo
aXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLgorCitUaGlzIHRl
c3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxh
cml0aWVzIGFuZCBvZmZzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDApIGlzICdULCAwLCAxJworUEFTUyBjb250ZW50
LndvcmRBdE9mZnNldCgwKSBpcyAnVGhpcyAsIDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zm
c2V0KDQpIGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMTApIGlz
ICd0ZXN0LiAsIDEwLCAxNicKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTgpIGlzICd0aGly
ZC4sIDU4LCA2NCcKK1BBU1MgY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDApIGlzICdUaGlzIGlz
IGEgdGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDE1KSBpcyAn
VGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlz
ICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0
aGUgdGhpcmQuLCAwLCA2NCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3bGluZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZDAzMTEwZTAzYTI2ZWQ1MzU3NzI1YzFhOGY5NzA0MDNjY2Y1ZDkzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1v
ZmZzZXQtbmV3bGluZXMuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBpZD0iYm9keSI+Cis8cCBpZD0iY29udGVudCI+VGhpcyBpcyBhIHRlc3QuIAorCitUaGlz
CisgICBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQuPC9wPgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQg
dGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuIik7CisgICAgaWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7CisgICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciBjb250ZW50ID0g
d2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7CisKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hh
cmFjdGVyQXRPZmZzZXQoMCkiLCAiJ1QsIDAsIDEnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250
ZW50LndvcmRBdE9mZnNldCgwKSIsICInVGhpcyAsIDAsIDUnIik7CisgICAgICAgIHNob3VsZEJl
KCJjb250ZW50LndvcmRBdE9mZnNldCg0KSIsICInVGhpcyAsIDAsIDUnIik7CisgICAgICAgIHNo
b3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgxMCkiLCAiJ3Rlc3QuICwgMTAsIDE2JyIpOwor
ICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNTgpIiwgIid0aGlyZC4sIDU4
LCA2NCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSIs
ICInVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50
LnNlbnRlbmNlQXRPZmZzZXQoMTUpIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGluZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVz
dC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQuLCAwLCA2
NCciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXBy
ZWZvcm1hdHRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eS90ZXh0LWF0LW9mZnNldC1wcmVmb3JtYXR0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNiYzMwODE2MzliNDY0MTY1MjU1ZmFiYmY3ZDNmNDdlN2MzMWNiYTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9m
ZnNldC1wcmVmb3JtYXR0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKKwkKKwlmaXJz
dCBsaW5lCisJc2Vjb25kIGxpbmUKKwkKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVs
ZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDAp
IGlzICdcdFxuLCAwLCAyJworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgyKSBpcyAnXHRmaXJz
dCBsaW5lXG4sIDIsIDE0JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgxNCkgaXMgJ1x0c2Vj
b25kIGxpbmVcbiwgMTQsIDI3JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjA2Zjk0MTg4ZTg4MTQ2Y2FiYjg2ZTZiN2Q1NDc5MGJlMDQzZjM2NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxwcmUgaWQ9ImNvbnRlbnQiPgorCQorCWZp
cnN0IGxpbmUKKwlzZWNvbmQgbGluZQorCQorPC9wcmU+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQg
Z3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iiku
Zm9jdXMoKTsKKyAgICAgICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSB3ZWJBcmVhLmNoaWxkQXRJbmRl
eCgwKTsKKworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ1xc
dFxcbiwgMCwgMiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGluZUF0T2Zmc2V0KDIp
IiwgIidcXHRmaXJzdCBsaW5lXFxuLCAyLCAxNCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRl
bnQubGluZUF0T2Zmc2V0KDE0KSIsICInXFx0c2Vjb25kIGxpbmVcXG4sIDE0LCAyNyciKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0
LW9mZnNldC1zaW1wbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNmVlODBhNmZlMDlhZDFl
ZGMyNzE5MWE1MThjYmQxODkzZmEzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zaW1wbGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQg
c2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4KKworVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0
byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5jaGFyYWN0
ZXJBdE9mZnNldCgwKSBpcyAnVCwgMCwgMScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMCkg
aXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg0KSBpcyAnVGhpcyAs
IDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSBpcyAndGVzdC4gLCAxMCwgMTYn
CitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDU4KSBpcyAndGhpcmQuLCA1OCwgNjQnCitQQVNT
IGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYn
CitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAs
IDAsIDE2JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3Qu
IFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiwgMCwgNjQn
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1v
ZmZzZXQtc2ltcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS90ZXh0LWF0LW9mZnNldC1zaW1wbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2RjMDI4ODc0YzM1NWVk
YTFjM2VkMWNlNTY2OTgzMzNlMzI0MjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc2ltcGxlLmh0bWwKQEAg
LTAsMCArMSwyOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHAgaWQ9
ImNvbnRlbnQiPlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFu
ZCB0aGlzIHRoZSB0aGlyZC48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGll
cyBhbmQgb2Zmc2V0cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAg
ICAgICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAg
ICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSci
KTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwg
MCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidU
aGlzICwgMCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEw
KSIsICIndGVzdC4gLCAxMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRB
dE9mZnNldCg1OCkiLCAiJ3RoaXJkLiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRCZSgiY29u
dGVudC5zZW50ZW5jZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsK
KyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMg
aXMgYSB0ZXN0LiAsIDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRP
ZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2Uu
IEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFs
LWNoYXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODE0Yzc1YjYxYjA4OTFmY2NlMDFkOGVm
MTlmMmJkZDQwZmRkMzc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOSBAQAorwqvCoFRoaXMgaXMgYSBwYXJhZ3JhcGggd2l0aCDigJxzcGVj
aWFs4oCdIGNoYXJhY3RlcnMgaW5zaWRlLsKgwrsKKworTGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0
IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4KK0xpc3QgaXRlbSB3aXRoIHNvbWUg
dGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuCisKK1RoaXMgdGVzdHMgdGhl
IGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMg
YW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhcmFn
cmFwaC5saW5lQXRPZmZzZXQoMCkgaXMgJ8OCwqvDgsKgVGhpcyBpcyBhIHBhcmFncmFwaCB3aXRo
IMOiwoDCnHNwZWNpYWzDosKAwp0gY2hhcmFjdGVycyBpbnNpZGUuw4LCoMOCwrssIDAsIDU3Jwor
UEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMykgaXMgJ8OiwoDCoiBMaXN0IGl0ZW0gLCAwLCAx
MicKK1BBU1MgbGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDEzKSBpcyAnd2l0aCBzb21lICwgMTIsIDIy
JworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMykgaXMgJ8OiwoDCoiBMaXN0IGl0ZW0gLCAw
LCAxMicKK1BBU1MgbGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDEzKSBpcyAnd2l0aCBzb21lICwgMTIs
IDIyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQt
YXQtb2Zmc2V0LXNwZWNpYWwtY2hhcnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNwZWNpYWwtY2hhcnMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZDU0OTk2YjNkMDI1YWFhNzk3M2UxYmEwYzE1YThhODAyNWJlNTU1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtc3BlY2lhbC1jaGFycy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IGlkPSJib2R5Ij4KKzxwPiZsYXF1bzsmbmJzcDtUaGlzIGlzIGEgcGFyYWdyYXBoIHdp
dGggJmxkcXVvO3NwZWNpYWwmcmRxdW87IGNoYXJhY3RlcnMgaW5zaWRlLiZuYnNwOyZyYXF1bzs8
L3A+PHVsPjxsaSBzdHlsZT0nbWF4LXdpZHRoOjcwcHg7Jz5MaXN0IGl0ZW0gd2l0aCBzb21lIHRl
eHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLjwvbGk+PGxpIHN0eWxlPSdtYXgt
d2lkdGg6NzBweDsnPjxwPkxpc3QgaXRlbSB3aXRoIHNvbWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9z
cyBkaWZmZXJlbnQgbGluZXMuPC9wPjwvbGk+PC91bD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBn
cmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5m
b2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OworCisgICAgICAgIHZhciBwYXJhZ3JhcGggPSB3ZWJBcmVhLmNoaWxkQXRJ
bmRleCgwKTsKKyAgICAgICAgc2hvdWxkQmUoInBhcmFncmFwaC5saW5lQXRPZmZzZXQoMCkiLCAi
J1wzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggXDM0MlwyMDBcMjM0c3Bl
Y2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0MFwzMDJcMjczLCAwLCA1
NyciKTsKKworICAgICAgICB2YXIgbGlzdCA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpOworICAg
ICAgICB2YXIgbGlzdGl0ZW0gPSBsaXN0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgc2hvdWxk
QmUoImxpc3RpdGVtLmxpbmVBdE9mZnNldCgzKSIsICInXDM0MlwyMDBcMjQyIExpc3QgaXRlbSAs
IDAsIDEyJyIpOworICAgICAgICBzaG91bGRCZSgibGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDEzKSIs
ICInd2l0aCBzb21lICwgMTIsIDIyJyIpOworCisgICAgICAgIHZhciBsaXN0aXRlbSA9IGxpc3Qu
Y2hpbGRBdEluZGV4KDEpOworICAgICAgICBzaG91bGRCZSgibGlzdGl0ZW0ubGluZUF0T2Zmc2V0
KDMpIiwgIidcMzQyXDIwMFwyNDIgTGlzdCBpdGVtICwgMCwgMTInIik7CisgICAgICAgIHNob3Vs
ZEJlKCJsaXN0aXRlbS5saW5lQXRPZmZzZXQoMTMpIiwgIid3aXRoIHNvbWUgLCAxMiwgMjInIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJl
YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90
ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQwNGVjYzQ4
ZWEwY2I2OGMxMTMzOTEzOWUzYzZmY2NkYWU4MmZlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVh
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkg
dG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNl
dHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFj
dGVyQXRPZmZzZXQoMCkgaXMgJ1QsIDAsIDEnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDAp
IGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNCkgaXMgJ1RoaXMg
LCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCgxMCkgaXMgJ3Rlc3QuICwgMTAsIDE2
JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1OCkgaXMgJ3RoaXJkLiwgNTgsIDY0JworUEFT
UyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2
JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMTUpIGlzICdUaGlzIGlzIGEgdGVzdC4g
LCAwLCAxNicKK1BBU1MgY29udGVudC5saW5lQXRPZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0
LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0
JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAnZm9vIGJhciBiYXosIDAsIDExJwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zm
c2V0LXRleHRhcmVhLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmJlMTBlMDhmNGI5
M2NhNTY1OTFmY2EzMGI0NTMwZDU5MGY2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzx0
ZXh0YXJlYSBpZD0iY29udGVudCIgY29scz0nODAnPlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRo
ZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC48L3RleHRhcmVhPgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4
dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuIik7CisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29udGVudCIpLmZvY3VzKCk7CisgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkiLCAiJ1QsIDAsIDEnIik7CisgICAgICAgIHNob3Vs
ZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgwKSIsICInVGhpcyAsIDAsIDUnIik7CisgICAgICAg
IHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg0KSIsICInVGhpcyAsIDAsIDUnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgxMCkiLCAiJ3Rlc3QuICwgMTAs
IDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNTgpIiwgIid0
aGlyZC4sIDU4LCA2NCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9m
ZnNldCgwKSIsICInVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJl
KCJjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMTUpIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAx
NiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGluZUF0T2Zmc2V0KDApIiwgIidUaGlz
IGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhp
cmQuLCAwLCA2NCciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVu
dCIpLnZhbHVlID0gImZvbyBiYXIgYmF6IjsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGlu
ZUF0T2Zmc2V0KDApIiwgIidmb28gYmFyIGJheiwgMCwgMTEnIik7CisgICAgfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0aW5wdXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4
dGlucHV0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDA0ZWNjNDhlYTBjYjY4YzExMzM5MTM5
ZTNjNmZjY2RhZTgyZmVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE5IEBACisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQg
dGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkg
aXMgJ1QsIDAsIDEnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDApIGlzICdUaGlzICwgMCwg
NScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBj
b250ZW50LndvcmRBdE9mZnNldCgxMCkgaXMgJ3Rlc3QuICwgMTAsIDE2JworUEFTUyBjb250ZW50
LndvcmRBdE9mZnNldCg1OCkgaXMgJ3RoaXJkLiwgNTgsIDY0JworUEFTUyBjb250ZW50LnNlbnRl
bmNlQXRPZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50
LnNlbnRlbmNlQXRPZmZzZXQoMTUpIGlzICdUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNicKK1BBU1Mg
Y29udGVudC5saW5lQXRPZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBz
ZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JworUEFTUyBjb250ZW50
LmxpbmVBdE9mZnNldCgwKSBpcyAnZm9vIGJhciBiYXosIDAsIDExJworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC5o
dG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtdGV4dGlucHV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3NzI4OTY5NDFkN2VhYzMxZTZmMjk0ZWVh
YTMyZWVhZTQwZjM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxpbnB1dCBpZD0iY29u
dGVudCIgdHlwZT0ndGV4dCcgc2l6ZT0nODAnIHZhbHVlPSdUaGlzIGlzIGEgdGVzdC4gVGhpcyBp
cyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQuJy8+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZv
ciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsKKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICBzaG91bGRCZSgiY29udGVu
dC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSciKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwgMCwgNSciKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidUaGlzICwgMCwgNSciKTsKKyAgICAg
ICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSIsICIndGVzdC4gLCAxMCwgMTYn
Iik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1OCkiLCAiJ3RoaXJk
LiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0
KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JyIp
OworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMg
YSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4s
IDAsIDY0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iiku
dmFsdWUgPSAiZm9vIGJhciBiYXoiOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRP
ZmZzZXQoMCkiLCAiJ2ZvbyBiYXIgYmF6LCAwLCAxMSciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXdyYXBwZWQtbGluZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3Jh
cHBlZC1saW5lcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUzNTFiYjRmODI0NTgyMTlmZDFk
NzM3OTZkM2MzYjY4ZjExMzM1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXdyYXBwZWQtbGluZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1RoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNl
IG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuCisKK1RoaXMgaXMgYW5vdGhl
ciBsaW5lIHdyYXBwZWQKK2JlY2F1c2Ugb2Ygb25lIGZvcmNlZAorbGluZSBicmVhayBpbiB0aGUg
bWlkZGxlLgorCitUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9y
IGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBwYXJhZ3JhcGguY2hhcmFjdGVyQXRPZmZzZXQoMTYpIGlzICcg
LCAxNiwgMTcnCitQQVNTIHBhcmFncmFwaC53b3JkQXRPZmZzZXQoMTYpIGlzICdsaW5lICwgMTIs
IDE3JworUEFTUyBwYXJhZ3JhcGgubGluZUF0T2Zmc2V0KDE3KSBpcyAnd3JhcHBlZCBiZWNhdXNl
ICwgMTcsIDMzJworUEFTUyBwYXJhZ3JhcGguY2hhcmFjdGVyQXRPZmZzZXQoMjgpIGlzICdcbiwg
MjgsIDI5JworUEFTUyBwYXJhZ3JhcGgud29yZEF0T2Zmc2V0KDI4KSBpcyAnd3JhcHBlZFxuLCAy
MSwgMjknCitQQVNTIHBhcmFncmFwaC5saW5lQXRPZmZzZXQoMzApIGlzICdiZWNhdXNlIG9mIG9u
ZSBmb3JjZWRcbiwgMjksIDUxJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXdyYXBwZWQtbGluZXMuaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXdyYXBwZWQtbGluZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NmNhMjllOWQ2NTBmY2FhYmJlZThiNTM3MGY3ODc5ZDIzZjVkYzE4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxwIHN0eWxlPSdtYXgtd2lkdGg6MTIw
cHg7Jz5UaGlzIGlzIG9uZSBsaW5lIHdyYXBwZWQgYmVjYXVzZSBvZiB0aGUgbWF4aW11bSB3aWR0
aCBvZiBpdHMgY29udGFpbmVyLjwvcD48cD5UaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkPGJy
PmJlY2F1c2Ugb2Ygb25lIGZvcmNlZDxicj5saW5lIGJyZWFrIGluIHRoZSBtaWRkbGUuPC9wPgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1l
bnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuIik7CisgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7CisgICAgICAgIHZhciB3ZWJBcmVhID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgdmFyIHBhcmFn
cmFwaCA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDApOworICAgICAgICBzaG91bGRCZSgicGFyYWdy
YXBoLmNoYXJhY3RlckF0T2Zmc2V0KDE2KSIsICInICwgMTYsIDE3JyIpOworICAgICAgICBzaG91
bGRCZSgicGFyYWdyYXBoLndvcmRBdE9mZnNldCgxNikiLCAiJ2xpbmUgLCAxMiwgMTcnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgubGluZUF0T2Zmc2V0KDE3KSIsICInd3JhcHBlZCBi
ZWNhdXNlICwgMTcsIDMzJyIpOworCisgICAgICAgIHBhcmFncmFwaCA9IHdlYkFyZWEuY2hpbGRB
dEluZGV4KDEpOworICAgICAgICBzaG91bGRCZSgicGFyYWdyYXBoLmNoYXJhY3RlckF0T2Zmc2V0
KDI4KSIsICInXFxuLCAyOCwgMjknIik7CisgICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgud29y
ZEF0T2Zmc2V0KDI4KSIsICInd3JhcHBlZFxcbiwgMjEsIDI5JyIpOworICAgICAgICBzaG91bGRC
ZSgicGFyYWdyYXBoLmxpbmVBdE9mZnNldCgzMCkiLCAiJ2JlY2F1c2Ugb2Ygb25lIGZvcmNlZFxc
biwgMjksIDUxJyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218766</attachid>
            <date>2013-12-09 08:37:42 -0800</date>
            <delta_ts>2013-12-09 09:34:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125451-20131209173740.patch</filename>
            <type>text/plain</type>
            <size>90881</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Q3NmMyNDAy
YzNmMzIxZmI3MGRmM2JjMTZmNWJhNGM0NTMwNzZiMC4uNzE3MTViMzUxMjY4ZDQxYTc1N2MxNzYz
Y2MxZTVkOWUyODUwZDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBB
WDogW0FUS10gQ29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3Qu
YyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6IFJlbW92ZSB0aGUgdGVzdHMg
d2hpY2ggbm93IGV4aXN0IGFzIGxheW91dCB0ZXN0cy4gTm90ZSB0aGF0IHRoZQorICAgICAgICB0
ZXN0cyBmb3IgYXRrX3RleHRfZ2V0X3RleHRfe2JlZm9yZSxhZnRlcn1fb2Zmc2V0IHdlcmUgcmVt
b3ZlZCB3aXRob3V0IGVxdWl2YWxlbnRzCisgICAgICAgIGFkZGVkIHRvIHRoZSBsYXlvdXQgdGVz
dHMuIFRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBFTkQgQXRrVGV4dEJvdW5kYXJ5IHR5cGVzLiBC
b3RoCisgICAgICAgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIEFUSyBhbmQgYXJlIG5vdCBiZWlu
ZyB1c2VkIGJ5IEFULVNQSTIgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4KKyAgICAgICAgKHRlc3RH
ZXRUZXh0RnVuY3Rpb24pOgorICAgICAgICAobWFpbik6CisKIDIwMTMtMTItMDcgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4
cGVjdGF0aW9uIGZvbGxvd2luZyAxNjAyMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0YXRrLmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKaW5k
ZXggNTVhMDAxMTUzYmU2NTMxYzE1MjA3ODA1NDk2YjQ4ZGNkZmExYzZlMy4uMGZkOTkzY2ZlMmJh
MGQ5NTZhN2ZjYjEwODhlMDYyMDQ2Mjk3Mjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwpAQCAtMzEsMTYgKzMxLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNlbnRlcmVkQ29udGVudHMg
PSAiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsKIAogc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnRlbnRzID0gIjxodG1sPjxib2R5PjxwPlRoaXMgaXMgYSB0ZXN0LiBUaGlz
IGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC48L3A+PC9ib2R5Pjwv
aHRtbD4iOwogCi1zdGF0aWMgY29uc3QgY2hhciogY29udGVudHNXaXRoTmV3bGluZXMgPSAiPGh0
bWw+PGJvZHk+PHA+VGhpcyBpcyBhIHRlc3QuIFxuXG5UaGlzXG4gaXMgdGhlIHNlY29uZCBzZW50
ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvcD48L2JvZHk+PC9odG1sPiI7Ci0KLXN0YXRpYyBj
b25zdCBjaGFyKiBjb250ZW50c1dpdGhQcmVmb3JtYXR0ZWRUZXh0ID0gIjxodG1sPjxib2R5Pjxw
cmU+XG5cdFxuXHRmaXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuPC9wcmU+PC9ib2R5Pjwv
aHRtbD4iOwotCi1zdGF0aWMgY29uc3QgY2hhciogY29udGVudHNXaXRoU3BlY2lhbENoYXJzID0g
IjxodG1sPjxib2R5PjxwPiZsYXF1bzsmbmJzcDtUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggJmxk
cXVvO3NwZWNpYWwmcmRxdW87IGNoYXJhY3RlcnMgaW5zaWRlLiZuYnNwOyZyYXF1bzs8L3A+PHVs
PjxsaSBzdHlsZT0nbWF4LXdpZHRoOjEwMHB4Oyc+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRo
YXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy48L2xpPjxsaSBzdHlsZT0nbWF4LXdpZHRo
OjEwMHB4Oyc+PHA+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRp
ZmZlcmVudCBsaW5lcy48L3A+PC9saT48L3VsPjwvYm9keT48L2h0bWw+IjsKLQotc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnRlbnRzSW5UZXh0YXJlYSA9ICI8aHRtbD48Ym9keT48dGV4dGFyZWEgY29s
cz0nODAnPlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0
aGlzIHRoZSB0aGlyZC48L3RleHRhcmVhPjwvYm9keT48L2h0bWw+IjsKLQotc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnRlbnRzSW5UZXh0SW5wdXQgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHR5cGU9J3Rl
eHQnIHNpemU9JzgwJyB2YWx1ZT0nVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBz
ZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLicvPjwvYm9keT48L2h0bWw+IjsKLQogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRzSW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlID0gIjxodG1sPjxi
b2R5PjxwPlRoaXMgaXMgYSB0ZXN0LjwvcD5IZWxsbyB3b3JsZC48L2JvZHk+PC9odG1sPiI7CiAK
IHN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c0luUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlID0g
IjxodG1sPjxib2R5PjxwPlRoaXMgaXMgYSB0ZXN0LjwvcD5IZWxsbyB3b3JsZC48YnIgLz48Zm9u
dCBjb2xvcj0nIzAwY2MwMCc+VGhpcyBzZW50ZW5jZSBpcyBncmVlbi48L2ZvbnQ+PGJyIC8+VGhp
cyBvbmUgaXMgbm90LjwvYm9keT48L2h0bWw+IjsKQEAgLTUxLDEwICs0MSw2IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBjb250ZW50c0luVGFibGVXaXRoSGVhZGVycyA9ICI8aHRtbD48Ym9keT48dGFi
bGU+PHRyPjx0aD5mb288CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhFeHRyYW5l
b3VzV2hpdGVTcGFjZXMgPSAiPGh0bWw+PGhlYWQ+PGJvZHk+PHA+VGhpc1xuICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9ya2VkITwv
cD48L2JvZHk+PC9odG1sPiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhXcmFw
cGVkTGluZXMgPSAiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J21heC13aWR0aDoxNTBweDsnPlRoaXMg
aXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBj
b250YWluZXIuPC9wPjxwPlRoaXMgaXMgYW5vdGhlciBsaW5lIHdyYXBwZWQ8YnI+YmVjYXVzZSBv
ZiBvbmUgZm9yY2VkPGJyPmxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS48L2JvZHk+PC9odG1sPiI7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMgPSAiPGh0
bWw+PGJvZHk+VGhpcyBpcyBvbmUgbGluZSBjb250YWluaW5nIHR3byA8aW1nPiBlbWJlZGRlZCBv
YmplY3RzIDxpbWc+IGluIHRoZSBtaWRkbGUuPC9ib2R5PjwvaHRtbD4iOwotCiBzdGF0aWMgY29u
c3QgY2hhciogY29tYm9Cb3hTZWxlY3RvciA9ICI8aHRtbD48Ym9keT48c2VsZWN0PjxvcHRpb24g
c2VsZWN0ZWQgdmFsdWU9J2Zvbyc+Zm9vPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nYmFyJz5iYXI8
L29wdGlvbj48L3NlbGVjdD48L2JvZHk+PC9odG1sPiI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBl
bWJlZGRlZE9iamVjdHMgPSAiPGh0bWw+PGJvZHk+PHA+Q2hvb3NlOiA8aW5wdXQgdmFsdWU9J2Zv
bycgdHlwZT0nY2hlY2tib3gnLz5mb28gPGlucHV0IHZhbHVlPSdiYXInIHR5cGU9J2NoZWNrYm94
Jy8+YmFyIChwaWNrIG9uZSk8L3A+PHA+Q2hvb3NlOiA8c2VsZWN0IG5hbWU9J2Zvbyc+PG9wdGlv
bj5iYXI8L29wdGlvbj48b3B0aW9uPmJhejwvb3B0aW9uPjwvc2VsZWN0PiAocGljayBvbmUpPC9w
PjxwPjxpbnB1dCBuYW1lPSdmb29iYXJidXR0b24nIHZhbHVlPSdmb29iYXInIHR5cGU9J2J1dHRv
bicvPjwvcD48L2JvZHk+PC9odG1sPiI7CkBAIC02MTQsNTE3ICs2MDAsNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEF0a1RleHQqIHRleHRPYmplY3QsIEF0a0dldFRleHRGdW5j
dGlvbiBmbiwgQXRrVAogICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCBlbmRPZmZz
ZXRSZXN1bHQpOwogICAgIGdfZnJlZSh0ZXh0KTsKIH0KLQotc3RhdGljIHZvaWQgcnVuR2V0VGV4
dFRlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCi17Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0
X2dldF90ZXh0KHRleHRPYmplY3QsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwg
PT0sICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhp
cyB0aGUgdGhpcmQuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQVRLX1RFWFRfQk9V
TkRBUllfQ0hBUiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgIlQiLCAwLCAxKTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
dGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9DSEFSLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgImgiLCAxLCAyKTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3Jl
X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IDAsICIiLCAwLCAwKTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDEsICJUIiwgMCwgMSk7Ci0KLSAgICAvKiBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RB
UlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyAiLCAwLCA1KTsKLQotICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0
LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAg
NCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFS
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAg
ICAgNTgsICJ0aGlyZC4iLCA1OCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dP
UkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA2NCwgInRoaXJkLiIsIDU4LCA2NCk7
Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0
X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAwLCAiIiwgMCwgMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1LCAiVGhpcyAiLCAwLCA1
KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3Rl
eHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDcsICJUaGlzICIsIDAsIDUpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNjQsICJ0aGUg
IiwgNTQsIDU4KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAot
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgImlzICIsIDUsIDgpOwotCi0gICAgdGVzdEdldFRl
eHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAi
aXMgIiwgNSwgOCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIDMsICJpcyAiLCA1LCA4KTsKLQotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNjQs
ICIiLCA2NCwgNjQpOwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQgKi8KLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAwLCAiVGhpcyIsIDAsIDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5E
LAotICAgICAgICAgICAgICAgICAgICAgICAgNCwgIiBpcyIsIDQsIDcpOwotCi0gICAgdGVzdEdl
dFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNSwgIiBp
cyIsIDQsIDcpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAg
ICAgICAgICAgICAgICAgICAgOSwgIiB0ZXN0IiwgOSwgMTQpOwotCi0gICAgdGVzdEdldFRleHRG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNTgsICIgdGhpcmQi
LCA1NywgNjMpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAg
ICAgICAgICAgICAgICAgICAgNjQsICIuIiwgNjMsIDY0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVu
Y3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIiwgMCwg
MCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90
ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAg
ICAgICAgICAgICAgICAgNSwgIlRoaXMiLCAwLCA0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAiVGhpcyIsIDAs
IDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDcsICIgaXMiLCA0LCA3KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA2NCwgIiB0aGlyZCIs
IDU3LCA2Myk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAwLCAiIGlzIiwgNCwgNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1LCAiIGEiLCA3
LCA5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDQsICIgYSIsIDcsIDkpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlv
bih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNjQsICIiLCA2NCwgNjQp
OwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQgKi8KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAwLCAiVGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiVGhpcyBp
cyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVj
dCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5U
RU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIHRoZSBzZWNv
bmQgc2VudGVuY2UuICIsIDE2LCA0NSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
U0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIlRoaXMgaXMgdGhl
IHNlY29uZCBzZW50ZW5jZS4gIiwgMTYsIDQ1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
dGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMg
aXMgYSB0ZXN0LiAiLCAwLCAxNik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmpl
Y3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NF
TlRFTkNFX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNDQsICJUaGlzIGlzIGEgdGVz
dC4gIiwgMCwgMTYpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtf
dGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9T
VEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIiwgMCwgMCk7Ci0KLSAgICAvKiBB
VEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgaXMgYSB0
ZXN0LiIsIDAsIDE1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNywgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9F
TkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50
ZW5jZS4iLCAxNSwgNDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBh
dGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNF
X0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIEFuZCB0aGlzIHRoZSB0aGlyZC4i
LCA0NCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMgaXMgYSB0ZXN0LiIsIDAsIDE1KTsK
LQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRf
YmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAg
ICAgICAgICAgICAgICAgMTUsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7Ci0KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDE0LCAiIiwgMCwgMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRF
TkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCAiIFRoaXMgaXMgdGhlIHNlY29u
ZCBzZW50ZW5jZS4iLCAxNSwgNDQpOwotCi0gICAgLyogSXQncyB0cmlja3kgdG8gdGVzdCB0aGVz
ZSBwcm9wZXJseSByaWdodCBub3csIHNpbmNlIG91ciBhMTF5Ci0gICAgICAgaW1wbGVtZW50YXRp
b24gc3BsaXRzIGRpZmZlcmVudCBsaW5lcyBpbiBkaWZmZXJlbnQgYTExeSBpdGVtcy4gKi8KLSAg
ICAvKiBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBh
IHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIs
IDAsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5EICovCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwg
IlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRo
ZSB0aGlyZC4iLCAwLCA2NCk7Ci0KLSAgICAvKiBGb3Igb2JqZWN0cyBpbXBsZW1lbnRpbmcgQXRr
RWRpdGFibGVUZXh0LCB0cnkgdG8gY2hhbmdlIHRoZQotICAgICAgIGV4cG9zZWQgdGV4dCBhbmQg
cmV0cmlldmUgaXQgYWdhaW4gYXMgYSBmdWxsIGxpbmUuCi0gICAgICAgKHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI4MzApICovCi0gICAgaWYgKEFUS19JU19F
RElUQUJMRV9URVhUKHRleHRPYmplY3QpKSB7Ci0gICAgICAgIGF0a19lZGl0YWJsZV90ZXh0X3Nl
dF90ZXh0X2NvbnRlbnRzKEFUS19FRElUQUJMRV9URVhUKHRleHRPYmplY3QpLCAiZm9vIGJhciBi
YXoiKTsKLSAgICAgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsICJmb28g
YmFyIGJheiIsIDAsIDExKTsKLSAgICAgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5E
LCAwLCAiZm9vIGJhciBiYXoiLCAwLCAxMSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3Rf
cmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAw
LCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdl
YlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdl
YlZpZXcsIGNvbnRlbnRzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRr
VGV4dCBvYmplY3QuICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0
KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7
Ci0KLSAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fz
c2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4
dE9iamVjdCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihvYmplY3QpOwotICAgIGdfb2JqZWN0X3Vu
cmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zm
c2V0TmV3bGluZXMoKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJW
aWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07
Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxv
Y2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVu
dHNXaXRoTmV3bGluZXMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtU
ZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qo
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBvYmplY3QgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsK
LQotICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChvYmplY3QpOwotICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQotICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0
T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZz
ZXRUZXh0YXJlYSgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZp
ZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsK
LSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9j
YXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50
c0luVGV4dGFyZWEsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0
IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2Vi
Vmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KGNo
aWxkKTsKLSAgICBBdGtPYmplY3QqIGdyYW5kY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKGNoaWxkLCAwKTsKLSAgICBnX2Fzc2VydChncmFuZGNoaWxkKTsKLQotICAgIEF0
a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChncmFuZGNoaWxkKTsKLSAgICBnX2Fzc2VydChB
VEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4dE9iamVj
dCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYoZ3Jh
bmRjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQoKQotewotICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsK
LSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9j
YXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRl
KEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRJbnB1dCwgMCwgMCwgMCk7Ci0KLSAg
ICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCog
b2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3Qp
OwotICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRj
aGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdf
YXNzZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhU
KGdyYW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQot
ICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGNo
aWxkKTsKLSAgICBnX29iamVjdF91bnJlZihncmFuZGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJl
Zih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNl
dFdpdGhQcmVmb3JtYXR0ZWRUZXh0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVm
X3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4
MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZp
ZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZp
ZXcsIGNvbnRlbnRzV2l0aFByZWZvcm1hdHRlZFRleHQsIDAsIDAsIDApOwotCi0gICAgQXRrT2Jq
ZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9i
amVjdCk7Ci0KLSAgICBBdGtPYmplY3QqIHByZWZvcm1hdHRlZFRleHQgPSBhdGtfb2JqZWN0X3Jl
Zl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX09CSkVD
VChwcmVmb3JtYXR0ZWRUZXh0KSk7Ci0gICAgZ19hc3NlcnQoYXRrX29iamVjdF9nZXRfcm9sZShw
cmVmb3JtYXR0ZWRUZXh0KSA9PSBBVEtfUk9MRV9QQU5FTCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQocHJlZm9ybWF0dGVkVGV4dCkpOwotICAgIGNoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRf
dGV4dChBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0LCA9PSwgIlx0XG5cdGZpcnN0IGxpbmVcblx0c2Vjb25kIGxpbmVcblx0XG4iKTsK
LSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBUcnkgcmV0cmlldmluZyBhbGwgdGhlIGxpbmVz
IGluZGljYXRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBvZmZzZXRzIGF0IHRoZSBiZWdpbm5pbmcg
b2YgZWFjaCBvZiB0aGVtLiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQocHJl
Zm9ybWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMCwgIlx0XG4iLCAwLCAyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0
aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQpLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDIsICJcdGZpcnN0IGxpbmVcbiIsIDIs
IDE0KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQp
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RB
UlQsIDE0LCAiXHRzZWNvbmQgbGluZVxuIiwgMTQsIDI3KTsKLQotICAgIGdfb2JqZWN0X3VucmVm
KHByZWZvcm1hdHRlZFRleHQpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1z
dGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFNwZWNpYWxDaGFyYWN0
ZXJzKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdl
YmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aFNw
ZWNpYWxDaGFycywgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQg
b2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwYXJhZ3JhcGgg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3Nl
cnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogZXhwZWN0ZWRUZXh0ID0g
Z19zdHJkdXAoIlwzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggXDM0Mlwy
MDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0MFwzMDJc
MjczIik7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHBhcmFn
cmFwaCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sIGV4cGVjdGVkVGV4
dCk7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0
ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCBkb2VzIG5vdCBjcmFzaCBiZWNhdXNlIG9mIG5vdAotICAgICAg
IHByb3Blcmx5IGhhbmRsaW5nIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBVVEYtOCBzdHJpbmcuICov
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChwYXJhZ3JhcGgpLCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsIGV4cGVj
dGVkVGV4dCwgMCwgNTcpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQocGFyYWdy
YXBoKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCwgMCwgZXhwZWN0ZWRUZXh0LCAwLCA1Nyk7Ci0gICAgZ19mcmVlKGV4cGVjdGVkVGV4dCk7
Ci0KLSAgICBBdGtPYmplY3QqIGxpc3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMSk7Ci0gICAgZ19hc3NlcnQoQVRLX09CSkVDVChsaXN0KSk7Ci0KLSAgICBBdGtU
ZXh0KiBsaXN0SXRlbSA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQo
bGlzdCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGxpc3RJdGVtKSk7Ci0KLSAgICB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobGlzdEl0ZW0pLCAwLCAtMSk7Ci0gICAg
Z19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiXDM0MlwyMDBcMjQyIExpc3QgaXRlbSB3aXRoIHNv
bWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuIik7Ci0gICAgZ19mcmVl
KHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0ZXh0IHdpdGggQVRLX1RF
WFRfQk9VTkRBUllfTElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCBmb3IgbGluZSBpdGVtcyB3aXRoIGJ1bGxldHMKLSAgICAgICAoc3BlY2lhbCBjaGFyYWN0
ZXIpIGFuZCB3cmFwcGVkIHRleHQgYWx3YXlzIHJldHVybiB0aGUgcmlnaHQKLSAgICAgICBwaWVj
ZSBvZiB0ZXh0IGZvciBlYWNoIGxpbmUuICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtf
VEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gIiwgMCwgMTIpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDEzLCAid2l0aCBz
b21lICIsIDEyLCAyMik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRl
bSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9F
TkQsIDAsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtIiwgMCwgMTEpOwotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAxMiwgIiB3aXRoIHNvbWUiLCAxMSwgMjEpOwot
Ci0gICAgZ19vYmplY3RfdW5yZWYobGlzdEl0ZW0pOwotCi0gICAgbGlzdEl0ZW0gPSBBVEtfVEVY
VChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGxpc3QsIDEpKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBwbGFjaW5nIHRo
ZSBzYW1lIHRleHQgaW4gYSBwYXJhZ3JhcGggZG9lc24ndCBicmVhayB0aGluZ3MuICovCi0gICAg
dGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBz
b21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJl
ZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQs
IDMsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtICIsIDAsIDEyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKEFUS19URVhUKGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAwLCAiXDM0MlwyMDBc
MjQyIExpc3QgaXRlbSIsIDAsIDExKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhU
KGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9MSU5FX0VORCwgMTIsICIgd2l0aCBzb21lIiwgMTEsIDIxKTsKLQotICAgIGdfb2JqZWN0X3Vu
cmVmKGxpc3QpOwotICAgIGdfb2JqZWN0X3VucmVmKGxpc3RJdGVtKTsKLSAgICBnX29iamVjdF91
bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcygpCi17
Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2Vi
X3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0Fs
bG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0
X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhXcmFwcGVkTGlu
ZXMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4g
Ki8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0g
ICAgZ19hc3NlcnQob2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0
aGUgdGV4dCB3cmFwcGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBh
cmFncmFwaDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVj
dCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKLQotICAgIGdj
aGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMSwgMCwgLTEpOwotICAgIGdf
YXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNl
IG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuIik7Ci0gICAgZ19mcmVlKHRl
eHQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgImUiLCAxNSwg
MTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3Rl
eHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgIiAiLCAxNiwgMTcpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0
ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgInciLCAxNywgMTgpOwotCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZv
cmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAxNiwgIm9uZSAiLCA4LCAx
Mik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDE2LCAibGluZSAiLCAx
MiwgMTcpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAxNiwgIndy
YXBwZWQgIiwgMTcsIDI1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwg
YXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9F
TkQsIDE2LCAiIGxpbmUiLCAxMSwgMTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JE
X0VORCwgMTYsICIgd3JhcHBlZCIsIDE2LCAyNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihw
YXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1dPUkRfRU5ELCAxNiwgIiBiZWNhdXNlIiwgMjQsIDMyKTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMTcsICJUaGlzIGlzIG9uZSBsaW5lICIsIDAsIDE3
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMTcsICJ3cmFwcGVkIGJl
Y2F1c2UgIiwgMTcsIDMzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0
a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFS
VCwgMTcsICJvZiB0aGUgbWF4aW11bSAiLCAzMywgNDgpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCwgMTcsICJUaGlzIGlzIG9uZSBsaW5lIiwgMCwgMTYpOwotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMTcsICIgd3JhcHBlZCBiZWNhdXNlIiwg
MTYsIDMyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dl
dF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDE3LCAiIG9m
IHRoZSBtYXhpbXVtIiwgMzIsIDQ3KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaDEp
OwotCi0gICAgLyogQ2hlY2sgdGhlIHBhcmFncmFwaCB3aXRoIHRoZSB0ZXh0IHdyYXBwZWQgYmVj
YXVzZSBvZiA8YnI+IGVsZW1lbnRzLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaDIgPSBBVEtf
VEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSkpOwotICAgIGdf
YXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDIpKTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9n
ZXRfdGV4dChwYXJhZ3JhcGgyLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09
LCAiVGhpcyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZFxuYmVjYXVzZSBvZiBvbmUgZm9yY2VkXG5s
aW5lIGJyZWFrIGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAyOCwgImQiLCAyNywgMjgpOwotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9DSEFSLCAyOCwgIlxuIiwgMjgsIDI5KTsKLSAgICB0ZXN0R2V0VGV4
dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfQ0hBUiwgMjgsICJiIiwgMjksIDMwKTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMjgsICJsaW5lICIsIDE2LCAyMSk7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDI4LCAid3JhcHBlZFxuIiwgMjEsIDI5KTsK
LSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2Fm
dGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMjgsICJiZWNhdXNlICIs
IDI5LCAzNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAyOCwg
IiB3cmFwcGVkIiwgMjAsIDI4KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIs
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQs
IDI4LCAiXG5iZWNhdXNlIiwgMjgsIDM2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFn
cmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
V09SRF9FTkQsIDI4LCAiIG9mIiwgMzYsIDM5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMzAsICJUaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkXG4iLCAw
LCAyOSk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDMwLCAiYmVjYXVz
ZSBvZiBvbmUgZm9yY2VkXG4iLCAyOSwgNTEpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9MSU5FX1NUQVJULCAzMCwgImxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iLCA1MSwgNzYpOwot
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9i
ZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMzAsICJUaGlzIGlzIGFu
b3RoZXIgbGluZSB3cmFwcGVkIiwgMCwgMjgpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9M
SU5FX0VORCwgMzAsICJcbmJlY2F1c2Ugb2Ygb25lIGZvcmNlZCIsIDI4LCA1MCk7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAzMCwgIlxubGluZSBicmVhayBpbiB0aGUg
bWlkZGxlLiIsIDUwLCA3Nik7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgyKTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cygpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwot
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Nh
dGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUo
R1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMsIDAsIDAsIDAp
OwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtP
YmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQo
b2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4dCB3cmFw
cGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaCA9IEFU
S19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKSk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogdGV4dCA9IGF0
a190ZXh0X2dldF90ZXh0KHBhcmFncmFwaCwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0
ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gXDM1N1wyNzdcMjc0IGVt
YmVkZGVkIG9iamVjdHMgXDM1N1wyNzdcMjc0IGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVl
KHRleHQpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBmaXJzdCBlbWJlZGRlZCBv
YmplY3QgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0
X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAzMiwgIlwzNTdcMjc3XDI3
NCIsIDMyLCAzMyk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0
X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMzIsICJ0
d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJh
Z3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09S
RF9FTkQsIDMyLCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAgICAvKiBD
aGVjayByaWdodCBhZnRlciB0aGUgZmlyc3QgZW1iZWRkZWQgb2JqZWN0IChhbmQgYmVmb3JlIHRo
ZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIs
IDMzLCAiICIsIDMzLCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0
a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwg
MzMsICJ0d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlv
bihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfV09SRF9FTkQsIDMzLCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAg
ICAvKiBDaGVjayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhl
IHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwg
MzQsICJlIiwgMzQsIDM1KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAz
NCwgImVtYmVkZGVkICIsIDM0LCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9F
TkQsIDM0LCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAgICAvKiBDaGVj
ayBhdCB0aGUgZW5kIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3byBlbWJlZGRlZCBv
YmplY3RzICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNDIsICIgIiwgNDIsIDQz
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA0MiwgImVtYmVkZGVkICIs
IDM0LCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDQyLCAiIG9iamVj
dHMiLCA0MiwgNTApOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBzZWNvbmQgZW1i
ZWRkZWQgb2JqZWN0ICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190
ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTEsICJcMzU3
XDI3N1wyNzQiLCA1MSwgNTIpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQs
IDUxLCAib2JqZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMsIDUzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX0VORCwgNTEsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAg
IC8qIENoZWNrIHJpZ2h0IGFmdGVyIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2JqZWN0IChhbmQgYmVm
b3JlIHRoZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X0NIQVIsIDUyLCAiICIsIDUyLCA1Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9T
VEFSVCwgNTIsICJvYmplY3RzIFwzNTdcMjc3XDI3NCAiLCA0MywgNTMpOwotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX1dPUkRfRU5ELCA1MiwgIiBcMzU3XDI3N1wyNzQgaW4iLCA1MCwgNTUpOwot
Ci0gICAgLyogQ2hlY2sgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3Qgd29yZCBhZnRlciB0
aGUgdHdvIGVtYmVkZGVkIG9iamVjdHMgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFS
LCA1MywgImkiLCA1MywgNTQpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQs
IDUzLCAiaW4gIiwgNTMsIDU2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwg
YXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwg
NTMsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBl
bmQgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTUsICIgIiwgNTUsIDU2KTsKLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA1NSwgImluICIsIDUzLCA1Nik7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDU1LCAiIHRoZSIsIDU1LCA1OSk7Ci0KLSAgICBn
X29iamVjdF91bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwot
fQotCiAjZWxzZSAvLyAhQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTAsIDApCiAKIHR5cGVkZWYgZ2No
YXIqICgqQXRrR2V0U3RyaW5nRnVuY3Rpb24pIChBdGtUZXh0KiwgZ2ludCwgQXRrVGV4dEdyYW51
bGFyaXR5LCBnaW50KiwgZ2ludCopOwpAQCAtMTE0MCwzMzkgKzYxNSw2IEBAIHN0YXRpYyB2b2lk
IHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBdGtUZXh0KiB0ZXh0T2JqZWN0LCBBdGtHZXRTdHJpbmdG
dW5jdGlvbiBmbiwKICAgICBnX2ZyZWUodGV4dCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkdldFN0
cmluZ1Rlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCi17Ci0gICAgY2hhciogdGV4dCA9IGF0a190
ZXh0X2dldF90ZXh0KHRleHRPYmplY3QsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4
dCwgPT0sICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQg
dGhpcyB0aGUgdGhpcmQuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQVRLX1RFWFRf
R1JBTlVMQVJJVFlfQ0hBUiAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hB
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUIiwgMCwgMSk7Ci0KLSAgICAvKiBBVEtf
VEVYVF9HUkFOVUxBUklUWV9XT1JEICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9XT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAg
ICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICA0LCAiVGhpcyAiLCAwLCA1KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJ
VFlfV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsK
LQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDU4LCAidGhpcmQuIiwgNTgsIDY0KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRf
R1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDY0LCAidGhpcmQuIiwg
NTgsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZX1NFTlRFTkNFICovCi0gICAg
dGVzdEdldFN0cmluZ0Z1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4gIiwgMCwgMTYpOwotCi0gICAgdGVzdEdldFN0cmlu
Z0Z1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtf
VEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAi
VGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0xJTkUgKi8KLSAgICAvKiBJdCdzIHRyaWNreSB0byB0ZXN0IHRoZXNlIHByb3Blcmx5IHJpZ2h0
IG5vdywgc2luY2Ugb3VyIGExMXkKLSAgICAgICBpbXBsZW1lbnRhdGlvbiBzcGxpdHMgZGlmZmVy
ZW50IGxpbmVzIGluIGRpZmZlcmVudCBhMTF5IGl0ZW1zLiAqLwotICAgIHRlc3RHZXRTdHJpbmdG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RF
WFRfR1JBTlVMQVJJVFlfTElORSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlz
IGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQu
IiwgMCwgNjQpOwotCi0gICAgLyogRm9yIG9iamVjdHMgaW1wbGVtZW50aW5nIEF0a0VkaXRhYmxl
VGV4dCwgdHJ5IHRvIGNoYW5nZSB0aGUKLSAgICAgICBleHBvc2VkIHRleHQgYW5kIHJldHJpZXZl
IGl0IGFnYWluIGFzIGEgZnVsbCBsaW5lLgotICAgICAgIChzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODMwKSAqLwotICAgIGlmIChBVEtfSVNfRURJVEFCTEVf
VEVYVCh0ZXh0T2JqZWN0KSkgewotICAgICAgICBhdGtfZWRpdGFibGVfdGV4dF9zZXRfdGV4dF9j
b250ZW50cyhBVEtfRURJVEFCTEVfVEVYVCh0ZXh0T2JqZWN0KSwgImZvbyBiYXIgYmF6Iik7Ci0g
ICAgICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMCwgImZvbyBiYXIgYmF6
IiwgMCwgMTEpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmlu
Z0F0T2Zmc2V0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9Owot
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRz
LCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICov
Ci0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAg
IGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtUZXh0
KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVY
VCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldE5ld2xpbmVz
KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAg
R3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193
aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aE5ld2xp
bmVzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3Qu
ICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwot
ICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtU
ZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNf
VEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsK
LQotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmll
dyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFRleHRh
cmVhKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdl
YmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzSW5UZXh0
YXJlYSwgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0
LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsK
LSAgICBnX2Fzc2VydChvYmplY3QpOwotICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwot
ICAgIEF0a09iamVjdCogZ3JhbmRjaGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hp
bGQoY2hpbGQsIDApOwotICAgIGdfYXNzZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCog
dGV4dE9iamVjdCA9IEFUS19URVhUKGdyYW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKHRleHRPYmplY3QpKTsKLQotICAgIHJ1bkdldFN0cmluZ1Rlc3RzKHRleHRPYmplY3QpOwot
Ci0gICAgZ19vYmplY3RfdW5yZWYoY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hp
bGQpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRUZXh0SW5wdXQoKQotewotICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAg
ICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRp
b24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdU
S19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRJbnB1dCwgMCwgMCwgMCk7Ci0KLSAgICAv
KiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2Jq
ZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwot
ICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9i
amVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRjaGls
ZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdfYXNz
ZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhUKGdy
YW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQotICAg
IHJ1bkdldFN0cmluZ1Rlc3RzKHRleHRPYmplY3QpOwotCi0gICAgZ19vYmplY3RfdW5yZWYoY2hp
bGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVm
KHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZz
ZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwg
ODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJW
aWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJW
aWV3LCBjb250ZW50c1dpdGhQcmVmb3JtYXR0ZWRUZXh0LCAwLCAwLCAwKTsKLQotICAgIEF0a09i
amVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChv
YmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwcmVmb3JtYXR0ZWRUZXh0ID0gYXRrX29iamVjdF9y
ZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KEFUS19JU19PQkpF
Q1QocHJlZm9ybWF0dGVkVGV4dCkpOwotICAgIGdfYXNzZXJ0KGF0a19vYmplY3RfZ2V0X3JvbGUo
cHJlZm9ybWF0dGVkVGV4dCkgPT0gQVRLX1JPTEVfUEFORUwpOwotICAgIGdfYXNzZXJ0KEFUS19J
U19URVhUKHByZWZvcm1hdHRlZFRleHQpKTsKLSAgICBjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0
X3RleHQoQVRLX1RFWFQocHJlZm9ybWF0dGVkVGV4dCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIodGV4dCwgPT0sICJcdFxuXHRmaXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuIik7
Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogVHJ5IHJldHJpZXZpbmcgYWxsIHRoZSBsaW5l
cyBpbmRpY2F0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgb2Zmc2V0cyBhdCB0aGUgYmVnaW5uaW5n
IG9mIGVhY2ggb2YgdGhlbS4gKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQo
cHJlZm9ybWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9HUkFOVUxBUklUWV9MSU5FLCAwLCAiXHRcbiIsIDAsIDIpOwotICAgIHRlc3RHZXRTdHJpbmdG
dW5jdGlvbihBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJTkUsIDIsICJcdGZpcnN0IGxpbmVcbiIs
IDIsIDE0KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQocHJlZm9ybWF0dGVk
VGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9MSU5FLCAxNCwgIlx0c2Vjb25kIGxpbmVcbiIsIDE0LCAyNyk7Ci0KLSAgICBnX29iamVjdF91
bnJlZihwcmVmb3JtYXR0ZWRUZXh0KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0K
LQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFNwZWNpYWxD
aGFyYWN0ZXJzKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9Owot
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRz
V2l0aFNwZWNpYWxDaGFycywgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0
a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVj
dCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwYXJh
Z3JhcGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogZXhwZWN0ZWRU
ZXh0ID0gZ19zdHJkdXAoIlwzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGgg
XDM0MlwyMDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0
MFwzMDJcMjczIik7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhU
KHBhcmFncmFwaCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sIGV4cGVj
dGVkVGV4dCk7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5n
IHRoZSB0ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCBkb2VzIG5vdCBjcmFz
aAotICAgICAgIGJlY2F1c2Ugb2Ygbm90IHByb3Blcmx5IGhhbmRsaW5nIGNoYXJhY3RlcnMgaW5z
aWRlIHRoZSBVVEYtOCBzdHJpbmcuICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19U
RVhUKHBhcmFncmFwaCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9H
UkFOVUxBUklUWV9MSU5FLCAwLCBleHBlY3RlZFRleHQsIDAsIDU3KTsKLSAgICBnX2ZyZWUoZXhw
ZWN0ZWRUZXh0KTsKLQotICAgIEF0a09iamVjdCogbGlzdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vz
c2libGVfY2hpbGQob2JqZWN0LCAxKTsKLSAgICBnX2Fzc2VydChBVEtfT0JKRUNUKGxpc3QpKTsK
LQotICAgIEF0a1RleHQqIGxpc3RJdGVtID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChsaXN0LCAwKSk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobGlzdEl0ZW0p
KTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChsaXN0SXRlbSksIDAs
IC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJcMzQyXDIwMFwyNDIgTGlzdCBp
dGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4iKTsK
LSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBDaGVjayB0aGF0IGdldHRpbmcgdGhlIHRleHQg
d2l0aCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUCi0gICAgICAgYW5kIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfRU5EIGZvciBsaW5lIGl0ZW1zIHdpdGggYnVsbGV0cwotICAgICAgIChzcGVj
aWFsIGNoYXJhY3RlcikgYW5kIHdyYXBwZWQgdGV4dCBhbHdheXMgcmV0dXJuIHRoZSByaWdodAot
ICAgICAgIHBpZWNlIG9mIHRleHQgZm9yIGVhY2ggbGluZS4gKi8KLSAgICB0ZXN0R2V0U3RyaW5n
RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNl
dCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0g
IiwgMCwgMTIpOwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSks
IGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5F
LCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwotCi0gICAgZ19vYmplY3RfdW5yZWYobGlzdEl0
ZW0pOwotCi0gICAgbGlzdEl0ZW0gPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxl
X2NoaWxkKGxpc3QsIDEpKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwot
Ci0gICAgLyogQ2hlY2sgdGhhdCBwbGFjaW5nIHRoZSBzYW1lIHRleHQgaW4gYSBwYXJhZ3JhcGgg
ZG9lc24ndCBicmVhayB0aGluZ3MuICovCi0gICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFU
S19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwg
IlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3Mg
ZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRTdHJp
bmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAzLCAiXDM0MlwyMDBcMjQyIExpc3QgaXRl
bSAiLCAwLCAxMik7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19URVhUKGxpc3RJdGVt
KSwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJ
TkUsIDEzLCAid2l0aCBzb21lICIsIDEyLCAyMik7Ci0KLSAgICBnX29iamVjdF91bnJlZihsaXN0
KTsKLSAgICBnX29iamVjdF91bnJlZihsaXN0SXRlbSk7Ci0gICAgZ19vYmplY3RfdW5yZWYocGFy
YWdyYXBoKTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQg
dGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcygpCi17Ci0gICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdf
bmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRp
b24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVf
YWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhXcmFwcGVkTGluZXMsIDAs
IDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAg
ICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19h
c3NlcnQob2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4
dCB3cmFwcGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFw
aDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkp
OwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKLQotICAgIGdjaGFyKiB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRo
ZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuIik7Ci0gICAgZ19mcmVlKHRleHQpOwot
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF9zdHJp
bmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAxNiwgIiAiLCAxNiwgMTcp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgMTYsICJsaW5lICIsIDEy
LCAxNyk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dl
dF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAxNywgIndyYXBw
ZWQgYmVjYXVzZSAiLCAxNywgMzMpOwotCi0gICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoMSk7
Ci0KLSAgICAvKiBDaGVjayB0aGUgcGFyYWdyYXBoIHdpdGggdGhlIHRleHQgd3JhcHBlZCBiZWNh
dXNlIG9mIDxicj4gZWxlbWVudHMuICovCi0gICAgQXRrVGV4dCogcGFyYWdyYXBoMiA9IEFUS19U
RVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAxKSk7Ci0gICAgZ19h
c3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoMikpOwotCi0gICAgdGV4dCA9IGF0a190ZXh0X2dl
dF90ZXh0KHBhcmFncmFwaDIsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0s
ICJUaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkXG5iZWNhdXNlIG9mIG9uZSBmb3JjZWRcbmxp
bmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iKTsKLSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICB0ZXN0
R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZz
ZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDI4LCAiXG4iLCAyOCwgMjkpOwotICAgIHRl
c3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29m
ZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgMjgsICJ3cmFwcGVkXG4iLCAyMSwgMjkp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMzAsICJiZWNhdXNlIG9m
IG9uZSBmb3JjZWRcbiIsIDI5LCA1MSk7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgy
KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKCkKLXsKLSAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlv
biBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9h
bGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aEVtYmVkZGVkT2JqZWN0cywg
MCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwot
ICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBn
X2Fzc2VydChvYmplY3QpOwotCi0gICAgLyogQ2hlY2sgdGhlIHBhcmFncmFwaCB3aXRoIHRoZSB0
ZXh0IHdyYXBwZWQgYmVjYXVzZSBvZiBtYXgtd2lkdGguICovCi0gICAgQXRrVGV4dCogcGFyYWdy
YXBoID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDAp
KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgpKTsKLQotICAgIGdjaGFyKiB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRf
Y21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBvbmUgbGluZSBjb250YWluaW5nIHR3byBcMzU3XDI3
N1wyNzQgZW1iZWRkZWQgb2JqZWN0cyBcMzU3XDI3N1wyNzQgaW4gdGhlIG1pZGRsZS4iKTsKLSAg
ICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBDaGVjayByaWdodCBiZWZvcmUgdGhlIGZpcnN0IGVt
YmVkZGVkIG9iamVjdCAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0
a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAz
MiwgIlwzNTdcMjc3XDI3NCIsIDMyLCAzMyk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBh
cmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFS
SVRZX1dPUkQsIDMyLCAidHdvIFwzNTdcMjc3XDI3NCAiLCAyOCwgMzQpOwotCi0gICAgLyogQ2hl
Y2sgcmlnaHQgYWZ0ZXIgdGhlIGZpcnN0IGVtYmVkZGVkIG9iamVjdCAoYW5kIGJlZm9yZSB0aGUg
Zmlyc3Qgd29yZCBhZnRlciBpdCkgKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlf
Q0hBUiwgMzMsICIgIiwgMzMsIDM0KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlf
V09SRCwgMzMsICJ0d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0KLSAgICAvKiBDaGVjayBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3byBlbWJlZGRl
ZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDM0LCAi
ZSIsIDM0LCAzNSk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDM0LCAi
ZW1iZWRkZWQgIiwgMzQsIDQzKTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIGZp
cnN0IHdvcmQgYmV0d2VlbiB0aGUgdHdvIGVtYmVkZGVkIG9iamVjdHMgKi8KLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwg
QVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hBUiwgNDIsICIgIiwgNDIsIDQzKTsKLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwg
QVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgNDIsICJlbWJlZGRlZCAiLCAzNCwgNDMpOwotCi0g
ICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2JqZWN0ICovCi0g
ICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUxLCAiXDM1N1wyNzdcMjc0Iiwg
NTEsIDUyKTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9n
ZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgNTEsICJvYmpl
Y3RzIFwzNTdcMjc3XDI3NCAiLCA0MywgNTMpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYWZ0ZXIg
dGhlIHNlY29uZCBlbWJlZGRlZCBvYmplY3QgKGFuZCBiZWZvcmUgdGhlIGZpcnN0IHdvcmQgYWZ0
ZXIgaXQpICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUyLCAiICIs
IDUyLCA1Myk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUyLCAib2Jq
ZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMsIDUzKTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3RzICov
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUzLCAiaSIsIDUzLCA1NCk7
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUzLCAiaW4gIiwgNTMsIDU2
KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhl
IHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0NIQVIsIDU1LCAiICIsIDU1LCA1Nik7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X1dPUkQsIDU1LCAiaW4gIiwgNTMsIDU2KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFw
aCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19CiAjZW5kaWYgLy8gIUFUS19DSEVD
S19WRVJTSU9OKDIsIDEwLCAwKQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dElu
UGFyYWdyYXBoQW5kQm9keVNpbXBsZSgpCkBAIC0yNTk2LDI1ICsxNzM4LDYgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsv
Y29tYm9Cb3giLCB0ZXN0V2Via2l0QXRrQ29tYm9Cb3gpOwogICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdC9hdGsvZG9jdW1lbnRMb2FkaW5nRXZlbnRzIiwgdGVzdFdlYmtpdEF0a0RvY3VtZW50
TG9hZGluZ0V2ZW50cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9lbWJlZGRl
ZE9iamVjdHMiLCB0ZXN0V2Via2l0QXRrRW1iZWRkZWRPYmplY3RzKTsKLSNpZiAhQVRLX0NIRUNL
X1ZFUlNJT04oMiwgMTAsIDApCi0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRU
ZXh0QXRPZmZzZXQiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRBdE9mZnNldE5ld2xpbmVzIiwgdGVzdFdlYmtp
dEF0a0dldFRleHRBdE9mZnNldE5ld2xpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQvYXRrL2dldFRleHRBdE9mZnNldFRleHRhcmVhIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9m
ZnNldFRleHRhcmVhKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRB
dE9mZnNldFRleHRJbnB1dCIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQp
OwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0V2l0aFBy
ZWZvcm1hdHRlZFRleHQiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFByZWZvcm1h
dHRlZFRleHQpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zm
c2V0V2l0aFNwZWNpYWxDaGFyYWN0ZXJzIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFdp
dGhTcGVjaWFsQ2hhcmFjdGVycyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9n
ZXRUZXh0QXRPZmZzZXRXaXRoV3JhcHBlZExpbmVzIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9m
ZnNldFdpdGhXcmFwcGVkTGluZXMpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsv
Z2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cyIsIHRlc3RXZWJraXRBdGtHZXRUZXh0
QXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKTsKLSNlbHNlCi0gICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldCIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdB
dE9mZnNldCk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9m
ZnNldE5ld2xpbmVzIiwgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0TmV3bGluZXMpOwot
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0U3RyaW5nQXRPZmZzZXRUZXh0YXJl
YSIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFRleHRhcmVhKTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0VGV4dElucHV0IiwgdGVzdFdl
YmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0VGV4dElucHV0KTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0V2l0aFByZWZvcm1hdHRlZFRleHQiLCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCk7Ci0gICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hh
cmFjdGVycyIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hhcmFj
dGVycyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNl
dFdpdGhXcmFwcGVkTGluZXMiLCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoV3Jh
cHBlZExpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFN0cmluZ0F0
T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cyIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNl
dFdpdGhFbWJlZGRlZE9iamVjdHMpOwotI2VuZGlmCiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Vi
a2l0L2F0ay9nZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlIiwgdGVzdFdlYmtpdEF0a0dl
dFRleHRJblBhcmFncmFwaEFuZEJvZHlTaW1wbGUpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdC9hdGsvZ2V0VGV4dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlIiwgdGVzdFdlYmtpdEF0
a0dldFRleHRJblBhcmFncmFwaEFuZEJvZHlNb2RlcmF0ZSk7CiAgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L2F0ay9nZXRUZXh0SW5UYWJsZSIsIHRlc3RXZWJraXRBdGtHZXRUZXh0SW5UYWJs
ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MWUwNjk1Y2ZkZDMxMGExNjhlMTcxYTdkOGFlYjJiMDlmMTgxZDIyMC4uNTQwNTc2ZjZhN2ViZTU3
ZDNjNWUzYTQwZGExYWM2ZDkzNzc0ODQyNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEyLTA5ICBKb2FubWFy
aWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBBWDogW0FUS10gQ29udmVy
dCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRv
IGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlIHRoZSBuZWVkZWQgY2FsbGJhY2tzIGZvciBEUlQgYW5kIFdLVFIuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKGNoYXJhY3RlckF0T2Zmc2V0Q2FsbGJhY2spOiBhZGRlZAorICAgICAgICAod29yZEF0T2Zm
c2V0Q2FsbGJhY2spOiBhZGRlZAorICAgICAgICAobGluZUF0T2Zmc2V0Q2FsbGJhY2spOiBhZGRl
ZAorICAgICAgICAoc2VudGVuY2VBdE9mZnNldENhbGxiYWNrKTogYWRkZWQKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOiBjYWxsYmFja3MgYWRkZWQKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAg
ICAoc3RyaW5nQXRPZmZzZXQpOiBhZGRlZAorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2hhcmFjdGVyQXRPZmZzZXQpOiBhZGRlZAorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6d29yZEF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZW50ZW5jZUF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldCk6IGFkZGVkCisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldCk6IGFkZGVkCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldCk6IGFkZGVkCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQpOiBh
ZGRlZAorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHA6CisgICAgICAgIChXVFI6OnN0cmluZ0F0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOiBhZGRlZAorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQpOiBhZGRlZAorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQpOiBhZGRlZAor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KTog
YWRkZWQKKwogMjAxMy0xMi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtDb2NvYV0gQ29udmVydCBhIGZldyBtb3JlIHBhcnRzIG9mIE1pbmlCcm93c2VyIG92ZXIg
dG8gdGhlIE9iamVjdGl2ZS1DIEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAzMjdiOTg4Y2VmNTg3Y2I1OGZhYmRhYzU1MjljZjg1
OTNkMzAzNzY4Li4xYTNhMjFhMDhhYTQyYzUxY2M5YWE4NWMwZjc4ZTM1NmE0ZGM1NTYxIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAt
MTEwMyw2ICsxMTAzLDQ2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBjaGFy
YWN0ZXJBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAg
b2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjaGFyYWN0ZXJBdE9mZnNldChBZG9w
dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmNoYXJhY3RlckF0T2Zmc2V0KG9mZnNldCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBjaGFyYWN0ZXJBdE9mZnNldC5n
ZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHdvcmRBdE9mZnNldENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiB3b3JkQXRPZmZzZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT53b3Jk
QXRPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQs
IHdvcmRBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxpbmVBdE9mZnNl
dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0
ID0gLTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsaW5lQXRPZmZzZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRo
aXNPYmplY3QpLT5saW5lQXRPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIGxpbmVBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHNlbnRlbmNlQXRPZmZzZXRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgaW50IG9mZnNldCA9IC0xOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisg
ICAgICAgIG9mZnNldCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4
Y2VwdGlvbik7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VudGVuY2VBdE9mZnNl
dChBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnNlbnRlbmNlQXRPZmZzZXQob2Zmc2V0
KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHNlbnRlbmNlQXRPZmZz
ZXQuZ2V0KCkpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBz
dHJpbmdGb3JTZWxlY3Rpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCkBAIC0xNDc1LDcgKzE1MTUsMTIgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAic2V0U2VsZWN0ZWRDaGlsZCIsIHNldFNl
bGVjdGVkQ2hpbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZWxlY3RlZENoaWxkQXRJ
bmRleCIsIHNlbGVjdGVkQ2hpbGRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2Nyb2xsVG9NYWtlVmlzaWJsZSIsIHNjcm9sbFRvTWFrZVZpc2libGVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkK
KyAgICAgICAgeyAiY2hhcmFjdGVyQXRPZmZzZXQiLCBjaGFyYWN0ZXJBdE9mZnNldENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgIndvcmRBdE9mZnNldCIsIHdvcmRBdE9mZnNldENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgImxpbmVBdE9mZnNldCIsIGxpbmVBdE9mZnNldENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNlbnRlbmNlQXRPZmZzZXQiLCBzZW50ZW5jZUF0T2Zmc2V0
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyNlbGlmIFBMQVRGT1JNKElPUykKICAgICAgICAgeyAibGlua2Vk
RWxlbWVudCIsIGxpbmtlZEVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJoZWFk
ZXJFbGVtZW50QXRJbmRleCIsIGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiZWxlbWVudHNGb3JSYW5nZSIsIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CmluZGV4IGFiNDZmNjU0Y2I5ZmQzZGU4ZWEyOTUyNTIxMDQ5M2RkOTkwYjllODAuLmU1M2E1Njcw
NmY5MTUyNDBmOGM3NGY5YmY1OTM4MWY3OGZhOGM5YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTIxMyw2ICsyMTMsMTQgQEAgcHVibGlj
OgogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgbGlua2VkRWxlbWVudCgpOwogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyAgICAvLyBUZXh0LXNwZWNpZmlj
CisgICAgSlNTdHJpbmdSZWYgY2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNT
dHJpbmdSZWYgd29yZEF0T2Zmc2V0KGludCBvZmZzZXQpOworICAgIEpTU3RyaW5nUmVmIGxpbmVB
dE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBKU1N0cmluZ1JlZiBzZW50ZW5jZUF0T2Zmc2V0KGlu
dCBvZmZzZXQpOworI2VuZGlmCisKICAgICAvLyBUYWJsZS1zcGVjaWZpYwogICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2ln
bmVkIHJvdyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCBlZGUxNGVhY2UyZWM1N2I2MWRiMWFlNWM4YTZh
YmU1ZDllYTNkYzI4Li5hZWY4MGZlYjc4MDM3ZDVkM2U1YjY5YzNhNGQ3YTU2MGQxNWNjNGI0IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwCkBAIC0xNDM1LDQgKzE0MzUsNTkgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2xhc3NMaXN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAorSlNTdHJpbmdSZWYgc3RyaW5nQXRPZmZzZXQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwg
QXRrVGV4dEJvdW5kYXJ5IGJvdW5kYXJ5LCBpbnQgb2Zmc2V0KQoreworICAgIGlmICghQVRLX0lT
X1RFWFQoZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOworCisgICAgZ2ludCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKworI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDEwLCAwKQorICAg
IEF0a1RleHRHcmFudWxhcml0eSBncmFudWxhcml0eTsKKyAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7
CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9DSEFSOgorICAgICAgICBncmFudWxhcml0eSA9
IEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBBVEtfVEVY
VF9HUkFOVUxBUklUWV9XT1JEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfU1RBUlQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRfR1JBTlVM
QVJJVFlfTElORTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9T
RU5URU5DRV9TVEFSVDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklU
WV9TRU5URU5DRTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgfQorCisgICAgYnVpbGRl
ci5hcHBlbmQoYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoQVRLX1RFWFQoZWxlbWVudCks
IG9mZnNldCwgZ3JhbnVsYXJpdHksICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCkpOworI2Vsc2UK
KyAgICBidWlsZGVyLmFwcGVuZChhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQoQVRLX1RFWFQo
ZWxlbWVudCksIG9mZnNldCwgYm91bmRhcnksICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCkpOwor
I2VuZGlmCisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiwgJWksICVpIiwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCkpOworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK0pTU3RyaW5n
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCBvZmZzZXQp
Cit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRB
UllfQ0hBUiwgb2Zmc2V0KTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6d29yZEF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0
KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgb2Zmc2V0KTsKK30KKwor
SlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCBvZmZz
ZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgb2Zmc2V0KTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VudGVuY2VBdE9mZnNldChpbnQgb2Zmc2V0KQoreworICAgIHJldHVybiBz
dHJpbmdBdE9mZnNldChtX2VsZW1lbnQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJU
LCBvZmZzZXQpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmlu
ZGV4IDJiZDllY2ZkNjc4OWQ1YjY4ZjU5MzhkYWY3YzNjNmFiOGFlMDYxOWMuLjRmZTVjNGIxZGU1
ZGYyZGUzMWIyMDJlNDZiYzJiZWU1YjYwZjJjYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcApAQCAtMTY0LDYgKzE2NCwxMCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbgogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxs
ZWQodW5zaWduZWQsIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQogdW5zaWduZWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Q291bnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250
ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwgSlNTdHJp
bmdSZWYsIGJvb2wpIHsgcmV0dXJuIDA7IH0KIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYs
IEpTU3RyaW5nUmVmLCBib29sKSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50KSB7IHJldHVy
biAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
d29yZEF0T2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0K
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5j
ZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2ln
bmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggOTBmNWNiMTBjYjcxMWZiNzIyZTdl
ZDFiMmE1YWI4ZjBiNmYzZjgwMi4uNjNkZTVkMTExMWNkODdiMGU1ZWI5YmZjYzVlMTdjOTI4Y2Jh
ZmFiYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTIwMSw2ICsyMDEsMTQgQEAg
cHVibGljOgogICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHVuc2lnbmVkIHVpRWxlbWVudENv
dW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hL
ZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHkpOwogICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29s
IGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJj
aFRleHQsIGJvb2wgdmlzaWJsZU9ubHkpOworCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpCisgICAgLy8gVGV4dC1zcGVjaWZpYworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBjaGFyYWN0ZXJBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gd29yZEF0T2Zmc2V0KGludCBvZmZzZXQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBsaW5lQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHNlbnRlbmNlQXRPZmZzZXQoaW50IG9mZnNldCk7CisjZW5kaWYKICAgICAKICAgICAvLyBU
YWJsZS1zcGVjaWZpYwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY2Vs
bEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAppbmRleCA3Y2RlNTg2YzU2
MmQ0OWZlNTU3MTRjNDg3YWY3MDExMmY3ZTU5MTNhLi5lZWQzM2QyMmE2MzBmMzcyYzMzZjBjZDk0
OGE3MzAwNjA4MzVhMzk0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5pZGwKQEAgLTExNCw2ICsxMTQsMTIgQEAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgewogICAgIERPTVN0cmluZyBhdHRyaWJ1dGVzT2ZDaGlsZHJlbigpOwogICAgIERP
TVN0cmluZyBhdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCk7CiAgICAgRE9NU3RyaW5nIGF0
dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKTsKKworICAgIC8vIFRleHQgaW5mby4KKyAgICBET01T
dHJpbmcgY2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgRE9NU3RyaW5nIHdvcmRB
dE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBET01TdHJpbmcgbGluZUF0T2Zmc2V0KGludCBvZmZz
ZXQpOworICAgIERPTVN0cmluZyBzZW50ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIAog
ICAgIC8vIFRhYmxlIGluZm8uCiAgICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRl
cnMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
YXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXgg
ZmQ0NmMyNTk0ZWE2ZDliZWRkNDAzZGVlMGFjYmJlZjczNTM4ZThhOS4uODEyNDJjYzMwMDBiYjc1
Mjc4Njc1YjViY2ZhYWUyZDlmNTg2Yzg1MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHAKQEAgLTE2MDYsNiArMTYwNiw2MSBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xhc3NMaXN0KCkgY29uc3QKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0T2Zm
c2V0KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIEF0a1RleHRCb3VuZGFyeSBib3VuZGFyeSwg
aW50IG9mZnNldCkKK3sKKyAgICBpZiAoIUFUS19JU19URVhUKGVsZW1lbnQuZ2V0KCkpKQorICAg
ICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIGdp
bnQgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisK
KyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMCwgMCkKKyAgICBBdGtUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHk7CisgICAgc3dpdGNoIChib3VuZGFyeSkgeworICAgIGNhc2UgQVRLX1RFWFRf
Qk9VTkRBUllfQ0hBUjoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklU
WV9DSEFSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX1dPUkRf
U1RBUlQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUOgor
ICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZX0xJTkU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQ6CisgICAg
ICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRfR1JBTlVMQVJJVFlfU0VOVEVOQ0U7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKDAsIDApOworICAgIH0KKworICAgIGJ1aWxkZXIuYXBwZW5kKGF0a190ZXh0X2dl
dF9zdHJpbmdfYXRfb2Zmc2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkpLCBvZmZzZXQsIGdyYW51
bGFyaXR5LCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpKTsKKyNlbHNlCisgICAgYnVpbGRlci5h
cHBlbmQoYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0KEFUS19URVhUKGVsZW1lbnQuZ2V0KCkp
LCBvZmZzZXQsIGJvdW5kYXJ5LCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpKTsKKyNlbmRpZgor
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIsICVpLCAlaSIsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
YnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50IG9m
ZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9C
T1VOREFSWV9DSEFSLCBvZmZzZXQpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0
dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFS
VCwgb2Zmc2V0KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVBdE9mZnNldChpbnQgb2Zmc2V0KQoreworICAgIHJldHVybiBzdHJpbmdB
dE9mZnNldChtX2VsZW1lbnQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIG9mZnNldCk7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZW50ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0
KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsIG9mZnNldCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdUUgogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDNmMDdiOWUzOWQxYzZkODVhMWQzNDE0N2I3NDQyMTU3OTJiZGI1N2EuLmVjNjNhYjk1
ZGNlNmMyZTI4NTkxNDVhYzhlYzJmYTQyMDJmOTg2YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAor
MjAxMy0xMi0wOSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgQVg6IFtBVEtdIENvbnZlcnQgdGhlIGdldF97c3RyaW5nLHRleHR9X2F0X29mZnNldCBhdGt0
ZXN0LmMgdW5pdCB0ZXN0cyB0byBsYXlvdXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0cyBhbmQgZXhwZWN0YXRpb25zIGJhc2Vk
IG9uIHRoZSB0ZXN0cyBhbmQgZXhwZWN0YXRpb25zIGZvdW5kIGluIGF0a3Rlc3QuYy4KKyAgICAg
ICAgVGhlc2Ugd2VyZSBkb25lIGFzIHBsYXRmb3JtLXNwZWNpZmljIHRlc3RzIGJlY2F1c2Ugb25s
eSBBVEstYmFzZWQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcworICAgICAgICBzZWVtIHRvIGhhdmUg
YW55IG5lZWQgZm9yIHRoaXMgc3VwcG9ydC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNl
dC1lbWJlZGRlZC1vYmplY3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LW5ld2xpbmVzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3
bGluZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkv
dGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQt
YXQtb2Zmc2V0LXNpbXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFs
LWNoYXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zm
c2V0LXRleHRpbnB1dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNz
aWJpbGl0eS90ZXh0LWF0LW9mZnNldC13cmFwcGVkLWxpbmVzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3Jh
cHBlZC1saW5lcy5odG1sOiBBZGRlZC4KKwogMjAxMy0xMi0wNSAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBCcmluZyBlbmQtb2Ytc3RyZWFtIGFsZ29y
aXRobSBzZWN0aW9uIHVwIHRvIGN1cnJlbnQgc3BlYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVj
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkv
dGV4dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2JqZWN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmFhOTE4MDJhZTgyMjdkN2FmZjAxNjlhMmVkOGMwZDcxZDVhYTE2OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0
LWVtYmVkZGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1RoaXMgaXMg
b25lIGxpbmUgY29udGFpbmluZyB0d28gIGVtYmVkZGVkIG9iamVjdHMgIGluIHRoZSBtaWRkbGUu
CisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVy
ZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMzIpIGlzICfDr8K/wrwsIDMy
LCAzMycKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMzIpIGlzICd0d28gw6/Cv8K8ICwgMjgs
IDM0JworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDMzKSBpcyAnICwgMzMsIDM0Jwor
UEFTUyBjb250ZW50LndvcmRBdE9mZnNldCgzMykgaXMgJ3R3byDDr8K/wrwgLCAyOCwgMzQnCitQ
QVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMzQpIGlzICdlLCAzNCwgMzUnCitQQVNTIGNv
bnRlbnQud29yZEF0T2Zmc2V0KDM0KSBpcyAnZW1iZWRkZWQgLCAzNCwgNDMnCitQQVNTIGNvbnRl
bnQuY2hhcmFjdGVyQXRPZmZzZXQoNDIpIGlzICcgLCA0MiwgNDMnCitQQVNTIGNvbnRlbnQud29y
ZEF0T2Zmc2V0KDQyKSBpcyAnZW1iZWRkZWQgLCAzNCwgNDMnCitQQVNTIGNvbnRlbnQuY2hhcmFj
dGVyQXRPZmZzZXQoNTEpIGlzICfDr8K/wrwsIDUxLCA1MicKK1BBU1MgY29udGVudC53b3JkQXRP
ZmZzZXQoNTEpIGlzICdvYmplY3RzIMOvwr/CvCAsIDQzLCA1MycKK1BBU1MgY29udGVudC5jaGFy
YWN0ZXJBdE9mZnNldCg1MikgaXMgJyAsIDUyLCA1MycKK1BBU1MgY29udGVudC53b3JkQXRPZmZz
ZXQoNTIpIGlzICdvYmplY3RzIMOvwr/CvCAsIDQzLCA1MycKK1BBU1MgY29udGVudC5jaGFyYWN0
ZXJBdE9mZnNldCg1MykgaXMgJ2ksIDUzLCA1NCcKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQo
NTMpIGlzICdpbiAsIDUzLCA1NicKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1NSkg
aXMgJyAsIDU1LCA1NicKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTUpIGlzICdpbiAsIDUz
LCA1NicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0
LWF0LW9mZnNldC1lbWJlZGRlZC1vYmplY3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1lbWJlZGRlZC1vYmplY3RzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjg2YzVkOWJkNDdlM2Q5M2NlMGE0ZDE3MWFmM2Q5ZDg0OTA4NDIwMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQt
YXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8cD5UaGlzIGlzIG9uZSBsaW5lIGNvbnRhaW5p
bmcgdHdvIDxpbWc+IGVtYmVkZGVkIG9iamVjdHMgPGltZz4gaW4gdGhlIG1pZGRsZS48L3A+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVu
dCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsKKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIHdlYkFyZWEgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIGNvbnRlbnQg
PSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAgICAgICBzaG91bGRCZSgiY29udGVudC5j
aGFyYWN0ZXJBdE9mZnNldCgzMikiLCAiJ1wzNTdcMjc3XDI3NCwgMzIsIDMzJyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMzIpIiwgIid0d28gXDM1N1wyNzdcMjc0
ICwgMjgsIDM0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNl
dCgzMykiLCAiJyAsIDMzLCAzNCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0
T2Zmc2V0KDMzKSIsICIndHdvIFwzNTdcMjc3XDI3NCAsIDI4LCAzNCciKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMzQpIiwgIidlLCAzNCwgMzUnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgzNCkiLCAiJ2VtYmVkZGVkICwg
MzQsIDQzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg0
MikiLCAiJyAsIDQyLCA0MyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zm
c2V0KDQyKSIsICInZW1iZWRkZWQgLCAzNCwgNDMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250
ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUxKSIsICInXDM1N1wyNzdcMjc0LCA1MSwgNTInIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1MSkiLCAiJ29iamVjdHMgXDM1
N1wyNzdcMjc0ICwgNDMsIDUzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0
ZXJBdE9mZnNldCg1MikiLCAiJyAsIDUyLCA1MyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRl
bnQud29yZEF0T2Zmc2V0KDUyKSIsICInb2JqZWN0cyBcMzU3XDI3N1wyNzQgLCA0MywgNTMnIik7
CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUzKSIsICInaSwg
NTMsIDU0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNTMpIiwg
IidpbiAsIDUzLCA1NiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRP
ZmZzZXQoNTUpIiwgIicgLCA1NSwgNTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Lndv
cmRBdE9mZnNldCg1NSkiLCAiJ2luICwgNTMsIDU2JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3bGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3bGluZXMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNmVlODBhNmZlMDlhZDFlZGMyNzE5MWE1MThjYmQx
ODkzZmEzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNj
ZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxOSBAQAorVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5k
IHRoaXMgdGhlIHRoaXJkLgorCitUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50
IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDAp
IGlzICdULCAwLCAxJworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCgwKSBpcyAnVGhpcyAsIDAs
IDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIGlzICdUaGlzICwgMCwgNScKK1BBU1Mg
Y29udGVudC53b3JkQXRPZmZzZXQoMTApIGlzICd0ZXN0LiAsIDEwLCAxNicKK1BBU1MgY29udGVu
dC53b3JkQXRPZmZzZXQoNTgpIGlzICd0aGlyZC4sIDU4LCA2NCcKK1BBU1MgY29udGVudC5zZW50
ZW5jZUF0T2Zmc2V0KDApIGlzICdUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVu
dC5zZW50ZW5jZUF0T2Zmc2V0KDE1KSBpcyAnVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnCitQQVNT
IGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUg
c2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQuLCAwLCA2NCcKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5l
cy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1v
ZmZzZXQtbmV3bGluZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDAzMTEwZTAzYTI2ZWQ1MzU3NzI1YzFh
OGY5NzA0MDNjY2Y1ZDkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtbmV3bGluZXMuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8cCBpZD0iY29udGVu
dCI+VGhpcyBpcyBhIHRlc3QuIAorCitUaGlzCisgICBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBB
bmQgdGhpcyB0aGUgdGhpcmQuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRp
ZXMgYW5kIG9mZnNldHMuIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Cisg
ICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgICAgIHZhciBjb250ZW50ID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7CisKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkiLCAiJ1QsIDAsIDEn
Iik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgwKSIsICInVGhpcyAs
IDAsIDUnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg0KSIsICIn
VGhpcyAsIDAsIDUnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgx
MCkiLCAiJ3Rlc3QuICwgMTAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3Jk
QXRPZmZzZXQoNTgpIiwgIid0aGlyZC4sIDU4LCA2NCciKTsKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSIsICInVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnIik7
CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMTUpIiwgIidUaGlz
IGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGluZUF0
T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNl
LiBBbmQgdGhpcyB0aGUgdGhpcmQuLCAwLCA2NCciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1wcmVmb3Jt
YXR0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiYzMwODE2MzliNDY0MTY1MjU1ZmFiYmY3
ZDNmNDdlN2MzMWNiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1wcmVmb3JtYXR0ZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTYgQEAKKwkKKwlmaXJzdCBsaW5lCisJc2Vjb25kIGxpbmUKKwkKK1RoaXMg
dGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51
bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdcdFxuLCAwLCAyJworUEFTUyBjb250ZW50
LmxpbmVBdE9mZnNldCgyKSBpcyAnXHRmaXJzdCBsaW5lXG4sIDIsIDE0JworUEFTUyBjb250ZW50
LmxpbmVBdE9mZnNldCgxNCkgaXMgJ1x0c2Vjb25kIGxpbmVcbiwgMTQsIDI3JworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXByZWZv
cm1hdHRlZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4
dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA2Zjk0MTg4ZTg4MTQ2
Y2FiYjg2ZTZiN2Q1NDc5MGJlMDQzZjM2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC5o
dG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4K
KzxwcmUgaWQ9ImNvbnRlbnQiPgorCQorCWZpcnN0IGxpbmUKKwlzZWNvbmQgbGluZQorCQorPC9w
cmU+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQg
ZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsK
KyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIHdlYkFyZWEg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIGNv
bnRlbnQgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAgICAgICBzaG91bGRCZSgiY29u
dGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ1xcdFxcbiwgMCwgMiciKTsKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnQubGluZUF0T2Zmc2V0KDIpIiwgIidcXHRmaXJzdCBsaW5lXFxuLCAyLCAxNCci
KTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGluZUF0T2Zmc2V0KDE0KSIsICInXFx0c2Vj
b25kIGxpbmVcXG4sIDE0LCAyNyciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zaW1wbGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhNmVlODBhNmZlMDlhZDFlZGMyNzE5MWE1MThjYmQxODkzZmEzYTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0
LWF0LW9mZnNldC1zaW1wbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgaXMg
YSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4K
KworVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJl
bnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSBpcyAnVCwgMCwgMScKK1BB
U1MgY29udGVudC53b3JkQXRPZmZzZXQoMCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50
LndvcmRBdE9mZnNldCg0KSBpcyAnVGhpcyAsIDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zm
c2V0KDEwKSBpcyAndGVzdC4gLCAxMCwgMTYnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDU4
KSBpcyAndGhpcmQuLCA1OCwgNjQnCitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSBp
cyAnVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnCitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNl
dCgxNSkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LmxpbmVBdE9m
ZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4g
QW5kIHRoaXMgdGhlIHRoaXJkLiwgMCwgNjQnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc2ltcGxlLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zaW1wbGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45Y2RjMDI4ODc0YzM1NWVkYTFjM2VkMWNlNTY2OTgzMzNlMzI0MjRjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4
dC1hdC1vZmZzZXQtc2ltcGxlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgaWQ9ImJvZHkiPgorPHAgaWQ9ImNvbnRlbnQiPlRoaXMgaXMgYSB0ZXN0LiBUaGlz
IGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC48L3A+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0
IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsKKyAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSB3ZWJB
cmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0
ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQu
d29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwgMCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidUaGlzICwgMCwgNSciKTsKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSIsICIndGVzdC4gLCAxMCwgMTYnIik7CisgICAg
ICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1OCkiLCAiJ3RoaXJkLiwgNTgsIDY0
JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDApIiwgIidU
aGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuc2Vu
dGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiBU
aGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JyIp
OworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lh
bC1jaGFycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJp
bGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zODE0Yzc1YjYxYjA4OTFmY2NlMDFkOGVmMTlmMmJkZDQwZmRkMzc4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtc3BlY2lhbC1jaGFycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorwqvCoFRoaXMg
aXMgYSBwYXJhZ3JhcGggd2l0aCDigJxzcGVjaWFs4oCdIGNoYXJhY3RlcnMgaW5zaWRlLsKgwrsK
KworTGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBs
aW5lcy4KK0xpc3QgaXRlbSB3aXRoIHNvbWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJl
bnQgbGluZXMuCisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBm
b3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHBhcmFncmFwaC5saW5lQXRPZmZzZXQoMCkgaXMgJ8OCwqvD
gsKgVGhpcyBpcyBhIHBhcmFncmFwaCB3aXRoIMOiwoDCnHNwZWNpYWzDosKAwp0gY2hhcmFjdGVy
cyBpbnNpZGUuw4LCoMOCwrssIDAsIDU3JworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMykg
aXMgJ8OiwoDCoiBMaXN0IGl0ZW0gLCAwLCAxMicKK1BBU1MgbGlzdGl0ZW0ubGluZUF0T2Zmc2V0
KDEzKSBpcyAnd2l0aCBzb21lICwgMTIsIDIyJworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQo
MykgaXMgJ8OiwoDCoiBMaXN0IGl0ZW0gLCAwLCAxMicKK1BBU1MgbGlzdGl0ZW0ubGluZUF0T2Zm
c2V0KDEzKSBpcyAnd2l0aCBzb21lICwgMTIsIDIyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNwZWNpYWwtY2hhcnMuaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNw
ZWNpYWwtY2hhcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDU0OTk2YjNkMDI1YWFhNzk3M2UxYmEwYzE1
YThhODAyNWJlNTU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxwPiZsYXF1bzsm
bmJzcDtUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggJmxkcXVvO3NwZWNpYWwmcmRxdW87IGNoYXJh
Y3RlcnMgaW5zaWRlLiZuYnNwOyZyYXF1bzs8L3A+PHVsPjxsaSBzdHlsZT0nbWF4LXdpZHRoOjcw
cHg7Jz5MaXN0IGl0ZW0gd2l0aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50
IGxpbmVzLjwvbGk+PGxpIHN0eWxlPSdtYXgtd2lkdGg6NzBweDsnPjxwPkxpc3QgaXRlbSB3aXRo
IHNvbWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuPC9wPjwvbGk+PC91
bD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBl
bGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5mb2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisgICAgICAgIHZhciBw
YXJhZ3JhcGggPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgc2hvdWxkQmUoInBh
cmFncmFwaC5saW5lQXRPZmZzZXQoMCkiLCAiJ1wzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFy
YWdyYXBoIHdpdGggXDM0MlwyMDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGlu
c2lkZS5cMzAyXDI0MFwzMDJcMjczLCAwLCA1NyciKTsKKworICAgICAgICB2YXIgbGlzdCA9IHdl
YkFyZWEuY2hpbGRBdEluZGV4KDEpOworICAgICAgICB2YXIgbGlzdGl0ZW0gPSBsaXN0LmNoaWxk
QXRJbmRleCgwKTsKKyAgICAgICAgc2hvdWxkQmUoImxpc3RpdGVtLmxpbmVBdE9mZnNldCgzKSIs
ICInXDM0MlwyMDBcMjQyIExpc3QgaXRlbSAsIDAsIDEyJyIpOworICAgICAgICBzaG91bGRCZSgi
bGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDEzKSIsICInd2l0aCBzb21lICwgMTIsIDIyJyIpOworCisg
ICAgICAgIHZhciBsaXN0aXRlbSA9IGxpc3QuY2hpbGRBdEluZGV4KDEpOworICAgICAgICBzaG91
bGRCZSgibGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDMpIiwgIidcMzQyXDIwMFwyNDIgTGlzdCBpdGVt
ICwgMCwgMTInIik7CisgICAgICAgIHNob3VsZEJlKCJsaXN0aXRlbS5saW5lQXRPZmZzZXQoMTMp
IiwgIid3aXRoIHNvbWUgLCAxMiwgMjInIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJp
bGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmQwNGVjYzQ4ZWEwY2I2OGMxMTMzOTEzOWUzYzZmY2NkYWU4MmZl
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBA
CisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVy
ZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkgaXMgJ1QsIDAsIDEnCitQ
QVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDApIGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVu
dC53b3JkQXRPZmZzZXQoNCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9m
ZnNldCgxMCkgaXMgJ3Rlc3QuICwgMTAsIDE2JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1
OCkgaXMgJ3RoaXJkLiwgNTgsIDY0JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMCkg
aXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZz
ZXQoMTUpIGlzICdUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5saW5lQXRP
ZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2Uu
IEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgw
KSBpcyAnZm9vIGJhciBiYXosIDAsIDExJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcwZmJlMTBlMDhmNGI5M2NhNTY1OTFmY2EzMGI0NTMwZDU5MGY2MDgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90
ZXh0LWF0LW9mZnNldC10ZXh0YXJlYS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzx0ZXh0YXJlYSBpZD0iY29udGVudCIgY29scz0nODAn
PlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRo
ZSB0aGlyZC48L3RleHRhcmVhPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhl
IGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMg
YW5kIG9mZnNldHMuIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmZvY3VzKCk7Cisg
ICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkiLCAi
J1QsIDAsIDEnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCgwKSIs
ICInVGhpcyAsIDAsIDUnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNl
dCg0KSIsICInVGhpcyAsIDAsIDUnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRB
dE9mZnNldCgxMCkiLCAiJ3Rlc3QuICwgMTAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29u
dGVudC53b3JkQXRPZmZzZXQoNTgpIiwgIid0aGlyZC4sIDU4LCA2NCciKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSIsICInVGhpcyBpcyBhIHRlc3QuICwg
MCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMTUp
IiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRl
bnQubGluZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25k
IHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQuLCAwLCA2NCciKTsKKworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnZhbHVlID0gImZvbyBiYXIgYmF6IjsKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQubGluZUF0T2Zmc2V0KDApIiwgIidmb28gYmFyIGJheiwg
MCwgMTEnIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNl
dC10ZXh0aW5wdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZDA0ZWNjNDhlYTBjYjY4YzExMzM5MTM5ZTNjNmZjY2RhZTgyZmVlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtdGV4dGlucHV0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisKK1RoaXMgdGVzdHMg
dGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRp
ZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNv
bnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkgaXMgJ1QsIDAsIDEnCitQQVNTIGNvbnRlbnQud29y
ZEF0T2Zmc2V0KDApIGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQo
NCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCgxMCkgaXMgJ3Rl
c3QuICwgMTAsIDE2JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1OCkgaXMgJ3RoaXJkLiwg
NTgsIDY0JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0
ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMTUpIGlzICdUaGlz
IGlzIGEgdGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5saW5lQXRPZmZzZXQoMCkgaXMgJ1Ro
aXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0
aGlyZC4sIDAsIDY0JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAnZm9vIGJhciBi
YXosIDAsIDExJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mjc3NzI4OTY5NDFkN2VhYzMxZTZmMjk0ZWVhYTMyZWVhZTQwZjM3ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0
LXRleHRpbnB1dC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IGlkPSJib2R5Ij4KKzxpbnB1dCBpZD0iY29udGVudCIgdHlwZT0ndGV4dCcgc2l6ZT0nODAnIHZh
bHVlPSdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhp
cyB0aGUgdGhpcmQuJy8+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJp
bGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQg
b2Zmc2V0cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuZm9jdXMoKTsKKyAgICAg
ICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwg
MCwgMSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidU
aGlzICwgMCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQp
IiwgIidUaGlzICwgMCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zm
c2V0KDEwKSIsICIndGVzdC4gLCAxMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50
LndvcmRBdE9mZnNldCg1OCkiLCAiJ3RoaXJkLiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRC
ZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAx
NiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAi
J1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5s
aW5lQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2Vu
dGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JyIpOworCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikudmFsdWUgPSAiZm9vIGJhciBiYXoiOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ2ZvbyBiYXIgYmF6LCAwLCAx
MSciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXdy
YXBwZWQtbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTUzNTFiYjRmODI0NTgyMTlmZDFkNzM3OTZkM2MzYjY4ZjExMzM1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQt
b2Zmc2V0LXdyYXBwZWQtbGluZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1RoaXMg
aXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBj
b250YWluZXIuCisKK1RoaXMgaXMgYW5vdGhlciBsaW5lIHdyYXBwZWQKK2JlY2F1c2Ugb2Ygb25l
IGZvcmNlZAorbGluZSBicmVhayBpbiB0aGUgbWlkZGxlLgorCitUaGlzIHRlc3RzIHRoZSBhYmls
aXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBv
ZmZzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwYXJhZ3JhcGgu
Y2hhcmFjdGVyQXRPZmZzZXQoMTYpIGlzICcgLCAxNiwgMTcnCitQQVNTIHBhcmFncmFwaC53b3Jk
QXRPZmZzZXQoMTYpIGlzICdsaW5lICwgMTIsIDE3JworUEFTUyBwYXJhZ3JhcGgubGluZUF0T2Zm
c2V0KDE3KSBpcyAnd3JhcHBlZCBiZWNhdXNlICwgMTcsIDMzJworUEFTUyBwYXJhZ3JhcGguY2hh
cmFjdGVyQXRPZmZzZXQoMjgpIGlzICdcbiwgMjgsIDI5JworUEFTUyBwYXJhZ3JhcGgud29yZEF0
T2Zmc2V0KDI4KSBpcyAnd3JhcHBlZFxuLCAyMSwgMjknCitQQVNTIHBhcmFncmFwaC5saW5lQXRP
ZmZzZXQoMzApIGlzICdiZWNhdXNlIG9mIG9uZSBmb3JjZWRcbiwgMjksIDUxJworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXdyYXBw
ZWQtbGluZXMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3Rl
eHQtYXQtb2Zmc2V0LXdyYXBwZWQtbGluZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmNhMjllOWQ2NTBm
Y2FhYmJlZThiNTM3MGY3ODc5ZDIzZjVkYzE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5l
cy5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5
Ij4KKzxwIHN0eWxlPSdtYXgtd2lkdGg6MTIwcHg7Jz5UaGlzIGlzIG9uZSBsaW5lIHdyYXBwZWQg
YmVjYXVzZSBvZiB0aGUgbWF4aW11bSB3aWR0aCBvZiBpdHMgY29udGFpbmVyLjwvcD48cD5UaGlz
IGlzIGFub3RoZXIgbGluZSB3cmFwcGVkPGJyPmJlY2F1c2Ugb2Ygb25lIGZvcmNlZDxicj5saW5l
IGJyZWFrIGluIHRoZSBtaWRkbGUuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFy
aXRpZXMgYW5kIG9mZnNldHMuIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7
CisgICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisKKyAgICAgICAgdmFyIHBhcmFncmFwaCA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICBzaG91bGRCZSgicGFyYWdyYXBoLmNoYXJhY3RlckF0T2Zmc2V0KDE2KSIsICIn
ICwgMTYsIDE3JyIpOworICAgICAgICBzaG91bGRCZSgicGFyYWdyYXBoLndvcmRBdE9mZnNldCgx
NikiLCAiJ2xpbmUgLCAxMiwgMTcnIik7CisgICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgubGlu
ZUF0T2Zmc2V0KDE3KSIsICInd3JhcHBlZCBiZWNhdXNlICwgMTcsIDMzJyIpOworCisgICAgICAg
IHBhcmFncmFwaCA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpOworICAgICAgICBzaG91bGRCZSgi
cGFyYWdyYXBoLmNoYXJhY3RlckF0T2Zmc2V0KDI4KSIsICInXFxuLCAyOCwgMjknIik7CisgICAg
ICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgud29yZEF0T2Zmc2V0KDI4KSIsICInd3JhcHBlZFxcbiwg
MjEsIDI5JyIpOworICAgICAgICBzaG91bGRCZSgicGFyYWdyYXBoLmxpbmVBdE9mZnNldCgzMCki
LCAiJ2JlY2F1c2Ugb2Ygb25lIGZvcmNlZFxcbiwgMjksIDUxJyIpOworICAgIH0KKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218770</attachid>
            <date>2013-12-09 09:34:23 -0800</date>
            <delta_ts>2013-12-09 10:03:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125451-20131209183421.patch</filename>
            <type>text/plain</type>
            <size>90925</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Q3NmMyNDAy
YzNmMzIxZmI3MGRmM2JjMTZmNWJhNGM0NTMwNzZiMC4uNzE3MTViMzUxMjY4ZDQxYTc1N2MxNzYz
Y2MxZTVkOWUyODUwZDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBB
WDogW0FUS10gQ29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3Qu
YyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6IFJlbW92ZSB0aGUgdGVzdHMg
d2hpY2ggbm93IGV4aXN0IGFzIGxheW91dCB0ZXN0cy4gTm90ZSB0aGF0IHRoZQorICAgICAgICB0
ZXN0cyBmb3IgYXRrX3RleHRfZ2V0X3RleHRfe2JlZm9yZSxhZnRlcn1fb2Zmc2V0IHdlcmUgcmVt
b3ZlZCB3aXRob3V0IGVxdWl2YWxlbnRzCisgICAgICAgIGFkZGVkIHRvIHRoZSBsYXlvdXQgdGVz
dHMuIFRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBFTkQgQXRrVGV4dEJvdW5kYXJ5IHR5cGVzLiBC
b3RoCisgICAgICAgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIEFUSyBhbmQgYXJlIG5vdCBiZWlu
ZyB1c2VkIGJ5IEFULVNQSTIgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4KKyAgICAgICAgKHRlc3RH
ZXRUZXh0RnVuY3Rpb24pOgorICAgICAgICAobWFpbik6CisKIDIwMTMtMTItMDcgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4
cGVjdGF0aW9uIGZvbGxvd2luZyAxNjAyMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0YXRrLmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKaW5k
ZXggNTVhMDAxMTUzYmU2NTMxYzE1MjA3ODA1NDk2YjQ4ZGNkZmExYzZlMy4uMGZkOTkzY2ZlMmJh
MGQ5NTZhN2ZjYjEwODhlMDYyMDQ2Mjk3Mjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwpAQCAtMzEsMTYgKzMxLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNlbnRlcmVkQ29udGVudHMg
PSAiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsKIAogc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnRlbnRzID0gIjxodG1sPjxib2R5PjxwPlRoaXMgaXMgYSB0ZXN0LiBUaGlz
IGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC48L3A+PC9ib2R5Pjwv
aHRtbD4iOwogCi1zdGF0aWMgY29uc3QgY2hhciogY29udGVudHNXaXRoTmV3bGluZXMgPSAiPGh0
bWw+PGJvZHk+PHA+VGhpcyBpcyBhIHRlc3QuIFxuXG5UaGlzXG4gaXMgdGhlIHNlY29uZCBzZW50
ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvcD48L2JvZHk+PC9odG1sPiI7Ci0KLXN0YXRpYyBj
b25zdCBjaGFyKiBjb250ZW50c1dpdGhQcmVmb3JtYXR0ZWRUZXh0ID0gIjxodG1sPjxib2R5Pjxw
cmU+XG5cdFxuXHRmaXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuPC9wcmU+PC9ib2R5Pjwv
aHRtbD4iOwotCi1zdGF0aWMgY29uc3QgY2hhciogY29udGVudHNXaXRoU3BlY2lhbENoYXJzID0g
IjxodG1sPjxib2R5PjxwPiZsYXF1bzsmbmJzcDtUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggJmxk
cXVvO3NwZWNpYWwmcmRxdW87IGNoYXJhY3RlcnMgaW5zaWRlLiZuYnNwOyZyYXF1bzs8L3A+PHVs
PjxsaSBzdHlsZT0nbWF4LXdpZHRoOjEwMHB4Oyc+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRo
YXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy48L2xpPjxsaSBzdHlsZT0nbWF4LXdpZHRo
OjEwMHB4Oyc+PHA+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRp
ZmZlcmVudCBsaW5lcy48L3A+PC9saT48L3VsPjwvYm9keT48L2h0bWw+IjsKLQotc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnRlbnRzSW5UZXh0YXJlYSA9ICI8aHRtbD48Ym9keT48dGV4dGFyZWEgY29s
cz0nODAnPlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0
aGlzIHRoZSB0aGlyZC48L3RleHRhcmVhPjwvYm9keT48L2h0bWw+IjsKLQotc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnRlbnRzSW5UZXh0SW5wdXQgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHR5cGU9J3Rl
eHQnIHNpemU9JzgwJyB2YWx1ZT0nVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBz
ZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLicvPjwvYm9keT48L2h0bWw+IjsKLQogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRzSW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlID0gIjxodG1sPjxi
b2R5PjxwPlRoaXMgaXMgYSB0ZXN0LjwvcD5IZWxsbyB3b3JsZC48L2JvZHk+PC9odG1sPiI7CiAK
IHN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c0luUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlID0g
IjxodG1sPjxib2R5PjxwPlRoaXMgaXMgYSB0ZXN0LjwvcD5IZWxsbyB3b3JsZC48YnIgLz48Zm9u
dCBjb2xvcj0nIzAwY2MwMCc+VGhpcyBzZW50ZW5jZSBpcyBncmVlbi48L2ZvbnQ+PGJyIC8+VGhp
cyBvbmUgaXMgbm90LjwvYm9keT48L2h0bWw+IjsKQEAgLTUxLDEwICs0MSw2IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBjb250ZW50c0luVGFibGVXaXRoSGVhZGVycyA9ICI8aHRtbD48Ym9keT48dGFi
bGU+PHRyPjx0aD5mb288CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhFeHRyYW5l
b3VzV2hpdGVTcGFjZXMgPSAiPGh0bWw+PGhlYWQ+PGJvZHk+PHA+VGhpc1xuICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9ya2VkITwv
cD48L2JvZHk+PC9odG1sPiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhXcmFw
cGVkTGluZXMgPSAiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J21heC13aWR0aDoxNTBweDsnPlRoaXMg
aXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBj
b250YWluZXIuPC9wPjxwPlRoaXMgaXMgYW5vdGhlciBsaW5lIHdyYXBwZWQ8YnI+YmVjYXVzZSBv
ZiBvbmUgZm9yY2VkPGJyPmxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS48L2JvZHk+PC9odG1sPiI7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMgPSAiPGh0
bWw+PGJvZHk+VGhpcyBpcyBvbmUgbGluZSBjb250YWluaW5nIHR3byA8aW1nPiBlbWJlZGRlZCBv
YmplY3RzIDxpbWc+IGluIHRoZSBtaWRkbGUuPC9ib2R5PjwvaHRtbD4iOwotCiBzdGF0aWMgY29u
c3QgY2hhciogY29tYm9Cb3hTZWxlY3RvciA9ICI8aHRtbD48Ym9keT48c2VsZWN0PjxvcHRpb24g
c2VsZWN0ZWQgdmFsdWU9J2Zvbyc+Zm9vPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nYmFyJz5iYXI8
L29wdGlvbj48L3NlbGVjdD48L2JvZHk+PC9odG1sPiI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBl
bWJlZGRlZE9iamVjdHMgPSAiPGh0bWw+PGJvZHk+PHA+Q2hvb3NlOiA8aW5wdXQgdmFsdWU9J2Zv
bycgdHlwZT0nY2hlY2tib3gnLz5mb28gPGlucHV0IHZhbHVlPSdiYXInIHR5cGU9J2NoZWNrYm94
Jy8+YmFyIChwaWNrIG9uZSk8L3A+PHA+Q2hvb3NlOiA8c2VsZWN0IG5hbWU9J2Zvbyc+PG9wdGlv
bj5iYXI8L29wdGlvbj48b3B0aW9uPmJhejwvb3B0aW9uPjwvc2VsZWN0PiAocGljayBvbmUpPC9w
PjxwPjxpbnB1dCBuYW1lPSdmb29iYXJidXR0b24nIHZhbHVlPSdmb29iYXInIHR5cGU9J2J1dHRv
bicvPjwvcD48L2JvZHk+PC9odG1sPiI7CkBAIC02MTQsNTE3ICs2MDAsNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEF0a1RleHQqIHRleHRPYmplY3QsIEF0a0dldFRleHRGdW5j
dGlvbiBmbiwgQXRrVAogICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCBlbmRPZmZz
ZXRSZXN1bHQpOwogICAgIGdfZnJlZSh0ZXh0KTsKIH0KLQotc3RhdGljIHZvaWQgcnVuR2V0VGV4
dFRlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCi17Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0
X2dldF90ZXh0KHRleHRPYmplY3QsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwg
PT0sICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhp
cyB0aGUgdGhpcmQuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQVRLX1RFWFRfQk9V
TkRBUllfQ0hBUiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgIlQiLCAwLCAxKTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
dGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9DSEFSLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgImgiLCAxLCAyKTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3Jl
X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IDAsICIiLCAwLCAwKTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDEsICJUIiwgMCwgMSk7Ci0KLSAgICAvKiBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RB
UlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyAiLCAwLCA1KTsKLQotICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0
LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAg
NCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFS
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAg
ICAgNTgsICJ0aGlyZC4iLCA1OCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dP
UkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA2NCwgInRoaXJkLiIsIDU4LCA2NCk7
Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0
X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAwLCAiIiwgMCwgMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1LCAiVGhpcyAiLCAwLCA1
KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3Rl
eHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDcsICJUaGlzICIsIDAsIDUpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNjQsICJ0aGUg
IiwgNTQsIDU4KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAot
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgImlzICIsIDUsIDgpOwotCi0gICAgdGVzdEdldFRl
eHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAi
aXMgIiwgNSwgOCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIDMsICJpcyAiLCA1LCA4KTsKLQotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNjQs
ICIiLCA2NCwgNjQpOwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQgKi8KLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAwLCAiVGhpcyIsIDAsIDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5E
LAotICAgICAgICAgICAgICAgICAgICAgICAgNCwgIiBpcyIsIDQsIDcpOwotCi0gICAgdGVzdEdl
dFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNSwgIiBp
cyIsIDQsIDcpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAg
ICAgICAgICAgICAgICAgICAgOSwgIiB0ZXN0IiwgOSwgMTQpOwotCi0gICAgdGVzdEdldFRleHRG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNTgsICIgdGhpcmQi
LCA1NywgNjMpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAg
ICAgICAgICAgICAgICAgICAgNjQsICIuIiwgNjMsIDY0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVu
Y3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIiwgMCwg
MCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90
ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAg
ICAgICAgICAgICAgICAgNSwgIlRoaXMiLCAwLCA0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAiVGhpcyIsIDAs
IDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDcsICIgaXMiLCA0LCA3KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA2NCwgIiB0aGlyZCIs
IDU3LCA2Myk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAwLCAiIGlzIiwgNCwgNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1LCAiIGEiLCA3
LCA5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDQsICIgYSIsIDcsIDkpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlv
bih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNjQsICIiLCA2NCwgNjQp
OwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQgKi8KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAwLCAiVGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiVGhpcyBp
cyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVj
dCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5U
RU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIHRoZSBzZWNv
bmQgc2VudGVuY2UuICIsIDE2LCA0NSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
U0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIlRoaXMgaXMgdGhl
IHNlY29uZCBzZW50ZW5jZS4gIiwgMTYsIDQ1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
dGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMg
aXMgYSB0ZXN0LiAiLCAwLCAxNik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmpl
Y3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NF
TlRFTkNFX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNDQsICJUaGlzIGlzIGEgdGVz
dC4gIiwgMCwgMTYpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtf
dGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9T
VEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIiwgMCwgMCk7Ci0KLSAgICAvKiBB
VEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgaXMgYSB0
ZXN0LiIsIDAsIDE1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNywgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9F
TkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50
ZW5jZS4iLCAxNSwgNDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBh
dGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNF
X0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIEFuZCB0aGlzIHRoZSB0aGlyZC4i
LCA0NCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMgaXMgYSB0ZXN0LiIsIDAsIDE1KTsK
LQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRf
YmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAg
ICAgICAgICAgICAgICAgMTUsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7Ci0KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDE0LCAiIiwgMCwgMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRF
TkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCAiIFRoaXMgaXMgdGhlIHNlY29u
ZCBzZW50ZW5jZS4iLCAxNSwgNDQpOwotCi0gICAgLyogSXQncyB0cmlja3kgdG8gdGVzdCB0aGVz
ZSBwcm9wZXJseSByaWdodCBub3csIHNpbmNlIG91ciBhMTF5Ci0gICAgICAgaW1wbGVtZW50YXRp
b24gc3BsaXRzIGRpZmZlcmVudCBsaW5lcyBpbiBkaWZmZXJlbnQgYTExeSBpdGVtcy4gKi8KLSAg
ICAvKiBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBh
IHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIs
IDAsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5EICovCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwg
IlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRo
ZSB0aGlyZC4iLCAwLCA2NCk7Ci0KLSAgICAvKiBGb3Igb2JqZWN0cyBpbXBsZW1lbnRpbmcgQXRr
RWRpdGFibGVUZXh0LCB0cnkgdG8gY2hhbmdlIHRoZQotICAgICAgIGV4cG9zZWQgdGV4dCBhbmQg
cmV0cmlldmUgaXQgYWdhaW4gYXMgYSBmdWxsIGxpbmUuCi0gICAgICAgKHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI4MzApICovCi0gICAgaWYgKEFUS19JU19F
RElUQUJMRV9URVhUKHRleHRPYmplY3QpKSB7Ci0gICAgICAgIGF0a19lZGl0YWJsZV90ZXh0X3Nl
dF90ZXh0X2NvbnRlbnRzKEFUS19FRElUQUJMRV9URVhUKHRleHRPYmplY3QpLCAiZm9vIGJhciBi
YXoiKTsKLSAgICAgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsICJmb28g
YmFyIGJheiIsIDAsIDExKTsKLSAgICAgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5E
LCAwLCAiZm9vIGJhciBiYXoiLCAwLCAxMSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3Rf
cmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAw
LCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdl
YlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdl
YlZpZXcsIGNvbnRlbnRzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRr
VGV4dCBvYmplY3QuICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0
KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7
Ci0KLSAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fz
c2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4
dE9iamVjdCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihvYmplY3QpOwotICAgIGdfb2JqZWN0X3Vu
cmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zm
c2V0TmV3bGluZXMoKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJW
aWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07
Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxv
Y2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVu
dHNXaXRoTmV3bGluZXMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtU
ZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qo
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBvYmplY3QgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsK
LQotICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChvYmplY3QpOwotICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQotICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0
T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZz
ZXRUZXh0YXJlYSgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZp
ZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsK
LSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9j
YXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50
c0luVGV4dGFyZWEsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0
IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2Vi
Vmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KGNo
aWxkKTsKLSAgICBBdGtPYmplY3QqIGdyYW5kY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKGNoaWxkLCAwKTsKLSAgICBnX2Fzc2VydChncmFuZGNoaWxkKTsKLQotICAgIEF0
a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChncmFuZGNoaWxkKTsKLSAgICBnX2Fzc2VydChB
VEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4dE9iamVj
dCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYoZ3Jh
bmRjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQoKQotewotICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsK
LSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9j
YXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRl
KEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRJbnB1dCwgMCwgMCwgMCk7Ci0KLSAg
ICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCog
b2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3Qp
OwotICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRj
aGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdf
YXNzZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhU
KGdyYW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQot
ICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGNo
aWxkKTsKLSAgICBnX29iamVjdF91bnJlZihncmFuZGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJl
Zih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNl
dFdpdGhQcmVmb3JtYXR0ZWRUZXh0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVm
X3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4
MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZp
ZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZp
ZXcsIGNvbnRlbnRzV2l0aFByZWZvcm1hdHRlZFRleHQsIDAsIDAsIDApOwotCi0gICAgQXRrT2Jq
ZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9i
amVjdCk7Ci0KLSAgICBBdGtPYmplY3QqIHByZWZvcm1hdHRlZFRleHQgPSBhdGtfb2JqZWN0X3Jl
Zl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX09CSkVD
VChwcmVmb3JtYXR0ZWRUZXh0KSk7Ci0gICAgZ19hc3NlcnQoYXRrX29iamVjdF9nZXRfcm9sZShw
cmVmb3JtYXR0ZWRUZXh0KSA9PSBBVEtfUk9MRV9QQU5FTCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQocHJlZm9ybWF0dGVkVGV4dCkpOwotICAgIGNoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRf
dGV4dChBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0LCA9PSwgIlx0XG5cdGZpcnN0IGxpbmVcblx0c2Vjb25kIGxpbmVcblx0XG4iKTsK
LSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBUcnkgcmV0cmlldmluZyBhbGwgdGhlIGxpbmVz
IGluZGljYXRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBvZmZzZXRzIGF0IHRoZSBiZWdpbm5pbmcg
b2YgZWFjaCBvZiB0aGVtLiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQocHJl
Zm9ybWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMCwgIlx0XG4iLCAwLCAyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0
aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQpLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDIsICJcdGZpcnN0IGxpbmVcbiIsIDIs
IDE0KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQp
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RB
UlQsIDE0LCAiXHRzZWNvbmQgbGluZVxuIiwgMTQsIDI3KTsKLQotICAgIGdfb2JqZWN0X3VucmVm
KHByZWZvcm1hdHRlZFRleHQpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1z
dGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFNwZWNpYWxDaGFyYWN0
ZXJzKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdl
YmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aFNw
ZWNpYWxDaGFycywgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQg
b2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwYXJhZ3JhcGgg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3Nl
cnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogZXhwZWN0ZWRUZXh0ID0g
Z19zdHJkdXAoIlwzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggXDM0Mlwy
MDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0MFwzMDJc
MjczIik7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHBhcmFn
cmFwaCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sIGV4cGVjdGVkVGV4
dCk7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0
ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCBkb2VzIG5vdCBjcmFzaCBiZWNhdXNlIG9mIG5vdAotICAgICAg
IHByb3Blcmx5IGhhbmRsaW5nIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBVVEYtOCBzdHJpbmcuICov
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChwYXJhZ3JhcGgpLCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsIGV4cGVj
dGVkVGV4dCwgMCwgNTcpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQocGFyYWdy
YXBoKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCwgMCwgZXhwZWN0ZWRUZXh0LCAwLCA1Nyk7Ci0gICAgZ19mcmVlKGV4cGVjdGVkVGV4dCk7
Ci0KLSAgICBBdGtPYmplY3QqIGxpc3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMSk7Ci0gICAgZ19hc3NlcnQoQVRLX09CSkVDVChsaXN0KSk7Ci0KLSAgICBBdGtU
ZXh0KiBsaXN0SXRlbSA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQo
bGlzdCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGxpc3RJdGVtKSk7Ci0KLSAgICB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobGlzdEl0ZW0pLCAwLCAtMSk7Ci0gICAg
Z19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiXDM0MlwyMDBcMjQyIExpc3QgaXRlbSB3aXRoIHNv
bWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuIik7Ci0gICAgZ19mcmVl
KHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0ZXh0IHdpdGggQVRLX1RF
WFRfQk9VTkRBUllfTElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCBmb3IgbGluZSBpdGVtcyB3aXRoIGJ1bGxldHMKLSAgICAgICAoc3BlY2lhbCBjaGFyYWN0
ZXIpIGFuZCB3cmFwcGVkIHRleHQgYWx3YXlzIHJldHVybiB0aGUgcmlnaHQKLSAgICAgICBwaWVj
ZSBvZiB0ZXh0IGZvciBlYWNoIGxpbmUuICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtf
VEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gIiwgMCwgMTIpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDEzLCAid2l0aCBz
b21lICIsIDEyLCAyMik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRl
bSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9F
TkQsIDAsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtIiwgMCwgMTEpOwotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAxMiwgIiB3aXRoIHNvbWUiLCAxMSwgMjEpOwot
Ci0gICAgZ19vYmplY3RfdW5yZWYobGlzdEl0ZW0pOwotCi0gICAgbGlzdEl0ZW0gPSBBVEtfVEVY
VChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGxpc3QsIDEpKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBwbGFjaW5nIHRo
ZSBzYW1lIHRleHQgaW4gYSBwYXJhZ3JhcGggZG9lc24ndCBicmVhayB0aGluZ3MuICovCi0gICAg
dGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBz
b21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJl
ZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQs
IDMsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtICIsIDAsIDEyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKEFUS19URVhUKGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAwLCAiXDM0MlwyMDBc
MjQyIExpc3QgaXRlbSIsIDAsIDExKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhU
KGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9MSU5FX0VORCwgMTIsICIgd2l0aCBzb21lIiwgMTEsIDIxKTsKLQotICAgIGdfb2JqZWN0X3Vu
cmVmKGxpc3QpOwotICAgIGdfb2JqZWN0X3VucmVmKGxpc3RJdGVtKTsKLSAgICBnX29iamVjdF91
bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcygpCi17
Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2Vi
X3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0Fs
bG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0
X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhXcmFwcGVkTGlu
ZXMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4g
Ki8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0g
ICAgZ19hc3NlcnQob2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0
aGUgdGV4dCB3cmFwcGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBh
cmFncmFwaDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVj
dCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKLQotICAgIGdj
aGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMSwgMCwgLTEpOwotICAgIGdf
YXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNl
IG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuIik7Ci0gICAgZ19mcmVlKHRl
eHQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgImUiLCAxNSwg
MTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3Rl
eHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgIiAiLCAxNiwgMTcpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0
ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgInciLCAxNywgMTgpOwotCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZv
cmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAxNiwgIm9uZSAiLCA4LCAx
Mik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDE2LCAibGluZSAiLCAx
MiwgMTcpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAxNiwgIndy
YXBwZWQgIiwgMTcsIDI1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwg
YXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9F
TkQsIDE2LCAiIGxpbmUiLCAxMSwgMTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JE
X0VORCwgMTYsICIgd3JhcHBlZCIsIDE2LCAyNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihw
YXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1dPUkRfRU5ELCAxNiwgIiBiZWNhdXNlIiwgMjQsIDMyKTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMTcsICJUaGlzIGlzIG9uZSBsaW5lICIsIDAsIDE3
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMTcsICJ3cmFwcGVkIGJl
Y2F1c2UgIiwgMTcsIDMzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0
a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFS
VCwgMTcsICJvZiB0aGUgbWF4aW11bSAiLCAzMywgNDgpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCwgMTcsICJUaGlzIGlzIG9uZSBsaW5lIiwgMCwgMTYpOwotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMTcsICIgd3JhcHBlZCBiZWNhdXNlIiwg
MTYsIDMyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dl
dF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDE3LCAiIG9m
IHRoZSBtYXhpbXVtIiwgMzIsIDQ3KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaDEp
OwotCi0gICAgLyogQ2hlY2sgdGhlIHBhcmFncmFwaCB3aXRoIHRoZSB0ZXh0IHdyYXBwZWQgYmVj
YXVzZSBvZiA8YnI+IGVsZW1lbnRzLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaDIgPSBBVEtf
VEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSkpOwotICAgIGdf
YXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDIpKTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9n
ZXRfdGV4dChwYXJhZ3JhcGgyLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09
LCAiVGhpcyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZFxuYmVjYXVzZSBvZiBvbmUgZm9yY2VkXG5s
aW5lIGJyZWFrIGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAyOCwgImQiLCAyNywgMjgpOwotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9DSEFSLCAyOCwgIlxuIiwgMjgsIDI5KTsKLSAgICB0ZXN0R2V0VGV4
dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfQ0hBUiwgMjgsICJiIiwgMjksIDMwKTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMjgsICJsaW5lICIsIDE2LCAyMSk7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDI4LCAid3JhcHBlZFxuIiwgMjEsIDI5KTsK
LSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2Fm
dGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMjgsICJiZWNhdXNlICIs
IDI5LCAzNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAyOCwg
IiB3cmFwcGVkIiwgMjAsIDI4KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIs
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQs
IDI4LCAiXG5iZWNhdXNlIiwgMjgsIDM2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFn
cmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
V09SRF9FTkQsIDI4LCAiIG9mIiwgMzYsIDM5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMzAsICJUaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkXG4iLCAw
LCAyOSk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDMwLCAiYmVjYXVz
ZSBvZiBvbmUgZm9yY2VkXG4iLCAyOSwgNTEpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9MSU5FX1NUQVJULCAzMCwgImxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iLCA1MSwgNzYpOwot
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9i
ZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMzAsICJUaGlzIGlzIGFu
b3RoZXIgbGluZSB3cmFwcGVkIiwgMCwgMjgpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9M
SU5FX0VORCwgMzAsICJcbmJlY2F1c2Ugb2Ygb25lIGZvcmNlZCIsIDI4LCA1MCk7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAzMCwgIlxubGluZSBicmVhayBpbiB0aGUg
bWlkZGxlLiIsIDUwLCA3Nik7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgyKTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cygpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwot
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Nh
dGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUo
R1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMsIDAsIDAsIDAp
OwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtP
YmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQo
b2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4dCB3cmFw
cGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaCA9IEFU
S19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKSk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogdGV4dCA9IGF0
a190ZXh0X2dldF90ZXh0KHBhcmFncmFwaCwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0
ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gXDM1N1wyNzdcMjc0IGVt
YmVkZGVkIG9iamVjdHMgXDM1N1wyNzdcMjc0IGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVl
KHRleHQpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBmaXJzdCBlbWJlZGRlZCBv
YmplY3QgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0
X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAzMiwgIlwzNTdcMjc3XDI3
NCIsIDMyLCAzMyk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0
X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMzIsICJ0
d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJh
Z3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09S
RF9FTkQsIDMyLCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAgICAvKiBD
aGVjayByaWdodCBhZnRlciB0aGUgZmlyc3QgZW1iZWRkZWQgb2JqZWN0IChhbmQgYmVmb3JlIHRo
ZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIs
IDMzLCAiICIsIDMzLCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0
a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwg
MzMsICJ0d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlv
bihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfV09SRF9FTkQsIDMzLCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAg
ICAvKiBDaGVjayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhl
IHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwg
MzQsICJlIiwgMzQsIDM1KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAz
NCwgImVtYmVkZGVkICIsIDM0LCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9F
TkQsIDM0LCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAgICAvKiBDaGVj
ayBhdCB0aGUgZW5kIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3byBlbWJlZGRlZCBv
YmplY3RzICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNDIsICIgIiwgNDIsIDQz
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA0MiwgImVtYmVkZGVkICIs
IDM0LCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDQyLCAiIG9iamVj
dHMiLCA0MiwgNTApOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBzZWNvbmQgZW1i
ZWRkZWQgb2JqZWN0ICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190
ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTEsICJcMzU3
XDI3N1wyNzQiLCA1MSwgNTIpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQs
IDUxLCAib2JqZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMsIDUzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX0VORCwgNTEsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAg
IC8qIENoZWNrIHJpZ2h0IGFmdGVyIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2JqZWN0IChhbmQgYmVm
b3JlIHRoZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X0NIQVIsIDUyLCAiICIsIDUyLCA1Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9T
VEFSVCwgNTIsICJvYmplY3RzIFwzNTdcMjc3XDI3NCAiLCA0MywgNTMpOwotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX1dPUkRfRU5ELCA1MiwgIiBcMzU3XDI3N1wyNzQgaW4iLCA1MCwgNTUpOwot
Ci0gICAgLyogQ2hlY2sgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3Qgd29yZCBhZnRlciB0
aGUgdHdvIGVtYmVkZGVkIG9iamVjdHMgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFS
LCA1MywgImkiLCA1MywgNTQpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQs
IDUzLCAiaW4gIiwgNTMsIDU2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwg
YXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwg
NTMsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBl
bmQgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTUsICIgIiwgNTUsIDU2KTsKLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA1NSwgImluICIsIDUzLCA1Nik7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDU1LCAiIHRoZSIsIDU1LCA1OSk7Ci0KLSAgICBn
X29iamVjdF91bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwot
fQotCiAjZWxzZSAvLyAhQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTAsIDApCiAKIHR5cGVkZWYgZ2No
YXIqICgqQXRrR2V0U3RyaW5nRnVuY3Rpb24pIChBdGtUZXh0KiwgZ2ludCwgQXRrVGV4dEdyYW51
bGFyaXR5LCBnaW50KiwgZ2ludCopOwpAQCAtMTE0MCwzMzkgKzYxNSw2IEBAIHN0YXRpYyB2b2lk
IHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBdGtUZXh0KiB0ZXh0T2JqZWN0LCBBdGtHZXRTdHJpbmdG
dW5jdGlvbiBmbiwKICAgICBnX2ZyZWUodGV4dCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkdldFN0
cmluZ1Rlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCi17Ci0gICAgY2hhciogdGV4dCA9IGF0a190
ZXh0X2dldF90ZXh0KHRleHRPYmplY3QsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4
dCwgPT0sICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQg
dGhpcyB0aGUgdGhpcmQuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQVRLX1RFWFRf
R1JBTlVMQVJJVFlfQ0hBUiAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hB
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUIiwgMCwgMSk7Ci0KLSAgICAvKiBBVEtf
VEVYVF9HUkFOVUxBUklUWV9XT1JEICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9XT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAg
ICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICA0LCAiVGhpcyAiLCAwLCA1KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJ
VFlfV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsK
LQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDU4LCAidGhpcmQuIiwgNTgsIDY0KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRf
R1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDY0LCAidGhpcmQuIiwg
NTgsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZX1NFTlRFTkNFICovCi0gICAg
dGVzdEdldFN0cmluZ0Z1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4gIiwgMCwgMTYpOwotCi0gICAgdGVzdEdldFN0cmlu
Z0Z1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtf
VEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAi
VGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0xJTkUgKi8KLSAgICAvKiBJdCdzIHRyaWNreSB0byB0ZXN0IHRoZXNlIHByb3Blcmx5IHJpZ2h0
IG5vdywgc2luY2Ugb3VyIGExMXkKLSAgICAgICBpbXBsZW1lbnRhdGlvbiBzcGxpdHMgZGlmZmVy
ZW50IGxpbmVzIGluIGRpZmZlcmVudCBhMTF5IGl0ZW1zLiAqLwotICAgIHRlc3RHZXRTdHJpbmdG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RF
WFRfR1JBTlVMQVJJVFlfTElORSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlz
IGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQu
IiwgMCwgNjQpOwotCi0gICAgLyogRm9yIG9iamVjdHMgaW1wbGVtZW50aW5nIEF0a0VkaXRhYmxl
VGV4dCwgdHJ5IHRvIGNoYW5nZSB0aGUKLSAgICAgICBleHBvc2VkIHRleHQgYW5kIHJldHJpZXZl
IGl0IGFnYWluIGFzIGEgZnVsbCBsaW5lLgotICAgICAgIChzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODMwKSAqLwotICAgIGlmIChBVEtfSVNfRURJVEFCTEVf
VEVYVCh0ZXh0T2JqZWN0KSkgewotICAgICAgICBhdGtfZWRpdGFibGVfdGV4dF9zZXRfdGV4dF9j
b250ZW50cyhBVEtfRURJVEFCTEVfVEVYVCh0ZXh0T2JqZWN0KSwgImZvbyBiYXIgYmF6Iik7Ci0g
ICAgICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMCwgImZvbyBiYXIgYmF6
IiwgMCwgMTEpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmlu
Z0F0T2Zmc2V0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9Owot
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRz
LCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICov
Ci0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAg
IGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtUZXh0
KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVY
VCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldE5ld2xpbmVz
KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAg
R3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193
aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aE5ld2xp
bmVzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3Qu
ICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwot
ICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtU
ZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNf
VEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsK
LQotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmll
dyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFRleHRh
cmVhKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdl
YmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzSW5UZXh0
YXJlYSwgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0
LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsK
LSAgICBnX2Fzc2VydChvYmplY3QpOwotICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwot
ICAgIEF0a09iamVjdCogZ3JhbmRjaGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hp
bGQoY2hpbGQsIDApOwotICAgIGdfYXNzZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCog
dGV4dE9iamVjdCA9IEFUS19URVhUKGdyYW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKHRleHRPYmplY3QpKTsKLQotICAgIHJ1bkdldFN0cmluZ1Rlc3RzKHRleHRPYmplY3QpOwot
Ci0gICAgZ19vYmplY3RfdW5yZWYoY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hp
bGQpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRUZXh0SW5wdXQoKQotewotICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAg
ICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRp
b24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdU
S19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRJbnB1dCwgMCwgMCwgMCk7Ci0KLSAgICAv
KiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2Jq
ZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwot
ICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9i
amVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRjaGls
ZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdfYXNz
ZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhUKGdy
YW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQotICAg
IHJ1bkdldFN0cmluZ1Rlc3RzKHRleHRPYmplY3QpOwotCi0gICAgZ19vYmplY3RfdW5yZWYoY2hp
bGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVm
KHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZz
ZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwg
ODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJW
aWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJW
aWV3LCBjb250ZW50c1dpdGhQcmVmb3JtYXR0ZWRUZXh0LCAwLCAwLCAwKTsKLQotICAgIEF0a09i
amVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChv
YmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwcmVmb3JtYXR0ZWRUZXh0ID0gYXRrX29iamVjdF9y
ZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KEFUS19JU19PQkpF
Q1QocHJlZm9ybWF0dGVkVGV4dCkpOwotICAgIGdfYXNzZXJ0KGF0a19vYmplY3RfZ2V0X3JvbGUo
cHJlZm9ybWF0dGVkVGV4dCkgPT0gQVRLX1JPTEVfUEFORUwpOwotICAgIGdfYXNzZXJ0KEFUS19J
U19URVhUKHByZWZvcm1hdHRlZFRleHQpKTsKLSAgICBjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0
X3RleHQoQVRLX1RFWFQocHJlZm9ybWF0dGVkVGV4dCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIodGV4dCwgPT0sICJcdFxuXHRmaXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuIik7
Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogVHJ5IHJldHJpZXZpbmcgYWxsIHRoZSBsaW5l
cyBpbmRpY2F0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgb2Zmc2V0cyBhdCB0aGUgYmVnaW5uaW5n
IG9mIGVhY2ggb2YgdGhlbS4gKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQo
cHJlZm9ybWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9HUkFOVUxBUklUWV9MSU5FLCAwLCAiXHRcbiIsIDAsIDIpOwotICAgIHRlc3RHZXRTdHJpbmdG
dW5jdGlvbihBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJTkUsIDIsICJcdGZpcnN0IGxpbmVcbiIs
IDIsIDE0KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQocHJlZm9ybWF0dGVk
VGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9MSU5FLCAxNCwgIlx0c2Vjb25kIGxpbmVcbiIsIDE0LCAyNyk7Ci0KLSAgICBnX29iamVjdF91
bnJlZihwcmVmb3JtYXR0ZWRUZXh0KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0K
LQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFNwZWNpYWxD
aGFyYWN0ZXJzKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9Owot
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRz
V2l0aFNwZWNpYWxDaGFycywgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0
a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVj
dCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwYXJh
Z3JhcGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogZXhwZWN0ZWRU
ZXh0ID0gZ19zdHJkdXAoIlwzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGgg
XDM0MlwyMDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0
MFwzMDJcMjczIik7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhU
KHBhcmFncmFwaCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sIGV4cGVj
dGVkVGV4dCk7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5n
IHRoZSB0ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCBkb2VzIG5vdCBjcmFz
aAotICAgICAgIGJlY2F1c2Ugb2Ygbm90IHByb3Blcmx5IGhhbmRsaW5nIGNoYXJhY3RlcnMgaW5z
aWRlIHRoZSBVVEYtOCBzdHJpbmcuICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19U
RVhUKHBhcmFncmFwaCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9H
UkFOVUxBUklUWV9MSU5FLCAwLCBleHBlY3RlZFRleHQsIDAsIDU3KTsKLSAgICBnX2ZyZWUoZXhw
ZWN0ZWRUZXh0KTsKLQotICAgIEF0a09iamVjdCogbGlzdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vz
c2libGVfY2hpbGQob2JqZWN0LCAxKTsKLSAgICBnX2Fzc2VydChBVEtfT0JKRUNUKGxpc3QpKTsK
LQotICAgIEF0a1RleHQqIGxpc3RJdGVtID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChsaXN0LCAwKSk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobGlzdEl0ZW0p
KTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChsaXN0SXRlbSksIDAs
IC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJcMzQyXDIwMFwyNDIgTGlzdCBp
dGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4iKTsK
LSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBDaGVjayB0aGF0IGdldHRpbmcgdGhlIHRleHQg
d2l0aCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUCi0gICAgICAgYW5kIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfRU5EIGZvciBsaW5lIGl0ZW1zIHdpdGggYnVsbGV0cwotICAgICAgIChzcGVj
aWFsIGNoYXJhY3RlcikgYW5kIHdyYXBwZWQgdGV4dCBhbHdheXMgcmV0dXJuIHRoZSByaWdodAot
ICAgICAgIHBpZWNlIG9mIHRleHQgZm9yIGVhY2ggbGluZS4gKi8KLSAgICB0ZXN0R2V0U3RyaW5n
RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNl
dCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0g
IiwgMCwgMTIpOwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSks
IGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5F
LCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwotCi0gICAgZ19vYmplY3RfdW5yZWYobGlzdEl0
ZW0pOwotCi0gICAgbGlzdEl0ZW0gPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxl
X2NoaWxkKGxpc3QsIDEpKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwot
Ci0gICAgLyogQ2hlY2sgdGhhdCBwbGFjaW5nIHRoZSBzYW1lIHRleHQgaW4gYSBwYXJhZ3JhcGgg
ZG9lc24ndCBicmVhayB0aGluZ3MuICovCi0gICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFU
S19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwg
IlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3Mg
ZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRTdHJp
bmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAzLCAiXDM0MlwyMDBcMjQyIExpc3QgaXRl
bSAiLCAwLCAxMik7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19URVhUKGxpc3RJdGVt
KSwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJ
TkUsIDEzLCAid2l0aCBzb21lICIsIDEyLCAyMik7Ci0KLSAgICBnX29iamVjdF91bnJlZihsaXN0
KTsKLSAgICBnX29iamVjdF91bnJlZihsaXN0SXRlbSk7Ci0gICAgZ19vYmplY3RfdW5yZWYocGFy
YWdyYXBoKTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQg
dGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcygpCi17Ci0gICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdf
bmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRp
b24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVf
YWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhXcmFwcGVkTGluZXMsIDAs
IDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAg
ICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19h
c3NlcnQob2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4
dCB3cmFwcGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFw
aDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkp
OwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKLQotICAgIGdjaGFyKiB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRo
ZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuIik7Ci0gICAgZ19mcmVlKHRleHQpOwot
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF9zdHJp
bmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAxNiwgIiAiLCAxNiwgMTcp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgMTYsICJsaW5lICIsIDEy
LCAxNyk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dl
dF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAxNywgIndyYXBw
ZWQgYmVjYXVzZSAiLCAxNywgMzMpOwotCi0gICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoMSk7
Ci0KLSAgICAvKiBDaGVjayB0aGUgcGFyYWdyYXBoIHdpdGggdGhlIHRleHQgd3JhcHBlZCBiZWNh
dXNlIG9mIDxicj4gZWxlbWVudHMuICovCi0gICAgQXRrVGV4dCogcGFyYWdyYXBoMiA9IEFUS19U
RVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAxKSk7Ci0gICAgZ19h
c3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoMikpOwotCi0gICAgdGV4dCA9IGF0a190ZXh0X2dl
dF90ZXh0KHBhcmFncmFwaDIsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0s
ICJUaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkXG5iZWNhdXNlIG9mIG9uZSBmb3JjZWRcbmxp
bmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iKTsKLSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICB0ZXN0
R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZz
ZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDI4LCAiXG4iLCAyOCwgMjkpOwotICAgIHRl
c3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29m
ZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgMjgsICJ3cmFwcGVkXG4iLCAyMSwgMjkp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMzAsICJiZWNhdXNlIG9m
IG9uZSBmb3JjZWRcbiIsIDI5LCA1MSk7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgy
KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKCkKLXsKLSAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlv
biBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9h
bGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aEVtYmVkZGVkT2JqZWN0cywg
MCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwot
ICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBn
X2Fzc2VydChvYmplY3QpOwotCi0gICAgLyogQ2hlY2sgdGhlIHBhcmFncmFwaCB3aXRoIHRoZSB0
ZXh0IHdyYXBwZWQgYmVjYXVzZSBvZiBtYXgtd2lkdGguICovCi0gICAgQXRrVGV4dCogcGFyYWdy
YXBoID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDAp
KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgpKTsKLQotICAgIGdjaGFyKiB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRf
Y21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBvbmUgbGluZSBjb250YWluaW5nIHR3byBcMzU3XDI3
N1wyNzQgZW1iZWRkZWQgb2JqZWN0cyBcMzU3XDI3N1wyNzQgaW4gdGhlIG1pZGRsZS4iKTsKLSAg
ICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBDaGVjayByaWdodCBiZWZvcmUgdGhlIGZpcnN0IGVt
YmVkZGVkIG9iamVjdCAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0
a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAz
MiwgIlwzNTdcMjc3XDI3NCIsIDMyLCAzMyk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBh
cmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFS
SVRZX1dPUkQsIDMyLCAidHdvIFwzNTdcMjc3XDI3NCAiLCAyOCwgMzQpOwotCi0gICAgLyogQ2hl
Y2sgcmlnaHQgYWZ0ZXIgdGhlIGZpcnN0IGVtYmVkZGVkIG9iamVjdCAoYW5kIGJlZm9yZSB0aGUg
Zmlyc3Qgd29yZCBhZnRlciBpdCkgKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlf
Q0hBUiwgMzMsICIgIiwgMzMsIDM0KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlf
V09SRCwgMzMsICJ0d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0KLSAgICAvKiBDaGVjayBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3byBlbWJlZGRl
ZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDM0LCAi
ZSIsIDM0LCAzNSk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDM0LCAi
ZW1iZWRkZWQgIiwgMzQsIDQzKTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIGZp
cnN0IHdvcmQgYmV0d2VlbiB0aGUgdHdvIGVtYmVkZGVkIG9iamVjdHMgKi8KLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwg
QVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hBUiwgNDIsICIgIiwgNDIsIDQzKTsKLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwg
QVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgNDIsICJlbWJlZGRlZCAiLCAzNCwgNDMpOwotCi0g
ICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2JqZWN0ICovCi0g
ICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUxLCAiXDM1N1wyNzdcMjc0Iiwg
NTEsIDUyKTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9n
ZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgNTEsICJvYmpl
Y3RzIFwzNTdcMjc3XDI3NCAiLCA0MywgNTMpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYWZ0ZXIg
dGhlIHNlY29uZCBlbWJlZGRlZCBvYmplY3QgKGFuZCBiZWZvcmUgdGhlIGZpcnN0IHdvcmQgYWZ0
ZXIgaXQpICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUyLCAiICIs
IDUyLCA1Myk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUyLCAib2Jq
ZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMsIDUzKTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3RzICov
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUzLCAiaSIsIDUzLCA1NCk7
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUzLCAiaW4gIiwgNTMsIDU2
KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhl
IHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0NIQVIsIDU1LCAiICIsIDU1LCA1Nik7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X1dPUkQsIDU1LCAiaW4gIiwgNTMsIDU2KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFw
aCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19CiAjZW5kaWYgLy8gIUFUS19DSEVD
S19WRVJTSU9OKDIsIDEwLCAwKQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dElu
UGFyYWdyYXBoQW5kQm9keVNpbXBsZSgpCkBAIC0yNTk2LDI1ICsxNzM4LDYgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsv
Y29tYm9Cb3giLCB0ZXN0V2Via2l0QXRrQ29tYm9Cb3gpOwogICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdC9hdGsvZG9jdW1lbnRMb2FkaW5nRXZlbnRzIiwgdGVzdFdlYmtpdEF0a0RvY3VtZW50
TG9hZGluZ0V2ZW50cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9lbWJlZGRl
ZE9iamVjdHMiLCB0ZXN0V2Via2l0QXRrRW1iZWRkZWRPYmplY3RzKTsKLSNpZiAhQVRLX0NIRUNL
X1ZFUlNJT04oMiwgMTAsIDApCi0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRU
ZXh0QXRPZmZzZXQiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRBdE9mZnNldE5ld2xpbmVzIiwgdGVzdFdlYmtp
dEF0a0dldFRleHRBdE9mZnNldE5ld2xpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQvYXRrL2dldFRleHRBdE9mZnNldFRleHRhcmVhIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9m
ZnNldFRleHRhcmVhKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRB
dE9mZnNldFRleHRJbnB1dCIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQp
OwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0V2l0aFBy
ZWZvcm1hdHRlZFRleHQiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFByZWZvcm1h
dHRlZFRleHQpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zm
c2V0V2l0aFNwZWNpYWxDaGFyYWN0ZXJzIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFdp
dGhTcGVjaWFsQ2hhcmFjdGVycyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9n
ZXRUZXh0QXRPZmZzZXRXaXRoV3JhcHBlZExpbmVzIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9m
ZnNldFdpdGhXcmFwcGVkTGluZXMpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsv
Z2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cyIsIHRlc3RXZWJraXRBdGtHZXRUZXh0
QXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKTsKLSNlbHNlCi0gICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldCIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdB
dE9mZnNldCk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9m
ZnNldE5ld2xpbmVzIiwgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0TmV3bGluZXMpOwot
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0U3RyaW5nQXRPZmZzZXRUZXh0YXJl
YSIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFRleHRhcmVhKTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0VGV4dElucHV0IiwgdGVzdFdl
YmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0VGV4dElucHV0KTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0V2l0aFByZWZvcm1hdHRlZFRleHQiLCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCk7Ci0gICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hh
cmFjdGVycyIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hhcmFj
dGVycyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNl
dFdpdGhXcmFwcGVkTGluZXMiLCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoV3Jh
cHBlZExpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFN0cmluZ0F0
T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cyIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNl
dFdpdGhFbWJlZGRlZE9iamVjdHMpOwotI2VuZGlmCiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Vi
a2l0L2F0ay9nZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlIiwgdGVzdFdlYmtpdEF0a0dl
dFRleHRJblBhcmFncmFwaEFuZEJvZHlTaW1wbGUpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdC9hdGsvZ2V0VGV4dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlIiwgdGVzdFdlYmtpdEF0
a0dldFRleHRJblBhcmFncmFwaEFuZEJvZHlNb2RlcmF0ZSk7CiAgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L2F0ay9nZXRUZXh0SW5UYWJsZSIsIHRlc3RXZWJraXRBdGtHZXRUZXh0SW5UYWJs
ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MWUwNjk1Y2ZkZDMxMGExNjhlMTcxYTdkOGFlYjJiMDlmMTgxZDIyMC4uMjJmMmI1MTFjNmQ2YmZh
ZDQyNTYzODU1MGFkZDg3MTg0M2VlNGIxZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEyLTA5ICBKb2FubWFy
aWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBBWDogW0FUS10gQ29udmVy
dCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRv
IGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlIHRoZSBuZWVkZWQgY2FsbGJhY2tzIGZvciBEUlQgYW5kIFdLVFIuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKGNoYXJhY3RlckF0T2Zmc2V0Q2FsbGJhY2spOiBhZGRlZAorICAgICAgICAod29yZEF0T2Zm
c2V0Q2FsbGJhY2spOiBhZGRlZAorICAgICAgICAobGluZUF0T2Zmc2V0Q2FsbGJhY2spOiBhZGRl
ZAorICAgICAgICAoc2VudGVuY2VBdE9mZnNldENhbGxiYWNrKTogYWRkZWQKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChzdHJpbmdBdE9mZnNl
dCk6IGFkZGVkCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9m
ZnNldCk6IGFkZGVkCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZz
ZXQpOiBhZGRlZAorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0
KTogYWRkZWQKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZz
ZXQpOiBhZGRlZAorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VBdE9mZnNldCk6IGFkZGVkCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdU
Ujo6c3RyaW5nQXRPZmZzZXQpOiBhZGRlZAorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQpOiBhZGRlZAorCiAyMDEzLTEy
LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NvY29hXSBDb252
ZXJ0IGEgZmV3IG1vcmUgcGFydHMgb2YgTWluaUJyb3dzZXIgb3ZlciB0byB0aGUgT2JqZWN0aXZl
LUMgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwCmluZGV4IDMyN2I5ODhjZWY1ODdjYjU4ZmFiZGFjNTUyOWNmODU5M2QzMDM3NjguLmM0Mzc4
NWY3ZTEzYmZmNzU5OTg2YzQ5YjViZTZlYjcxZDZmMTAzMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0xMTAzLDcgKzExMDMsNDgg
QEAgc3RhdGljIEpTVmFsdWVSZWYgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpCitzdGF0aWMgSlNWYWx1ZVJlZiBjaGFyYWN0ZXJBdE9mZnNldENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRv
TnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBjaGFyYWN0ZXJBdE9mZnNldChBZG9wdCwgdG9BWEVsZW1lbnQodGhp
c09iamVjdCktPmNoYXJhY3RlckF0T2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVN0cmluZyhjb250ZXh0LCBjaGFyYWN0ZXJBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHdvcmRBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0g
MSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB3b3JkQXRPZmZz
ZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT53b3JkQXRPZmZzZXQob2Zmc2V0KSk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHdvcmRBdE9mZnNldC5nZXQo
KSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxpbmVBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFy
Z3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBsaW5lQXRPZmZzZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5saW5lQXRP
ZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGxp
bmVBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNlbnRlbmNlQXRPZmZz
ZXRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaW50IG9mZnNl
dCA9IC0xOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIG9mZnNldCA9IEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VudGVuY2VBdE9mZnNldChBZG9wdCwgdG9BWEVsZW1l
bnQodGhpc09iamVjdCktPnNlbnRlbmNlQXRPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHNlbnRlbmNlQXRPZmZzZXQuZ2V0KCkpOworfQorCisj
ZWxpZiBQTEFURk9STShJT1MpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHN0cmluZ0ZvclNlbGVjdGlv
bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKQEAgLTE0
NzUsNyArMTUxNiwxMiBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpT
Q2xhc3MoKQogICAgICAgICB7ICJzZXRTZWxlY3RlZENoaWxkIiwgc2V0U2VsZWN0ZWRDaGlsZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNlbGVjdGVkQ2hpbGRBdEluZGV4Iiwgc2VsZWN0
ZWRDaGlsZEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzY3JvbGxUb01ha2VW
aXNpYmxlIiwgc2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorICAgICAgICB7ICJj
aGFyYWN0ZXJBdE9mZnNldCIsIGNoYXJhY3RlckF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAid29yZEF0T2Zmc2V0Iiwgd29yZEF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAibGluZUF0T2Zmc2V0IiwgbGluZUF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAic2VudGVuY2VBdE9mZnNldCIsIHNlbnRlbmNlQXRPZmZzZXRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorI2VsaWYgUExBVEZPUk0oSU9TKQogICAgICAgICB7ICJsaW5rZWRFbGVtZW50IiwgbGlu
a2VkRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImhlYWRlckVsZW1lbnRBdElu
ZGV4IiwgaGVhZGVyRWxlbWVudEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJl
bGVtZW50c0ZvclJhbmdlIiwgZWxlbWVudHNGb3JSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggYWI0NmY2
NTRjYjlmZDNkZThlYTI5NTI1MjEwNDkzZGQ5OTBiOWU4MC4uZTUzYTU2NzA2ZjkxNTI0MGY4Yzc0
ZjliZjU5MzgxZjc4ZmE4YzlhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaApAQCAtMjEzLDYgKzIxMywxNCBAQCBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBsaW5rZWRFbGVtZW50KCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQorICAgIC8vIFRleHQtc3BlY2lmaWMKKyAgICBKU1N0cmlu
Z1JlZiBjaGFyYWN0ZXJBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBKU1N0cmluZ1JlZiB3b3Jk
QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNTdHJpbmdSZWYgbGluZUF0T2Zmc2V0KGludCBv
ZmZzZXQpOworICAgIEpTU3RyaW5nUmVmIHNlbnRlbmNlQXRPZmZzZXQoaW50IG9mZnNldCk7Cisj
ZW5kaWYKKwogICAgIC8vIFRhYmxlLXNwZWNpZmljCiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCmluZGV4IGVkZTE0ZWFjZTJlYzU3YjYxZGIxYWU1YzhhNmFiZTVkOWVhM2RjMjgu
LmFlZjgwZmViNzgwMzdkNWQzZTViNjljM2E0ZDdhNTYwZDE1Y2M0YjQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAK
QEAgLTE0MzUsNCArMTQzNSw1OSBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjbGFzc0xpc3QoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitKU1N0cmluZ1Jl
ZiBzdHJpbmdBdE9mZnNldChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBBdGtUZXh0Qm91bmRh
cnkgYm91bmRhcnksIGludCBvZmZzZXQpCit7CisgICAgaWYgKCFBVEtfSVNfVEVYVChlbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisK
KyAgICBnaW50IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworCisjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTAsIDApCisgICAgQXRrVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5OworICAgIHN3aXRjaCAoYm91bmRhcnkpIHsKKyAgICBjYXNlIEFU
S19URVhUX0JPVU5EQVJZX0NIQVI6CisgICAgICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRfR1JB
TlVMQVJJVFlfQ0hBUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFS
WV9XT1JEX1NUQVJUOgorICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZ
X1dPUkQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfTElORV9T
VEFSVDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJU
OgorICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZX1NFTlRFTkNFOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZChhdGtf
dGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVEtfVEVYVChlbGVtZW50KSwgb2Zmc2V0LCBncmFu
dWxhcml0eSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KSk7CisjZWxzZQorICAgIGJ1aWxkZXIu
YXBwZW5kKGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldChBVEtfVEVYVChlbGVtZW50KSwgb2Zm
c2V0LCBib3VuZGFyeSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KSk7CisjZW5kaWYKKyAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiLCAlaSwgJWkiLCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1
cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCBvZmZz
ZXQpOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZz
ZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCBvZmZzZXQpOworfQorCitKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBy
ZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NU
QVJULCBvZmZzZXQpOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZW50ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0
KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsIG9mZnNldCk7Cit9
CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggMmJkOWVjZmQ2
Nzg5ZDViNjhmNTkzOGRhZjdjM2M2YWI4YWUwNjE5Yy4uNGZlNWM0YjFkZTVkZjJkZTMxYjIwMmU0
NmJjMmJlZTViNjBmMmNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0x
NjQsNiArMTY0LDEwIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduCiBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCwg
dW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqLCBib29sLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZiwgYm9vbCkg
eyByZXR1cm4gMDsgfQogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVm
LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYs
IGJvb2wpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQo
aW50KSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQoaW50
KSB7IHJldHVybiAwOyB9CiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQsIHVuc2lnbmVk
KSB7IHJldHVybiAwOyB9CiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAppbmRleCA5MGY1Y2IxMGNiNzExZmI3MjJlN2VkMWIyYTVhYjhmMGI2
ZjNmODAyLi42M2RlNWQxMTExY2Q4N2IwZTVlYjliZmNjNWUxN2M5MjhjYmFmYWJjIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMjAxLDYgKzIwMSwxNCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24s
IHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdW5zaWduZWQgdWlFbGVtZW50Q291bnRGb3JTZWFyY2hQ
cmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdS
ZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSk7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVm
LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25O
ZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2
aXNpYmxlT25seSk7CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyAgICAv
LyBUZXh0LXNwZWNpZmljCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNoYXJhY3RlckF0
T2Zmc2V0KGludCBvZmZzZXQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB3b3JkQXRP
ZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxpbmVBdE9m
ZnNldChpbnQgb2Zmc2V0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VudGVuY2VB
dE9mZnNldChpbnQgb2Zmc2V0KTsKKyNlbmRpZgogICAgIAogICAgIC8vIFRhYmxlLXNwZWNpZmlj
CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5k
Um93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCmluZGV4IDdjZGU1ODZjNTYyZDQ5ZmU1NTcxNGM0
ODdhZjcwMTEyZjdlNTkxM2EuLmVlZDMzZDIyYTYzMGYzNzJjMzNmMGNkOTQ4YTczMDA2MDgzNWEz
OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbApA
QCAtMTE0LDYgKzExNCwxMiBAQCBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CiAg
ICAgRE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CiAgICAgRE9NU3RyaW5nIGF0dHJp
YnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKTsKICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mRG9j
dW1lbnRMaW5rcygpOworCisgICAgLy8gVGV4dCBpbmZvLgorICAgIERPTVN0cmluZyBjaGFyYWN0
ZXJBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBET01TdHJpbmcgd29yZEF0T2Zmc2V0KGludCBv
ZmZzZXQpOworICAgIERPTVN0cmluZyBsaW5lQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgRE9N
U3RyaW5nIHNlbnRlbmNlQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgCiAgICAgLy8gVGFibGUg
aW5mby4KICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCBmZDQ2YzI1OTRlYTZk
OWJlZGQ0MDNkZWUwYWNiYmVmNzM1MzhlOGE5Li44MTI0MmNjMzAwMGJiNzUyNzg2NzViNWJjZmFh
ZTJkOWY1ODZjODUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcApAQCAtMTYwNiw2ICsxNjA2LDYxIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdAogICAgIHJldHVybiBudWxscHRy
OwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXRPZmZzZXQoUGxhdGZvcm1V
SUVsZW1lbnQgZWxlbWVudCwgQXRrVGV4dEJvdW5kYXJ5IGJvdW5kYXJ5LCBpbnQgb2Zmc2V0KQor
eworICAgIGlmICghQVRLX0lTX1RFWFQoZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgZ2ludCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworI2lmIEFUS19DSEVD
S19WRVJTSU9OKDIsIDEwLCAwKQorICAgIEF0a1RleHRHcmFudWxhcml0eSBncmFudWxhcml0eTsK
KyAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9DSEFS
OgorICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVDoKKyAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklUWV9XT1JEOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQ6CisgICAgICAgIGdyYW51
bGFyaXR5ID0gQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVDoKKyAgICAgICAgZ3JhbnVsYXJp
dHkgPSBBVEtfVEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CisgICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQoYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9v
ZmZzZXQoQVRLX1RFWFQoZWxlbWVudC5nZXQoKSksIG9mZnNldCwgZ3JhbnVsYXJpdHksICZzdGFy
dE9mZnNldCwgJmVuZE9mZnNldCkpOworI2Vsc2UKKyAgICBidWlsZGVyLmFwcGVuZChhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQoQVRLX1RFWFQoZWxlbWVudC5nZXQoKSksIG9mZnNldCwgYm91
bmRhcnksICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCkpOworI2VuZGlmCisgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpmb3JtYXQoIiwgJWksICVpIiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkp
OworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQgb2Zmc2V0KQoreworICAg
IHJldHVybiBzdHJpbmdBdE9mZnNldChtX2VsZW1lbnQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIs
IG9mZnNldCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRP
ZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCBvZmZzZXQpOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
ZUF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxl
bWVudCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgb2Zmc2V0KTsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZz
ZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBB
VEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwgb2Zmc2V0KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV1RSCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2YwN2I5
ZTM5ZDFjNmQ4NWExZDM0MTQ3Yjc0NDIxNTc5MmJkYjU3YS4uZWM2M2FiOTVkY2U2YzJlMjg1OTE0
NWFjOGVjMmZhNDIwMmY5ODZhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTEyLTA5ICBK
b2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBBWDogW0FUS10g
Q29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3QuYyB1bml0IHRl
c3RzIHRvIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTmV3IHRlc3RzIGFuZCBleHBlY3RhdGlvbnMgYmFzZWQgb24gdGhlIHRlc3Rz
IGFuZCBleHBlY3RhdGlvbnMgZm91bmQgaW4gYXRrdGVzdC5jLgorICAgICAgICBUaGVzZSB3ZXJl
IGRvbmUgYXMgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMgYmVjYXVzZSBvbmx5IEFUSy1iYXNlZCBh
c3Npc3RpdmUgdGVjaG5vbG9naWVzCisgICAgICAgIHNlZW0gdG8gaGF2ZSBhbnkgbmVlZCBmb3Ig
dGhpcyBzdXBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4
dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2JqZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9i
amVjdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkv
dGV4dC1hdC1vZmZzZXQtbmV3bGluZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNl
dC1wcmVmb3JtYXR0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1wcmVmb3JtYXR0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc2lt
cGxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvdGV4dC1hdC1vZmZzZXQtc2ltcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNwZWNpYWwtY2hhcnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0
LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtdGV4dGFyZWEuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQt
YXQtb2Zmc2V0LXdyYXBwZWQtbGluZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC13cmFwcGVkLWxpbmVzLmh0
bWw6IEFkZGVkLgorCiAyMDEzLTEyLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNU0VdIEJyaW5nIGVuZC1vZi1zdHJlYW0gYWxnb3JpdGhtIHNlY3Rpb24g
dXAgdG8gY3VycmVudCBzcGVjLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2JqZWN0cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNl
dC1lbWJlZGRlZC1vYmplY3RzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWE5MTgwMmFlODIy
N2Q3YWZmMDE2OWEyZWQ4YzBkNzFkNWFhMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2Jq
ZWN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAorVGhpcyBpcyBvbmUgbGluZSBjb250
YWluaW5nIHR3byAgZW1iZWRkZWQgb2JqZWN0cyAgaW4gdGhlIG1pZGRsZS4KKworVGhpcyB0ZXN0
cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJp
dGllcyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Y29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgzMikgaXMgJ8Ovwr/CvCwgMzIsIDMzJworUEFTUyBj
b250ZW50LndvcmRBdE9mZnNldCgzMikgaXMgJ3R3byDDr8K/wrwgLCAyOCwgMzQnCitQQVNTIGNv
bnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMzMpIGlzICcgLCAzMywgMzQnCitQQVNTIGNvbnRlbnQu
d29yZEF0T2Zmc2V0KDMzKSBpcyAndHdvIMOvwr/CvCAsIDI4LCAzNCcKK1BBU1MgY29udGVudC5j
aGFyYWN0ZXJBdE9mZnNldCgzNCkgaXMgJ2UsIDM0LCAzNScKK1BBU1MgY29udGVudC53b3JkQXRP
ZmZzZXQoMzQpIGlzICdlbWJlZGRlZCAsIDM0LCA0MycKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJB
dE9mZnNldCg0MikgaXMgJyAsIDQyLCA0MycKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNDIp
IGlzICdlbWJlZGRlZCAsIDM0LCA0MycKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1
MSkgaXMgJ8Ovwr/CvCwgNTEsIDUyJworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1MSkgaXMg
J29iamVjdHMgw6/Cv8K8ICwgNDMsIDUzJworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0
KDUyKSBpcyAnICwgNTIsIDUzJworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1MikgaXMgJ29i
amVjdHMgw6/Cv8K8ICwgNDMsIDUzJworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUz
KSBpcyAnaSwgNTMsIDU0JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1MykgaXMgJ2luICwg
NTMsIDU2JworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDU1KSBpcyAnICwgNTUsIDU2
JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1NSkgaXMgJ2luICwgNTMsIDU2JworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVt
YmVkZGVkLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODZj
NWQ5YmQ0N2UzZDkzY2UwYTRkMTcxYWYzZDlkODQ5MDg0MjAwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1i
ZWRkZWQtb2JqZWN0cy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IGlkPSJib2R5Ij4KKzxwPlRoaXMgaXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gPGltZz4g
ZW1iZWRkZWQgb2JqZWN0cyA8aW1nPiBpbiB0aGUgbWlkZGxlLjwvcD4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRp
ZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImJvZHkiKS5mb2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgY29udGVudCA9IHdlYkFyZWEuY2hp
bGRBdEluZGV4KDApOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zm
c2V0KDMyKSIsICInXDM1N1wyNzdcMjc0LCAzMiwgMzMnIik7CisgICAgICAgIHNob3VsZEJlKCJj
b250ZW50LndvcmRBdE9mZnNldCgzMikiLCAiJ3R3byBcMzU3XDI3N1wyNzQgLCAyOCwgMzQnIik7
CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDMzKSIsICInICwg
MzMsIDM0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMzMpIiwg
Iid0d28gXDM1N1wyNzdcMjc0ICwgMjgsIDM0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVu
dC5jaGFyYWN0ZXJBdE9mZnNldCgzNCkiLCAiJ2UsIDM0LCAzNSciKTsKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDM0KSIsICInZW1iZWRkZWQgLCAzNCwgNDMnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDQyKSIsICInICwgNDIs
IDQzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNDIpIiwgIidl
bWJlZGRlZCAsIDM0LCA0MyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVy
QXRPZmZzZXQoNTEpIiwgIidcMzU3XDI3N1wyNzQsIDUxLCA1MiciKTsKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDUxKSIsICInb2JqZWN0cyBcMzU3XDI3N1wyNzQgLCA0
MywgNTMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUy
KSIsICInICwgNTIsIDUzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZz
ZXQoNTIpIiwgIidvYmplY3RzIFwzNTdcMjc3XDI3NCAsIDQzLCA1MyciKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoNTMpIiwgIidpLCA1MywgNTQnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1MykiLCAiJ2luICwgNTMsIDU2
JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1NSkiLCAi
JyAsIDU1LCA1NiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDU1
KSIsICInaW4gLCA1MywgNTYnIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90
ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGE2ZWU4MGE2ZmUwOWFkMWVkYzI3MTkxYTUxOGNiZDE4OTNmYTNhNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3Rl
eHQtYXQtb2Zmc2V0LW5ld2xpbmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlz
IGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhp
cmQuCisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlm
ZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkgaXMgJ1QsIDAsIDEn
CitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDApIGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29u
dGVudC53b3JkQXRPZmZzZXQoNCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRB
dE9mZnNldCgxMCkgaXMgJ3Rlc3QuICwgMTAsIDE2JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNl
dCg1OCkgaXMgJ3RoaXJkLiwgNTgsIDY0JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQo
MCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRP
ZmZzZXQoMTUpIGlzICdUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5saW5l
QXRPZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LW5ld2xpbmVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5l
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhkMDMxMTBlMDNhMjZlZDUzNTc3MjVjMWE4Zjk3MDQwM2NjZjVk
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJp
bGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxwIGlkPSJjb250ZW50Ij5UaGlzIGlzIGEg
dGVzdC4gCisKK1RoaXMKKyAgIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0
aGlyZC48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0
byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0
cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIHdl
YkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAg
dmFyIGNvbnRlbnQgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAgICAgICBzaG91bGRC
ZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSciKTsKKyAgICAgICAg
c2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwgMCwgNSciKTsKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidUaGlzICwgMCwgNSci
KTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSIsICIndGVzdC4g
LCAxMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1OCki
LCAiJ3RoaXJkLiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5j
ZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAs
IDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAi
J1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRo
ZSB0aGlyZC4sIDAsIDY0JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4
dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2JjMzA4MTYzOWI0NjQxNjUyNTVmYWJiZjdkM2Y0N2U3YzMxY2Jh
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NiBAQAorCQorCWZpcnN0IGxpbmUKKwlzZWNvbmQgbGluZQorCQorVGhpcyB0ZXN0cyB0aGUgYWJp
bGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQg
b2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5s
aW5lQXRPZmZzZXQoMCkgaXMgJ1x0XG4sIDAsIDInCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0
KDIpIGlzICdcdGZpcnN0IGxpbmVcbiwgMiwgMTQnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0
KDE0KSBpcyAnXHRzZWNvbmQgbGluZVxuLCAxNCwgMjcnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1w
cmVmb3JtYXR0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmOTQxODhlODgxNDZjYWJiODZlNmI3ZDU0
NzkwYmUwNDNmMzY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0bWwKQEAgLTAsMCAr
MSwyOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHByZSBpZD0iY29u
dGVudCI+CisJCisJZmlyc3QgbGluZQorCXNlY29uZCBsaW5lCisJCis8L3ByZT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQg
Zm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImJvZHkiKS5mb2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgY29udGVudCA9IHdlYkFy
ZWEuY2hpbGRBdEluZGV4KDApOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmxpbmVBdE9m
ZnNldCgwKSIsICInXFx0XFxuLCAwLCAyJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5s
aW5lQXRPZmZzZXQoMikiLCAiJ1xcdGZpcnN0IGxpbmVcXG4sIDIsIDE0JyIpOworICAgICAgICBz
aG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMTQpIiwgIidcXHRzZWNvbmQgbGluZVxcbiwg
MTQsIDI3JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtc2ltcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3Np
YmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE2
ZWU4MGE2ZmUwOWFkMWVkYzI3MTkxYTUxOGNiZDE4OTNmYTNhNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNp
bXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyBpcyBhIHRlc3QuIFRoaXMg
aXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLgorCitUaGlzIHRlc3Rz
IHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0
aWVzIGFuZCBvZmZzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBj
b250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDApIGlzICdULCAwLCAxJworUEFTUyBjb250ZW50Lndv
cmRBdE9mZnNldCgwKSBpcyAnVGhpcyAsIDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0
KDQpIGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMTApIGlzICd0
ZXN0LiAsIDEwLCAxNicKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTgpIGlzICd0aGlyZC4s
IDU4LCA2NCcKK1BBU1MgY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDApIGlzICdUaGlzIGlzIGEg
dGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDE1KSBpcyAnVGhp
cyBpcyBhIHRlc3QuICwgMCwgMTYnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdU
aGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUg
dGhpcmQuLCAwLCA2NCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJp
bGl0eS90ZXh0LWF0LW9mZnNldC1zaW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
ZGMwMjg4NzRjMzU1ZWRhMWMzZWQxY2U1NjY5ODMzM2UzMjQyNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1z
aW1wbGUuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0i
Ym9keSI+Cis8cCBpZD0iY29udGVudCI+VGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29u
ZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVu
dCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHki
KS5mb2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgY29udGVudCA9IHdlYkFyZWEuY2hpbGRBdElu
ZGV4KDApOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDAp
IiwgIidULCAwLCAxJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQo
MCkiLCAiJ1RoaXMgLCAwLCA1JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRP
ZmZzZXQoNCkiLCAiJ1RoaXMgLCAwLCA1JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53
b3JkQXRPZmZzZXQoMTApIiwgIid0ZXN0LiAsIDEwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvbnRlbnQud29yZEF0T2Zmc2V0KDU4KSIsICIndGhpcmQuLCA1OCwgNjQnIik7CisgICAgICAg
IHNob3VsZEJlKCJjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0
LiAsIDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0
KDE1KSIsICInVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJj
b250ZW50LmxpbmVBdE9mZnNldCgwKSIsICInVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNl
Y29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiwgMCwgNjQnIik7CisgICAgfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQt
b2Zmc2V0LXNwZWNpYWwtY2hhcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MTRjNzViNjFi
MDg5MWZjY2UwMWQ4ZWYxOWYyYmRkNDBmZGQzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNo
YXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACivCq8KgVGhpcyBpcyBhIHBhcmFncmFw
aCB3aXRoIOKAnHNwZWNpYWzigJ0gY2hhcmFjdGVycyBpbnNpZGUuwqDCuworCitMaXN0IGl0ZW0g
d2l0aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLgorTGlzdCBp
dGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4KKwor
VGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQg
Z3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgcGFyYWdyYXBoLmxpbmVBdE9mZnNldCgwKSBpcyAnw4LCq8OCwqBUaGlzIGlzIGEg
cGFyYWdyYXBoIHdpdGggw6LCgMKcc3BlY2lhbMOiwoDCnSBjaGFyYWN0ZXJzIGluc2lkZS7DgsKg
w4LCuywgMCwgNTcnCitQQVNTIGxpc3RpdGVtLmxpbmVBdE9mZnNldCgzKSBpcyAnw6LCgMKiIExp
c3QgaXRlbSAsIDAsIDEyJworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMTMpIGlzICd3aXRo
IHNvbWUgLCAxMiwgMjInCitQQVNTIGxpc3RpdGVtLmxpbmVBdE9mZnNldCgzKSBpcyAnw6LCgMKi
IExpc3QgaXRlbSAsIDAsIDEyJworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMTMpIGlzICd3
aXRoIHNvbWUgLCAxMiwgMjInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkNTQ5OTZiM2QwMjVhYWE3OTczZTFiYTBjMTVhOGE4MDI1YmU1NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHA+JmxhcXVvOyZuYnNwO1RoaXMgaXMg
YSBwYXJhZ3JhcGggd2l0aCAmbGRxdW87c3BlY2lhbCZyZHF1bzsgY2hhcmFjdGVycyBpbnNpZGUu
Jm5ic3A7JnJhcXVvOzwvcD48dWw+PGxpIHN0eWxlPSdtYXgtd2lkdGg6NzBweDsnPkxpc3QgaXRl
bSB3aXRoIHNvbWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuPC9saT48
bGkgc3R5bGU9J21heC13aWR0aDo3MHB4Oyc+PHA+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRo
YXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy48L3A+PC9saT48L3VsPgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBm
b3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuIik7CisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYm9keSIpLmZvY3VzKCk7CisgICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgdmFyIHBhcmFncmFwaCA9IHdl
YkFyZWEuY2hpbGRBdEluZGV4KDApOworICAgICAgICBzaG91bGRCZSgicGFyYWdyYXBoLmxpbmVB
dE9mZnNldCgwKSIsICInXDMwMlwyNTNcMzAyXDI0MFRoaXMgaXMgYSBwYXJhZ3JhcGggd2l0aCBc
MzQyXDIwMFwyMzRzcGVjaWFsXDM0MlwyMDBcMjM1IGNoYXJhY3RlcnMgaW5zaWRlLlwzMDJcMjQw
XDMwMlwyNzMsIDAsIDU3JyIpOworCisgICAgICAgIHZhciBsaXN0ID0gd2ViQXJlYS5jaGlsZEF0
SW5kZXgoMSk7CisgICAgICAgIHZhciBsaXN0aXRlbSA9IGxpc3QuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICBzaG91bGRCZSgibGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDMpIiwgIidcMzQyXDIwMFwy
NDIgTGlzdCBpdGVtICwgMCwgMTInIik7CisgICAgICAgIHNob3VsZEJlKCJsaXN0aXRlbS5saW5l
QXRPZmZzZXQoMTMpIiwgIid3aXRoIHNvbWUgLCAxMiwgMjInIik7CisKKyAgICAgICAgdmFyIGxp
c3RpdGVtID0gbGlzdC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIHNob3VsZEJlKCJsaXN0aXRl
bS5saW5lQXRPZmZzZXQoMykiLCAiJ1wzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gLCAwLCAxMiciKTsK
KyAgICAgICAgc2hvdWxkQmUoImxpc3RpdGVtLmxpbmVBdE9mZnNldCgxMykiLCAiJ3dpdGggc29t
ZSAsIDEyLCAyMiciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQt
b2Zmc2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZDA0ZWNjNDhlYTBjYjY4YzExMzM5MTM5ZTNjNmZjY2RhZTgyZmVlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1v
ZmZzZXQtdGV4dGFyZWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKKworVGhpcyB0ZXN0
cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJp
dGllcyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Y29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSBpcyAnVCwgMCwgMScKK1BBU1MgY29udGVudC53
b3JkQXRPZmZzZXQoMCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNl
dCg0KSBpcyAnVGhpcyAsIDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSBpcyAn
dGVzdC4gLCAxMCwgMTYnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDU4KSBpcyAndGhpcmQu
LCA1OCwgNjQnCitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBh
IHRlc3QuICwgMCwgMTYnCitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkgaXMgJ1Ro
aXMgaXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAn
VGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhl
IHRoaXJkLiwgMCwgNjQnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdmb28gYmFy
IGJheiwgMCwgMTEnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvdGV4dC1hdC1vZmZzZXQtdGV4dGFyZWEuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzBmYmUxMGUwOGY0YjkzY2E1NjU5MWZjYTMwYjQ1MzBkNTkwZjYwOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0
LXRleHRhcmVhLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
aWQ9ImJvZHkiPgorPHRleHRhcmVhIGlkPSJjb250ZW50IiBjb2xzPSc4MCc+VGhpcyBpcyBhIHRl
c3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvdGV4
dGFyZWE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBn
ZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4i
KTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIGNv
bnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAg
ICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSciKTsK
KyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwgMCwg
NSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidUaGlz
ICwgMCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSIs
ICIndGVzdC4gLCAxMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9m
ZnNldCg1OCkiLCAiJ3RoaXJkLiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVu
dC5zZW50ZW5jZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMgaXMg
YSB0ZXN0LiAsIDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZz
ZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFu
ZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb250ZW50IikudmFsdWUgPSAiZm9vIGJhciBiYXoiOworICAgICAgICBzaG91bGRC
ZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ2ZvbyBiYXIgYmF6LCAwLCAxMSciKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0
LWF0LW9mZnNldC10ZXh0aW5wdXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMDRlY2M0OGVh
MGNiNjhjMTEzMzkxMzllM2M2ZmNjZGFlODJmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0aW5wdXQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKKworVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0
byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5jaGFyYWN0
ZXJBdE9mZnNldCgwKSBpcyAnVCwgMCwgMScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMCkg
aXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg0KSBpcyAnVGhpcyAs
IDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSBpcyAndGVzdC4gLCAxMCwgMTYn
CitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDU4KSBpcyAndGhpcmQuLCA1OCwgNjQnCitQQVNT
IGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYn
CitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAs
IDAsIDE2JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3Qu
IFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiwgMCwgNjQn
CitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdmb28gYmFyIGJheiwgMCwgMTEnCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtdGV4dGlucHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS90ZXh0LWF0LW9mZnNldC10ZXh0aW5wdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzc3Mjg5Njk0MWQ3
ZWFjMzFlNmYyOTRlZWFhMzJlZWFlNDBmMzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0Lmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgor
PGlucHV0IGlkPSJjb250ZW50IiB0eXBlPSd0ZXh0JyBzaXplPSc4MCcgdmFsdWU9J1RoaXMgaXMg
YSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4n
Lz4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBl
bGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5mb2N1cygpOworICAgICAgICB2YXIgY29udGVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisgICAgICAgIHNo
b3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDApIiwgIidULCAwLCAxJyIpOworICAg
ICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMCkiLCAiJ1RoaXMgLCAwLCA1JyIp
OworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNCkiLCAiJ1RoaXMgLCAw
LCA1JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMTApIiwgIid0
ZXN0LiAsIDEwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0
KDU4KSIsICIndGhpcmQuLCA1OCwgNjQnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LnNl
bnRlbmNlQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDE1KSIsICInVGhpcyBpcyBhIHRl
c3QuICwgMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmxpbmVBdE9mZnNldCgw
KSIsICInVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRo
aXMgdGhlIHRoaXJkLiwgMCwgNjQnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRlbnQiKS52YWx1ZSA9ICJmb28gYmFyIGJheiI7CisgICAgICAgIHNob3VsZEJlKCJj
b250ZW50LmxpbmVBdE9mZnNldCgwKSIsICInZm9vIGJhciBiYXosIDAsIDExJyIpOworICAgIH0K
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0
LWF0LW9mZnNldC13cmFwcGVkLWxpbmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTM1MWJi
NGY4MjQ1ODIxOWZkMWQ3Mzc5NmQzYzNiNjhmMTEzMzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBl
ZC1saW5lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyBpcyBvbmUgbGluZSB3
cmFwcGVkIGJlY2F1c2Ugb2YgdGhlIG1heGltdW0gd2lkdGggb2YgaXRzIGNvbnRhaW5lci4KKwor
VGhpcyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZAorYmVjYXVzZSBvZiBvbmUgZm9yY2VkCitsaW5l
IGJyZWFrIGluIHRoZSBtaWRkbGUuCisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVs
ZW1lbnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhcmFncmFwaC5jaGFyYWN0ZXJBdE9m
ZnNldCgxNikgaXMgJyAsIDE2LCAxNycKK1BBU1MgcGFyYWdyYXBoLndvcmRBdE9mZnNldCgxNikg
aXMgJ2xpbmUgLCAxMiwgMTcnCitQQVNTIHBhcmFncmFwaC5saW5lQXRPZmZzZXQoMTcpIGlzICd3
cmFwcGVkIGJlY2F1c2UgLCAxNywgMzMnCitQQVNTIHBhcmFncmFwaC5jaGFyYWN0ZXJBdE9mZnNl
dCgyOCkgaXMgJ1xuLCAyOCwgMjknCitQQVNTIHBhcmFncmFwaC53b3JkQXRPZmZzZXQoMjgpIGlz
ICd3cmFwcGVkXG4sIDIxLCAyOScKK1BBU1MgcGFyYWdyYXBoLmxpbmVBdE9mZnNldCgzMCkgaXMg
J2JlY2F1c2Ugb2Ygb25lIGZvcmNlZFxuLCAyOSwgNTEnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy5odG1s
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQt
d3JhcHBlZC1saW5lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2EyOWU5ZDY1MGZjYWFiYmVlOGI1Mzcw
Zjc4NzlkMjNmNWRjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC13cmFwcGVkLWxpbmVzLmh0bWwKQEAgLTAs
MCArMSwyOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHAgc3R5bGU9
J21heC13aWR0aDoxMjBweDsnPlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRo
ZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuPC9wPjxwPlRoaXMgaXMgYW5vdGhlciBs
aW5lIHdyYXBwZWQ8YnI+YmVjYXVzZSBvZiBvbmUgZm9yY2VkPGJyPmxpbmUgYnJlYWsgaW4gdGhl
IG1pZGRsZS48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0
eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zm
c2V0cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFy
IHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAg
ICAgICB2YXIgcGFyYWdyYXBoID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHNo
b3VsZEJlKCJwYXJhZ3JhcGguY2hhcmFjdGVyQXRPZmZzZXQoMTYpIiwgIicgLCAxNiwgMTcnIik7
CisgICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgud29yZEF0T2Zmc2V0KDE2KSIsICInbGluZSAs
IDEyLCAxNyciKTsKKyAgICAgICAgc2hvdWxkQmUoInBhcmFncmFwaC5saW5lQXRPZmZzZXQoMTcp
IiwgIid3cmFwcGVkIGJlY2F1c2UgLCAxNywgMzMnIik7CisKKyAgICAgICAgcGFyYWdyYXBoID0g
d2ViQXJlYS5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGguY2hh
cmFjdGVyQXRPZmZzZXQoMjgpIiwgIidcXG4sIDI4LCAyOSciKTsKKyAgICAgICAgc2hvdWxkQmUo
InBhcmFncmFwaC53b3JkQXRPZmZzZXQoMjgpIiwgIid3cmFwcGVkXFxuLCAyMSwgMjknIik7Cisg
ICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgubGluZUF0T2Zmc2V0KDMwKSIsICInYmVjYXVzZSBv
ZiBvbmUgZm9yY2VkXFxuLCAyOSwgNTEnIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218772</attachid>
            <date>2013-12-09 10:04:07 -0800</date>
            <delta_ts>2013-12-09 10:37:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125451-20131209190405.patch</filename>
            <type>text/plain</type>
            <size>90523</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Q3NmMyNDAy
YzNmMzIxZmI3MGRmM2JjMTZmNWJhNGM0NTMwNzZiMC4uNzE3MTViMzUxMjY4ZDQxYTc1N2MxNzYz
Y2MxZTVkOWUyODUwZDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBB
WDogW0FUS10gQ29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3Qu
YyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6IFJlbW92ZSB0aGUgdGVzdHMg
d2hpY2ggbm93IGV4aXN0IGFzIGxheW91dCB0ZXN0cy4gTm90ZSB0aGF0IHRoZQorICAgICAgICB0
ZXN0cyBmb3IgYXRrX3RleHRfZ2V0X3RleHRfe2JlZm9yZSxhZnRlcn1fb2Zmc2V0IHdlcmUgcmVt
b3ZlZCB3aXRob3V0IGVxdWl2YWxlbnRzCisgICAgICAgIGFkZGVkIHRvIHRoZSBsYXlvdXQgdGVz
dHMuIFRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBFTkQgQXRrVGV4dEJvdW5kYXJ5IHR5cGVzLiBC
b3RoCisgICAgICAgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIEFUSyBhbmQgYXJlIG5vdCBiZWlu
ZyB1c2VkIGJ5IEFULVNQSTIgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4KKyAgICAgICAgKHRlc3RH
ZXRUZXh0RnVuY3Rpb24pOgorICAgICAgICAobWFpbik6CisKIDIwMTMtMTItMDcgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4
cGVjdGF0aW9uIGZvbGxvd2luZyAxNjAyMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0YXRrLmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKaW5k
ZXggNTVhMDAxMTUzYmU2NTMxYzE1MjA3ODA1NDk2YjQ4ZGNkZmExYzZlMy4uMGZkOTkzY2ZlMmJh
MGQ5NTZhN2ZjYjEwODhlMDYyMDQ2Mjk3Mjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwpAQCAtMzEsMTYgKzMxLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNlbnRlcmVkQ29udGVudHMg
PSAiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsKIAogc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnRlbnRzID0gIjxodG1sPjxib2R5PjxwPlRoaXMgaXMgYSB0ZXN0LiBUaGlz
IGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC48L3A+PC9ib2R5Pjwv
aHRtbD4iOwogCi1zdGF0aWMgY29uc3QgY2hhciogY29udGVudHNXaXRoTmV3bGluZXMgPSAiPGh0
bWw+PGJvZHk+PHA+VGhpcyBpcyBhIHRlc3QuIFxuXG5UaGlzXG4gaXMgdGhlIHNlY29uZCBzZW50
ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvcD48L2JvZHk+PC9odG1sPiI7Ci0KLXN0YXRpYyBj
b25zdCBjaGFyKiBjb250ZW50c1dpdGhQcmVmb3JtYXR0ZWRUZXh0ID0gIjxodG1sPjxib2R5Pjxw
cmU+XG5cdFxuXHRmaXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuPC9wcmU+PC9ib2R5Pjwv
aHRtbD4iOwotCi1zdGF0aWMgY29uc3QgY2hhciogY29udGVudHNXaXRoU3BlY2lhbENoYXJzID0g
IjxodG1sPjxib2R5PjxwPiZsYXF1bzsmbmJzcDtUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggJmxk
cXVvO3NwZWNpYWwmcmRxdW87IGNoYXJhY3RlcnMgaW5zaWRlLiZuYnNwOyZyYXF1bzs8L3A+PHVs
PjxsaSBzdHlsZT0nbWF4LXdpZHRoOjEwMHB4Oyc+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRo
YXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy48L2xpPjxsaSBzdHlsZT0nbWF4LXdpZHRo
OjEwMHB4Oyc+PHA+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRp
ZmZlcmVudCBsaW5lcy48L3A+PC9saT48L3VsPjwvYm9keT48L2h0bWw+IjsKLQotc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnRlbnRzSW5UZXh0YXJlYSA9ICI8aHRtbD48Ym9keT48dGV4dGFyZWEgY29s
cz0nODAnPlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0
aGlzIHRoZSB0aGlyZC48L3RleHRhcmVhPjwvYm9keT48L2h0bWw+IjsKLQotc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnRlbnRzSW5UZXh0SW5wdXQgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHR5cGU9J3Rl
eHQnIHNpemU9JzgwJyB2YWx1ZT0nVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBz
ZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLicvPjwvYm9keT48L2h0bWw+IjsKLQogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRzSW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlID0gIjxodG1sPjxi
b2R5PjxwPlRoaXMgaXMgYSB0ZXN0LjwvcD5IZWxsbyB3b3JsZC48L2JvZHk+PC9odG1sPiI7CiAK
IHN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c0luUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlID0g
IjxodG1sPjxib2R5PjxwPlRoaXMgaXMgYSB0ZXN0LjwvcD5IZWxsbyB3b3JsZC48YnIgLz48Zm9u
dCBjb2xvcj0nIzAwY2MwMCc+VGhpcyBzZW50ZW5jZSBpcyBncmVlbi48L2ZvbnQ+PGJyIC8+VGhp
cyBvbmUgaXMgbm90LjwvYm9keT48L2h0bWw+IjsKQEAgLTUxLDEwICs0MSw2IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBjb250ZW50c0luVGFibGVXaXRoSGVhZGVycyA9ICI8aHRtbD48Ym9keT48dGFi
bGU+PHRyPjx0aD5mb288CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhFeHRyYW5l
b3VzV2hpdGVTcGFjZXMgPSAiPGh0bWw+PGhlYWQ+PGJvZHk+PHA+VGhpc1xuICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9ya2VkITwv
cD48L2JvZHk+PC9odG1sPiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhXcmFw
cGVkTGluZXMgPSAiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J21heC13aWR0aDoxNTBweDsnPlRoaXMg
aXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBj
b250YWluZXIuPC9wPjxwPlRoaXMgaXMgYW5vdGhlciBsaW5lIHdyYXBwZWQ8YnI+YmVjYXVzZSBv
ZiBvbmUgZm9yY2VkPGJyPmxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS48L2JvZHk+PC9odG1sPiI7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMgPSAiPGh0
bWw+PGJvZHk+VGhpcyBpcyBvbmUgbGluZSBjb250YWluaW5nIHR3byA8aW1nPiBlbWJlZGRlZCBv
YmplY3RzIDxpbWc+IGluIHRoZSBtaWRkbGUuPC9ib2R5PjwvaHRtbD4iOwotCiBzdGF0aWMgY29u
c3QgY2hhciogY29tYm9Cb3hTZWxlY3RvciA9ICI8aHRtbD48Ym9keT48c2VsZWN0PjxvcHRpb24g
c2VsZWN0ZWQgdmFsdWU9J2Zvbyc+Zm9vPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nYmFyJz5iYXI8
L29wdGlvbj48L3NlbGVjdD48L2JvZHk+PC9odG1sPiI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBl
bWJlZGRlZE9iamVjdHMgPSAiPGh0bWw+PGJvZHk+PHA+Q2hvb3NlOiA8aW5wdXQgdmFsdWU9J2Zv
bycgdHlwZT0nY2hlY2tib3gnLz5mb28gPGlucHV0IHZhbHVlPSdiYXInIHR5cGU9J2NoZWNrYm94
Jy8+YmFyIChwaWNrIG9uZSk8L3A+PHA+Q2hvb3NlOiA8c2VsZWN0IG5hbWU9J2Zvbyc+PG9wdGlv
bj5iYXI8L29wdGlvbj48b3B0aW9uPmJhejwvb3B0aW9uPjwvc2VsZWN0PiAocGljayBvbmUpPC9w
PjxwPjxpbnB1dCBuYW1lPSdmb29iYXJidXR0b24nIHZhbHVlPSdmb29iYXInIHR5cGU9J2J1dHRv
bicvPjwvcD48L2JvZHk+PC9odG1sPiI7CkBAIC02MTQsNTE3ICs2MDAsNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEF0a1RleHQqIHRleHRPYmplY3QsIEF0a0dldFRleHRGdW5j
dGlvbiBmbiwgQXRrVAogICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCBlbmRPZmZz
ZXRSZXN1bHQpOwogICAgIGdfZnJlZSh0ZXh0KTsKIH0KLQotc3RhdGljIHZvaWQgcnVuR2V0VGV4
dFRlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCi17Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0
X2dldF90ZXh0KHRleHRPYmplY3QsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwg
PT0sICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhp
cyB0aGUgdGhpcmQuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQVRLX1RFWFRfQk9V
TkRBUllfQ0hBUiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgIlQiLCAwLCAxKTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
dGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9DSEFSLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgImgiLCAxLCAyKTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3Jl
X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IDAsICIiLCAwLCAwKTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDEsICJUIiwgMCwgMSk7Ci0KLSAgICAvKiBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RB
UlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyAiLCAwLCA1KTsKLQotICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0
LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAg
NCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFS
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsKLQotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAg
ICAgNTgsICJ0aGlyZC4iLCA1OCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dP
UkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA2NCwgInRoaXJkLiIsIDU4LCA2NCk7
Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0
X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAwLCAiIiwgMCwgMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1LCAiVGhpcyAiLCAwLCA1
KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3Rl
eHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDcsICJUaGlzICIsIDAsIDUpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNjQsICJ0aGUg
IiwgNTQsIDU4KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAot
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgImlzICIsIDUsIDgpOwotCi0gICAgdGVzdEdldFRl
eHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAi
aXMgIiwgNSwgOCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIDMsICJpcyAiLCA1LCA4KTsKLQotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNjQs
ICIiLCA2NCwgNjQpOwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQgKi8KLSAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAwLCAiVGhpcyIsIDAsIDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5E
LAotICAgICAgICAgICAgICAgICAgICAgICAgNCwgIiBpcyIsIDQsIDcpOwotCi0gICAgdGVzdEdl
dFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNSwgIiBp
cyIsIDQsIDcpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAg
ICAgICAgICAgICAgICAgICAgOSwgIiB0ZXN0IiwgOSwgMTQpOwotCi0gICAgdGVzdEdldFRleHRG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNTgsICIgdGhpcmQi
LCA1NywgNjMpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAg
ICAgICAgICAgICAgICAgICAgNjQsICIuIiwgNjMsIDY0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVu
Y3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIiwgMCwg
MCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90
ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAg
ICAgICAgICAgICAgICAgNSwgIlRoaXMiLCAwLCA0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0LCAiVGhpcyIsIDAs
IDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDcsICIgaXMiLCA0LCA3KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA2NCwgIiB0aGlyZCIs
IDU3LCA2Myk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAwLCAiIGlzIiwgNCwgNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICA1LCAiIGEiLCA3
LCA5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDQsICIgYSIsIDcsIDkpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlv
bih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgNjQsICIiLCA2NCwgNjQp
OwotCi0gICAgLyogQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQgKi8KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAwLCAiVGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rp
b24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiVGhpcyBp
cyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVj
dCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5U
RU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIHRoZSBzZWNv
bmQgc2VudGVuY2UuICIsIDE2LCA0NSk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
U0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIlRoaXMgaXMgdGhl
IHNlY29uZCBzZW50ZW5jZS4gIiwgMTYsIDQ1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
dGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMg
aXMgYSB0ZXN0LiAiLCAwLCAxNik7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmpl
Y3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NF
TlRFTkNFX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgNDQsICJUaGlzIGlzIGEgdGVz
dC4gIiwgMCwgMTYpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtf
dGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9T
VEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIiwgMCwgMCk7Ci0KLSAgICAvKiBB
VEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgaXMgYSB0
ZXN0LiIsIDAsIDE1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNSwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNywgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVu
Y2UuIiwgMTUsIDQ0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9F
TkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50
ZW5jZS4iLCAxNSwgNDQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBh
dGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNF
X0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIEFuZCB0aGlzIHRoZSB0aGlyZC4i
LCA0NCwgNjQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMgaXMgYSB0ZXN0LiIsIDAsIDE1KTsK
LQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRf
YmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAg
ICAgICAgICAgICAgICAgMTUsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7Ci0KLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDE0LCAiIiwgMCwgMCk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3Qs
IGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRF
TkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCAiIFRoaXMgaXMgdGhlIHNlY29u
ZCBzZW50ZW5jZS4iLCAxNSwgNDQpOwotCi0gICAgLyogSXQncyB0cmlja3kgdG8gdGVzdCB0aGVz
ZSBwcm9wZXJseSByaWdodCBub3csIHNpbmNlIG91ciBhMTF5Ci0gICAgICAgaW1wbGVtZW50YXRp
b24gc3BsaXRzIGRpZmZlcmVudCBsaW5lcyBpbiBkaWZmZXJlbnQgYTExeSBpdGVtcy4gKi8KLSAg
ICAvKiBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUICovCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBh
IHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIs
IDAsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5EICovCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwg
IlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRo
ZSB0aGlyZC4iLCAwLCA2NCk7Ci0KLSAgICAvKiBGb3Igb2JqZWN0cyBpbXBsZW1lbnRpbmcgQXRr
RWRpdGFibGVUZXh0LCB0cnkgdG8gY2hhbmdlIHRoZQotICAgICAgIGV4cG9zZWQgdGV4dCBhbmQg
cmV0cmlldmUgaXQgYWdhaW4gYXMgYSBmdWxsIGxpbmUuCi0gICAgICAgKHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI4MzApICovCi0gICAgaWYgKEFUS19JU19F
RElUQUJMRV9URVhUKHRleHRPYmplY3QpKSB7Ci0gICAgICAgIGF0a19lZGl0YWJsZV90ZXh0X3Nl
dF90ZXh0X2NvbnRlbnRzKEFUS19FRElUQUJMRV9URVhUKHRleHRPYmplY3QpLCAiZm9vIGJhciBi
YXoiKTsKLSAgICAgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsICJmb28g
YmFyIGJheiIsIDAsIDExKTsKLSAgICAgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5E
LCAwLCAiZm9vIGJhciBiYXoiLCAwLCAxMSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3Rf
cmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAw
LCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdl
YlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdl
YlZpZXcsIGNvbnRlbnRzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRr
VGV4dCBvYmplY3QuICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0
KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7
Ci0KLSAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fz
c2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4
dE9iamVjdCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihvYmplY3QpOwotICAgIGdfb2JqZWN0X3Vu
cmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zm
c2V0TmV3bGluZXMoKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJW
aWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07
Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxv
Y2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVu
dHNXaXRoTmV3bGluZXMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtU
ZXh0IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qo
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBvYmplY3QgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsK
LQotICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChvYmplY3QpOwotICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQotICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0
T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZz
ZXRUZXh0YXJlYSgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZp
ZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsK
LSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9j
YXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50
c0luVGV4dGFyZWEsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0
IG9iamVjdC4gKi8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2Vi
Vmlldyk7Ci0gICAgZ19hc3NlcnQob2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KGNo
aWxkKTsKLSAgICBBdGtPYmplY3QqIGdyYW5kY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKGNoaWxkLCAwKTsKLSAgICBnX2Fzc2VydChncmFuZGNoaWxkKTsKLQotICAgIEF0
a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChncmFuZGNoaWxkKTsKLSAgICBnX2Fzc2VydChB
VEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRUZXh0VGVzdHModGV4dE9iamVj
dCk7Ci0KLSAgICBnX29iamVjdF91bnJlZihjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYoZ3Jh
bmRjaGlsZCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQoKQotewotICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsK
LSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9j
YXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRl
KEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRJbnB1dCwgMCwgMCwgMCk7Ci0KLSAg
ICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCog
b2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3Qp
OwotICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRj
aGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdf
YXNzZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhU
KGdyYW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQot
ICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGNo
aWxkKTsKLSAgICBnX29iamVjdF91bnJlZihncmFuZGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJl
Zih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNl
dFdpdGhQcmVmb3JtYXR0ZWRUZXh0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVm
X3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4
MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZp
ZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZp
ZXcsIGNvbnRlbnRzV2l0aFByZWZvcm1hdHRlZFRleHQsIDAsIDAsIDApOwotCi0gICAgQXRrT2Jq
ZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAgIGdfYXNzZXJ0KG9i
amVjdCk7Ci0KLSAgICBBdGtPYmplY3QqIHByZWZvcm1hdHRlZFRleHQgPSBhdGtfb2JqZWN0X3Jl
Zl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX09CSkVD
VChwcmVmb3JtYXR0ZWRUZXh0KSk7Ci0gICAgZ19hc3NlcnQoYXRrX29iamVjdF9nZXRfcm9sZShw
cmVmb3JtYXR0ZWRUZXh0KSA9PSBBVEtfUk9MRV9QQU5FTCk7Ci0gICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQocHJlZm9ybWF0dGVkVGV4dCkpOwotICAgIGNoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRf
dGV4dChBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0LCA9PSwgIlx0XG5cdGZpcnN0IGxpbmVcblx0c2Vjb25kIGxpbmVcblx0XG4iKTsK
LSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBUcnkgcmV0cmlldmluZyBhbGwgdGhlIGxpbmVz
IGluZGljYXRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBvZmZzZXRzIGF0IHRoZSBiZWdpbm5pbmcg
b2YgZWFjaCBvZiB0aGVtLiAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQocHJl
Zm9ybWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMCwgIlx0XG4iLCAwLCAyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0
aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQpLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDIsICJcdGZpcnN0IGxpbmVcbiIsIDIs
IDE0KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhUKHByZWZvcm1hdHRlZFRleHQp
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RB
UlQsIDE0LCAiXHRzZWNvbmQgbGluZVxuIiwgMTQsIDI3KTsKLQotICAgIGdfb2JqZWN0X3VucmVm
KHByZWZvcm1hdHRlZFRleHQpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1z
dGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFNwZWNpYWxDaGFyYWN0
ZXJzKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdl
YmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aFNw
ZWNpYWxDaGFycywgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQg
b2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwYXJhZ3JhcGgg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3Nl
cnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogZXhwZWN0ZWRUZXh0ID0g
Z19zdHJkdXAoIlwzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggXDM0Mlwy
MDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0MFwzMDJc
MjczIik7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHBhcmFn
cmFwaCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sIGV4cGVjdGVkVGV4
dCk7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0
ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCBkb2VzIG5vdCBjcmFzaCBiZWNhdXNlIG9mIG5vdAotICAgICAg
IHByb3Blcmx5IGhhbmRsaW5nIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBVVEYtOCBzdHJpbmcuICov
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChwYXJhZ3JhcGgpLCBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDAsIGV4cGVj
dGVkVGV4dCwgMCwgNTcpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQocGFyYWdy
YXBoKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCwgMCwgZXhwZWN0ZWRUZXh0LCAwLCA1Nyk7Ci0gICAgZ19mcmVlKGV4cGVjdGVkVGV4dCk7
Ci0KLSAgICBBdGtPYmplY3QqIGxpc3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMSk7Ci0gICAgZ19hc3NlcnQoQVRLX09CSkVDVChsaXN0KSk7Ci0KLSAgICBBdGtU
ZXh0KiBsaXN0SXRlbSA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQo
bGlzdCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGxpc3RJdGVtKSk7Ci0KLSAgICB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobGlzdEl0ZW0pLCAwLCAtMSk7Ci0gICAg
Z19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiXDM0MlwyMDBcMjQyIExpc3QgaXRlbSB3aXRoIHNv
bWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuIik7Ci0gICAgZ19mcmVl
KHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5nIHRoZSB0ZXh0IHdpdGggQVRLX1RF
WFRfQk9VTkRBUllfTElORV9TVEFSVAotICAgICAgIGFuZCBBVEtfVEVYVF9CT1VOREFSWV9MSU5F
X0VORCBmb3IgbGluZSBpdGVtcyB3aXRoIGJ1bGxldHMKLSAgICAgICAoc3BlY2lhbCBjaGFyYWN0
ZXIpIGFuZCB3cmFwcGVkIHRleHQgYWx3YXlzIHJldHVybiB0aGUgcmlnaHQKLSAgICAgICBwaWVj
ZSBvZiB0ZXh0IGZvciBlYWNoIGxpbmUuICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtf
VEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gIiwgMCwgMTIpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDEzLCAid2l0aCBz
b21lICIsIDEyLCAyMik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRl
bSksIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9F
TkQsIDAsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtIiwgMCwgMTEpOwotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAxMiwgIiB3aXRoIHNvbWUiLCAxMSwgMjEpOwot
Ci0gICAgZ19vYmplY3RfdW5yZWYobGlzdEl0ZW0pOwotCi0gICAgbGlzdEl0ZW0gPSBBVEtfVEVY
VChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGxpc3QsIDEpKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBwbGFjaW5nIHRo
ZSBzYW1lIHRleHQgaW4gYSBwYXJhZ3JhcGggZG9lc24ndCBicmVhayB0aGluZ3MuICovCi0gICAg
dGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBz
b21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJl
ZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQs
IDMsICJcMzQyXDIwMFwyNDIgTGlzdCBpdGVtICIsIDAsIDEyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKEFUS19URVhUKGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJULCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAwLCAiXDM0MlwyMDBc
MjQyIExpc3QgaXRlbSIsIDAsIDExKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKEFUS19URVhU
KGxpc3RJdGVtKSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9MSU5FX0VORCwgMTIsICIgd2l0aCBzb21lIiwgMTEsIDIxKTsKLQotICAgIGdfb2JqZWN0X3Vu
cmVmKGxpc3QpOwotICAgIGdfb2JqZWN0X3VucmVmKGxpc3RJdGVtKTsKLSAgICBnX29iamVjdF91
bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcygpCi17
Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2Vi
X3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0Fs
bG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0
X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhXcmFwcGVkTGlu
ZXMsIDAsIDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4g
Ki8KLSAgICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0g
ICAgZ19hc3NlcnQob2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0
aGUgdGV4dCB3cmFwcGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBh
cmFncmFwaDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVj
dCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKLQotICAgIGdj
aGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMSwgMCwgLTEpOwotICAgIGdf
YXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNl
IG9mIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuIik7Ci0gICAgZ19mcmVlKHRl
eHQpOwotCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRf
dGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgImUiLCAxNSwg
MTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3Rl
eHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgIiAiLCAxNiwgMTcpOwot
ICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0
ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAxNiwgInciLCAxNywgMTgpOwotCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZv
cmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAxNiwgIm9uZSAiLCA4LCAx
Mik7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDE2LCAibGluZSAiLCAx
MiwgMTcpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAxNiwgIndy
YXBwZWQgIiwgMTcsIDI1KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwg
YXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9F
TkQsIDE2LCAiIGxpbmUiLCAxMSwgMTYpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JE
X0VORCwgMTYsICIgd3JhcHBlZCIsIDE2LCAyNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihw
YXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1dPUkRfRU5ELCAxNiwgIiBiZWNhdXNlIiwgMjQsIDMyKTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMTcsICJUaGlzIGlzIG9uZSBsaW5lICIsIDAsIDE3
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgMTcsICJ3cmFwcGVkIGJl
Y2F1c2UgIiwgMTcsIDMzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0
a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFS
VCwgMTcsICJvZiB0aGUgbWF4aW11bSAiLCAzMywgNDgpOwotCi0gICAgdGVzdEdldFRleHRGdW5j
dGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCwgMTcsICJUaGlzIGlzIG9uZSBsaW5lIiwgMCwgMTYpOwotICAg
IHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMSwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMTcsICIgd3JhcHBlZCBiZWNhdXNlIiwg
MTYsIDMyKTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dl
dF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDE3LCAiIG9m
IHRoZSBtYXhpbXVtIiwgMzIsIDQ3KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaDEp
OwotCi0gICAgLyogQ2hlY2sgdGhlIHBhcmFncmFwaCB3aXRoIHRoZSB0ZXh0IHdyYXBwZWQgYmVj
YXVzZSBvZiA8YnI+IGVsZW1lbnRzLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaDIgPSBBVEtf
VEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSkpOwotICAgIGdf
YXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDIpKTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9n
ZXRfdGV4dChwYXJhZ3JhcGgyLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09
LCAiVGhpcyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZFxuYmVjYXVzZSBvZiBvbmUgZm9yY2VkXG5s
aW5lIGJyZWFrIGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zm
c2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAyOCwgImQiLCAyNywgMjgpOwotICAgIHRlc3RH
ZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9DSEFSLCAyOCwgIlxuIiwgMjgsIDI5KTsKLSAgICB0ZXN0R2V0VGV4
dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfQ0hBUiwgMjgsICJiIiwgMjksIDMwKTsKLQotICAgIHRlc3RHZXRUZXh0
RnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMjgsICJsaW5lICIsIDE2LCAyMSk7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsIDI4LCAid3JhcHBlZFxuIiwgMjEsIDI5KTsK
LSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2Fm
dGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMjgsICJiZWNhdXNlICIs
IDI5LCAzNyk7Ci0KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELCAyOCwg
IiB3cmFwcGVkIiwgMjAsIDI4KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaDIs
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQs
IDI4LCAiXG5iZWNhdXNlIiwgMjgsIDM2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFn
cmFwaDIsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllf
V09SRF9FTkQsIDI4LCAiIG9mIiwgMzYsIDM5KTsKLQotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9V
TkRBUllfTElORV9TVEFSVCwgMzAsICJUaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkXG4iLCAw
LCAyOSk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRf
dGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsIDMwLCAiYmVjYXVz
ZSBvZiBvbmUgZm9yY2VkXG4iLCAyOSwgNTEpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9MSU5FX1NUQVJULCAzMCwgImxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iLCA1MSwgNzYpOwot
Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9i
ZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCwgMzAsICJUaGlzIGlzIGFu
b3RoZXIgbGluZSB3cmFwcGVkIiwgMCwgMjgpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFy
YWdyYXBoMiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9M
SU5FX0VORCwgMzAsICJcbmJlY2F1c2Ugb2Ygb25lIGZvcmNlZCIsIDI4LCA1MCk7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZz
ZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELCAzMCwgIlxubGluZSBicmVhayBpbiB0aGUg
bWlkZGxlLiIsIDUwLCA3Nik7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgyKTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cygpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwot
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Nh
dGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUo
R1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhFbWJlZGRlZE9iamVjdHMsIDAsIDAsIDAp
OwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAgICBBdGtP
YmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19hc3NlcnQo
b2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4dCB3cmFw
cGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFwaCA9IEFU
S19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKSk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogdGV4dCA9IGF0
a190ZXh0X2dldF90ZXh0KHBhcmFncmFwaCwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0
ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gXDM1N1wyNzdcMjc0IGVt
YmVkZGVkIG9iamVjdHMgXDM1N1wyNzdcMjc0IGluIHRoZSBtaWRkbGUuIik7Ci0gICAgZ19mcmVl
KHRleHQpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBmaXJzdCBlbWJlZGRlZCBv
YmplY3QgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0
X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCAzMiwgIlwzNTdcMjc3XDI3
NCIsIDMyLCAzMyk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0
X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwgMzIsICJ0
d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJh
Z3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09S
RF9FTkQsIDMyLCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAgICAvKiBD
aGVjayByaWdodCBhZnRlciB0aGUgZmlyc3QgZW1iZWRkZWQgb2JqZWN0IChhbmQgYmVmb3JlIHRo
ZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIs
IDMzLCAiICIsIDMzLCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0
a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwg
MzMsICJ0d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlv
bihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfV09SRF9FTkQsIDMzLCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAg
ICAvKiBDaGVjayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhl
IHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwg
MzQsICJlIiwgMzQsIDM1KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRr
X3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCAz
NCwgImVtYmVkZGVkICIsIDM0LCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9F
TkQsIDM0LCAiIFwzNTdcMjc3XDI3NCBlbWJlZGRlZCIsIDMxLCA0Mik7Ci0KLSAgICAvKiBDaGVj
ayBhdCB0aGUgZW5kIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3byBlbWJlZGRlZCBv
YmplY3RzICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNDIsICIgIiwgNDIsIDQz
KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA0MiwgImVtYmVkZGVkICIs
IDM0LCA0Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDQyLCAiIG9iamVj
dHMiLCA0MiwgNTApOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBzZWNvbmQgZW1i
ZWRkZWQgb2JqZWN0ICovCi0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190
ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTEsICJcMzU3
XDI3N1wyNzQiLCA1MSwgNTIpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQs
IDUxLCAib2JqZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMsIDUzKTsKLSAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9C
T1VOREFSWV9XT1JEX0VORCwgNTEsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAg
IC8qIENoZWNrIHJpZ2h0IGFmdGVyIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2JqZWN0IChhbmQgYmVm
b3JlIHRoZSBmaXJzdCB3b3JkIGFmdGVyIGl0KSAqLwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24o
cGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X0NIQVIsIDUyLCAiICIsIDUyLCA1Myk7Ci0gICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3Jh
cGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9T
VEFSVCwgNTIsICJvYmplY3RzIFwzNTdcMjc3XDI3NCAiLCA0MywgNTMpOwotICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX1dPUkRfRU5ELCA1MiwgIiBcMzU3XDI3N1wyNzQgaW4iLCA1MCwgNTUpOwot
Ci0gICAgLyogQ2hlY2sgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3Qgd29yZCBhZnRlciB0
aGUgdHdvIGVtYmVkZGVkIG9iamVjdHMgKi8KLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFS
LCA1MywgImkiLCA1MywgNTQpOwotICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24ocGFyYWdyYXBoLCBh
dGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQs
IDUzLCAiaW4gIiwgNTMsIDU2KTsKLSAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwg
YXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwg
NTMsICIgXDM1N1wyNzdcMjc0IGluIiwgNTAsIDU1KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBl
bmQgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0g
ICAgdGVzdEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwgNTUsICIgIiwgNTUsIDU2KTsKLSAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCA1NSwgImluICIsIDUzLCA1Nik7Ci0gICAgdGVz
dEdldFRleHRGdW5jdGlvbihwYXJhZ3JhcGgsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsIDU1LCAiIHRoZSIsIDU1LCA1OSk7Ci0KLSAgICBn
X29iamVjdF91bnJlZihwYXJhZ3JhcGgpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwot
fQotCiAjZWxzZSAvLyAhQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTAsIDApCiAKIHR5cGVkZWYgZ2No
YXIqICgqQXRrR2V0U3RyaW5nRnVuY3Rpb24pIChBdGtUZXh0KiwgZ2ludCwgQXRrVGV4dEdyYW51
bGFyaXR5LCBnaW50KiwgZ2ludCopOwpAQCAtMTE0MCwzMzkgKzYxNSw2IEBAIHN0YXRpYyB2b2lk
IHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBdGtUZXh0KiB0ZXh0T2JqZWN0LCBBdGtHZXRTdHJpbmdG
dW5jdGlvbiBmbiwKICAgICBnX2ZyZWUodGV4dCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkdldFN0
cmluZ1Rlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCi17Ci0gICAgY2hhciogdGV4dCA9IGF0a190
ZXh0X2dldF90ZXh0KHRleHRPYmplY3QsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4
dCwgPT0sICJUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQg
dGhpcyB0aGUgdGhpcmQuIik7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQVRLX1RFWFRf
R1JBTlVMQVJJVFlfQ0hBUiAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hB
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUIiwgMCwgMSk7Ci0KLSAgICAvKiBBVEtf
VEVYVF9HUkFOVUxBUklUWV9XT1JEICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9XT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgIiwgMCwgNSk7Ci0KLSAg
ICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICA0LCAiVGhpcyAiLCAwLCA1KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJ
VFlfV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsK
LQotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDU4LCAidGhpcmQuIiwgNTgsIDY0KTsKLQotICAgIHRlc3RHZXRTdHJpbmdGdW5j
dGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRf
R1JBTlVMQVJJVFlfV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDY0LCAidGhpcmQuIiwg
NTgsIDY0KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZX1NFTlRFTkNFICovCi0gICAg
dGVzdEdldFN0cmluZ0Z1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRf
b2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4gIiwgMCwgMTYpOwotCi0gICAgdGVzdEdldFN0cmlu
Z0Z1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtf
VEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAi
VGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKLQotICAgIC8qIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0xJTkUgKi8KLSAgICAvKiBJdCdzIHRyaWNreSB0byB0ZXN0IHRoZXNlIHByb3Blcmx5IHJpZ2h0
IG5vdywgc2luY2Ugb3VyIGExMXkKLSAgICAgICBpbXBsZW1lbnRhdGlvbiBzcGxpdHMgZGlmZmVy
ZW50IGxpbmVzIGluIGRpZmZlcmVudCBhMTF5IGl0ZW1zLiAqLwotICAgIHRlc3RHZXRTdHJpbmdG
dW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RF
WFRfR1JBTlVMQVJJVFlfTElORSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlz
IGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQu
IiwgMCwgNjQpOwotCi0gICAgLyogRm9yIG9iamVjdHMgaW1wbGVtZW50aW5nIEF0a0VkaXRhYmxl
VGV4dCwgdHJ5IHRvIGNoYW5nZSB0aGUKLSAgICAgICBleHBvc2VkIHRleHQgYW5kIHJldHJpZXZl
IGl0IGFnYWluIGFzIGEgZnVsbCBsaW5lLgotICAgICAgIChzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODMwKSAqLwotICAgIGlmIChBVEtfSVNfRURJVEFCTEVf
VEVYVCh0ZXh0T2JqZWN0KSkgewotICAgICAgICBhdGtfZWRpdGFibGVfdGV4dF9zZXRfdGV4dF9j
b250ZW50cyhBVEtfRURJVEFCTEVfVEVYVCh0ZXh0T2JqZWN0KSwgImZvbyBiYXIgYmF6Iik7Ci0g
ICAgICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMCwgImZvbyBiYXIgYmF6
IiwgMCwgMTEpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmlu
Z0F0T2Zmc2V0KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9Owot
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRz
LCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICov
Ci0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwotICAg
IGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtUZXh0
KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVY
VCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsKLQot
ICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldE5ld2xpbmVz
KCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAg
R3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193
aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aE5ld2xp
bmVzLCAwLCAwLCAwKTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3Qu
ICovCi0gICAgQXRrT2JqZWN0KiBvYmplY3QgPSBnZXRXZWJBcmVhT2JqZWN0KHdlYlZpZXcpOwot
ICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0gICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KG9iamVjdCk7Ci0KLSAgICBBdGtU
ZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKLSAgICBnX2Fzc2VydChBVEtfSVNf
VEVYVCh0ZXh0T2JqZWN0KSk7Ci0KLSAgICBydW5HZXRTdHJpbmdUZXN0cyh0ZXh0T2JqZWN0KTsK
LQotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmll
dyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFRleHRh
cmVhKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdl
YmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzSW5UZXh0
YXJlYSwgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0
LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsK
LSAgICBnX2Fzc2VydChvYmplY3QpOwotICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwot
ICAgIEF0a09iamVjdCogZ3JhbmRjaGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hp
bGQoY2hpbGQsIDApOwotICAgIGdfYXNzZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCog
dGV4dE9iamVjdCA9IEFUS19URVhUKGdyYW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKHRleHRPYmplY3QpKTsKLQotICAgIHJ1bkdldFN0cmluZ1Rlc3RzKHRleHRPYmplY3QpOwot
Ci0gICAgZ19vYmplY3RfdW5yZWYoY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hp
bGQpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRUZXh0SW5wdXQoKQotewotICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAg
ICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRp
b24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdU
S19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRleHRJbnB1dCwgMCwgMCwgMCk7Ci0KLSAgICAv
KiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2Jq
ZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwot
ICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9i
amVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRjaGls
ZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdfYXNz
ZXJ0KGdyYW5kY2hpbGQpOwotCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhUKGdy
YW5kY2hpbGQpOwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKLQotICAg
IHJ1bkdldFN0cmluZ1Rlc3RzKHRleHRPYmplY3QpOwotCi0gICAgZ19vYmplY3RfdW5yZWYoY2hp
bGQpOwotICAgIGdfb2JqZWN0X3VucmVmKGdyYW5kY2hpbGQpOwotICAgIGdfb2JqZWN0X3VucmVm
KHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZz
ZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCgpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwotICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwg
ODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJW
aWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJW
aWV3LCBjb250ZW50c1dpdGhQcmVmb3JtYXR0ZWRUZXh0LCAwLCAwLCAwKTsKLQotICAgIEF0a09i
amVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChv
YmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwcmVmb3JtYXR0ZWRUZXh0ID0gYXRrX29iamVjdF9y
ZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KEFUS19JU19PQkpF
Q1QocHJlZm9ybWF0dGVkVGV4dCkpOwotICAgIGdfYXNzZXJ0KGF0a19vYmplY3RfZ2V0X3JvbGUo
cHJlZm9ybWF0dGVkVGV4dCkgPT0gQVRLX1JPTEVfUEFORUwpOwotICAgIGdfYXNzZXJ0KEFUS19J
U19URVhUKHByZWZvcm1hdHRlZFRleHQpKTsKLSAgICBjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0
X3RleHQoQVRLX1RFWFQocHJlZm9ybWF0dGVkVGV4dCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIodGV4dCwgPT0sICJcdFxuXHRmaXJzdCBsaW5lXG5cdHNlY29uZCBsaW5lXG5cdFxuIik7
Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogVHJ5IHJldHJpZXZpbmcgYWxsIHRoZSBsaW5l
cyBpbmRpY2F0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgb2Zmc2V0cyBhdCB0aGUgYmVnaW5uaW5n
IG9mIGVhY2ggb2YgdGhlbS4gKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQo
cHJlZm9ybWF0dGVkVGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9HUkFOVUxBUklUWV9MSU5FLCAwLCAiXHRcbiIsIDAsIDIpOwotICAgIHRlc3RHZXRTdHJpbmdG
dW5jdGlvbihBVEtfVEVYVChwcmVmb3JtYXR0ZWRUZXh0KSwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJTkUsIDIsICJcdGZpcnN0IGxpbmVcbiIs
IDIsIDE0KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24oQVRLX1RFWFQocHJlZm9ybWF0dGVk
VGV4dCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklU
WV9MSU5FLCAxNCwgIlx0c2Vjb25kIGxpbmVcbiIsIDE0LCAyNyk7Ci0KLSAgICBnX29iamVjdF91
bnJlZihwcmVmb3JtYXR0ZWRUZXh0KTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0K
LQotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFNwZWNpYWxD
aGFyYWN0ZXJzKCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9Owot
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2Nh
dGlvbik7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRz
V2l0aFNwZWNpYWxDaGFycywgMCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0
a1RleHQgb2JqZWN0LiAqLwotICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVj
dCh3ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChvYmplY3QpOwotCi0gICAgQXRrT2JqZWN0KiBwYXJh
Z3JhcGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7Ci0gICAg
Z19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7Ci0KLSAgICBnY2hhciogZXhwZWN0ZWRU
ZXh0ID0gZ19zdHJkdXAoIlwzMDJcMjUzXDMwMlwyNDBUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGgg
XDM0MlwyMDBcMjM0c3BlY2lhbFwzNDJcMjAwXDIzNSBjaGFyYWN0ZXJzIGluc2lkZS5cMzAyXDI0
MFwzMDJcMjczIik7Ci0gICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhU
KHBhcmFncmFwaCksIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sIGV4cGVj
dGVkVGV4dCk7Ci0gICAgZ19mcmVlKHRleHQpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBnZXR0aW5n
IHRoZSB0ZXh0IHdpdGggQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCBkb2VzIG5vdCBjcmFz
aAotICAgICAgIGJlY2F1c2Ugb2Ygbm90IHByb3Blcmx5IGhhbmRsaW5nIGNoYXJhY3RlcnMgaW5z
aWRlIHRoZSBVVEYtOCBzdHJpbmcuICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19U
RVhUKHBhcmFncmFwaCksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9H
UkFOVUxBUklUWV9MSU5FLCAwLCBleHBlY3RlZFRleHQsIDAsIDU3KTsKLSAgICBnX2ZyZWUoZXhw
ZWN0ZWRUZXh0KTsKLQotICAgIEF0a09iamVjdCogbGlzdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vz
c2libGVfY2hpbGQob2JqZWN0LCAxKTsKLSAgICBnX2Fzc2VydChBVEtfT0JKRUNUKGxpc3QpKTsK
LQotICAgIEF0a1RleHQqIGxpc3RJdGVtID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChsaXN0LCAwKSk7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobGlzdEl0ZW0p
KTsKLQotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChsaXN0SXRlbSksIDAs
IC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJcMzQyXDIwMFwyNDIgTGlzdCBp
dGVtIHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4iKTsK
LSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBDaGVjayB0aGF0IGdldHRpbmcgdGhlIHRleHQg
d2l0aCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NUQVJUCi0gICAgICAgYW5kIEFUS19URVhUX0JP
VU5EQVJZX0xJTkVfRU5EIGZvciBsaW5lIGl0ZW1zIHdpdGggYnVsbGV0cwotICAgICAgIChzcGVj
aWFsIGNoYXJhY3RlcikgYW5kIHdyYXBwZWQgdGV4dCBhbHdheXMgcmV0dXJuIHRoZSByaWdodAot
ICAgICAgIHBpZWNlIG9mIHRleHQgZm9yIGVhY2ggbGluZS4gKi8KLSAgICB0ZXN0R2V0U3RyaW5n
RnVuY3Rpb24oQVRLX1RFWFQobGlzdEl0ZW0pLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNl
dCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMywgIlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0g
IiwgMCwgMTIpOwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSks
IGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5F
LCAxMywgIndpdGggc29tZSAiLCAxMiwgMjIpOwotCi0gICAgZ19vYmplY3RfdW5yZWYobGlzdEl0
ZW0pOwotCi0gICAgbGlzdEl0ZW0gPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxl
X2NoaWxkKGxpc3QsIDEpKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwot
Ci0gICAgLyogQ2hlY2sgdGhhdCBwbGFjaW5nIHRoZSBzYW1lIHRleHQgaW4gYSBwYXJhZ3JhcGgg
ZG9lc24ndCBicmVhayB0aGluZ3MuICovCi0gICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFU
S19URVhUKGxpc3RJdGVtKSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwg
IlwzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gd2l0aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3Mg
ZGlmZmVyZW50IGxpbmVzLiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKLQotICAgIHRlc3RHZXRTdHJp
bmdGdW5jdGlvbihBVEtfVEVYVChsaXN0SXRlbSksIGF0a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zm
c2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAzLCAiXDM0MlwyMDBcMjQyIExpc3QgaXRl
bSAiLCAwLCAxMik7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKEFUS19URVhUKGxpc3RJdGVt
KSwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0xJ
TkUsIDEzLCAid2l0aCBzb21lICIsIDEyLCAyMik7Ci0KLSAgICBnX29iamVjdF91bnJlZihsaXN0
KTsKLSAgICBnX29iamVjdF91bnJlZihsaXN0SXRlbSk7Ci0gICAgZ19vYmplY3RfdW5yZWYocGFy
YWdyYXBoKTsKLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQg
dGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0V2l0aFdyYXBwZWRMaW5lcygpCi17Ci0gICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdf
bmV3KCkpOwotICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRp
b24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVf
YWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhXcmFwcGVkTGluZXMsIDAs
IDAsIDApOwotCi0gICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KLSAg
ICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7Ci0gICAgZ19h
c3NlcnQob2JqZWN0KTsKLQotICAgIC8qIENoZWNrIHRoZSBwYXJhZ3JhcGggd2l0aCB0aGUgdGV4
dCB3cmFwcGVkIGJlY2F1c2Ugb2YgbWF4LXdpZHRoLiAqLwotICAgIEF0a1RleHQqIHBhcmFncmFw
aDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkp
OwotICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKLQotICAgIGdjaGFyKiB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoMSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRo
ZSBtYXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuIik7Ci0gICAgZ19mcmVlKHRleHQpOwot
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dldF9zdHJp
bmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAxNiwgIiAiLCAxNiwgMTcp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgxLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgMTYsICJsaW5lICIsIDEy
LCAxNyk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaDEsIGF0a190ZXh0X2dl
dF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FLCAxNywgIndyYXBw
ZWQgYmVjYXVzZSAiLCAxNywgMzMpOwotCi0gICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoMSk7
Ci0KLSAgICAvKiBDaGVjayB0aGUgcGFyYWdyYXBoIHdpdGggdGhlIHRleHQgd3JhcHBlZCBiZWNh
dXNlIG9mIDxicj4gZWxlbWVudHMuICovCi0gICAgQXRrVGV4dCogcGFyYWdyYXBoMiA9IEFUS19U
RVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAxKSk7Ci0gICAgZ19h
c3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoMikpOwotCi0gICAgdGV4dCA9IGF0a190ZXh0X2dl
dF90ZXh0KHBhcmFncmFwaDIsIDAsIC0xKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0s
ICJUaGlzIGlzIGFub3RoZXIgbGluZSB3cmFwcGVkXG5iZWNhdXNlIG9mIG9uZSBmb3JjZWRcbmxp
bmUgYnJlYWsgaW4gdGhlIG1pZGRsZS4iKTsKLSAgICBnX2ZyZWUodGV4dCk7Ci0KLSAgICB0ZXN0
R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoMiwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZz
ZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDI4LCAiXG4iLCAyOCwgMjkpOwotICAgIHRl
c3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29m
ZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgMjgsICJ3cmFwcGVkXG4iLCAyMSwgMjkp
OwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgyLCBhdGtfdGV4dF9nZXRfc3Ry
aW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORSwgMzAsICJiZWNhdXNlIG9m
IG9uZSBmb3JjZWRcbiIsIDI5LCA1MSk7Ci0KLSAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgy
KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKCkKLXsKLSAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlv
biBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9h
bGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci0gICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzV2l0aEVtYmVkZGVkT2JqZWN0cywg
MCwgMCwgMCk7Ci0KLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwot
ICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKLSAgICBn
X2Fzc2VydChvYmplY3QpOwotCi0gICAgLyogQ2hlY2sgdGhlIHBhcmFncmFwaCB3aXRoIHRoZSB0
ZXh0IHdyYXBwZWQgYmVjYXVzZSBvZiBtYXgtd2lkdGguICovCi0gICAgQXRrVGV4dCogcGFyYWdy
YXBoID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDAp
KTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgpKTsKLQotICAgIGdjaGFyKiB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQocGFyYWdyYXBoLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRf
Y21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBvbmUgbGluZSBjb250YWluaW5nIHR3byBcMzU3XDI3
N1wyNzQgZW1iZWRkZWQgb2JqZWN0cyBcMzU3XDI3N1wyNzQgaW4gdGhlIG1pZGRsZS4iKTsKLSAg
ICBnX2ZyZWUodGV4dCk7Ci0KLSAgICAvKiBDaGVjayByaWdodCBiZWZvcmUgdGhlIGZpcnN0IGVt
YmVkZGVkIG9iamVjdCAqLwotICAgIHRlc3RHZXRTdHJpbmdGdW5jdGlvbihwYXJhZ3JhcGgsIGF0
a190ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0LCBBVEtfVEVYVF9HUkFOVUxBUklUWV9DSEFSLCAz
MiwgIlwzNTdcMjc3XDI3NCIsIDMyLCAzMyk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBh
cmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFS
SVRZX1dPUkQsIDMyLCAidHdvIFwzNTdcMjc3XDI3NCAiLCAyOCwgMzQpOwotCi0gICAgLyogQ2hl
Y2sgcmlnaHQgYWZ0ZXIgdGhlIGZpcnN0IGVtYmVkZGVkIG9iamVjdCAoYW5kIGJlZm9yZSB0aGUg
Zmlyc3Qgd29yZCBhZnRlciBpdCkgKi8KLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlf
Q0hBUiwgMzMsICIgIiwgMzMsIDM0KTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdy
YXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlf
V09SRCwgMzMsICJ0d28gXDM1N1wyNzdcMjc0ICIsIDI4LCAzNCk7Ci0KLSAgICAvKiBDaGVjayBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCB3b3JkIGJldHdlZW4gdGhlIHR3byBlbWJlZGRl
ZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDM0LCAi
ZSIsIDM0LCAzNSk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDM0LCAi
ZW1iZWRkZWQgIiwgMzQsIDQzKTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIGZp
cnN0IHdvcmQgYmV0d2VlbiB0aGUgdHdvIGVtYmVkZGVkIG9iamVjdHMgKi8KLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwg
QVRLX1RFWFRfR1JBTlVMQVJJVFlfQ0hBUiwgNDIsICIgIiwgNDIsIDQzKTsKLSAgICB0ZXN0R2V0
U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldCwg
QVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgNDIsICJlbWJlZGRlZCAiLCAzNCwgNDMpOwotCi0g
ICAgLyogQ2hlY2sgcmlnaHQgYmVmb3JlIHRoZSBzZWNvbmQgZW1iZWRkZWQgb2JqZWN0ICovCi0g
ICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19h
dF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUxLCAiXDM1N1wyNzdcMjc0Iiwg
NTEsIDUyKTsKLSAgICB0ZXN0R2V0U3RyaW5nRnVuY3Rpb24ocGFyYWdyYXBoLCBhdGtfdGV4dF9n
ZXRfc3RyaW5nX2F0X29mZnNldCwgQVRLX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgNTEsICJvYmpl
Y3RzIFwzNTdcMjc3XDI3NCAiLCA0MywgNTMpOwotCi0gICAgLyogQ2hlY2sgcmlnaHQgYWZ0ZXIg
dGhlIHNlY29uZCBlbWJlZGRlZCBvYmplY3QgKGFuZCBiZWZvcmUgdGhlIGZpcnN0IHdvcmQgYWZ0
ZXIgaXQpICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUyLCAiICIs
IDUyLCA1Myk7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRf
Z2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUyLCAib2Jq
ZWN0cyBcMzU3XDI3N1wyNzQgIiwgNDMsIDUzKTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhlIHR3byBlbWJlZGRlZCBvYmplY3RzICov
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVIsIDUzLCAiaSIsIDUzLCA1NCk7
Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFncmFwaCwgYXRrX3RleHRfZ2V0X3N0cmlu
Z19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZX1dPUkQsIDUzLCAiaW4gIiwgNTMsIDU2
KTsKLQotICAgIC8qIENoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIGZpcnN0IHdvcmQgYWZ0ZXIgdGhl
IHR3byBlbWJlZGRlZCBvYmplY3RzICovCi0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X0NIQVIsIDU1LCAiICIsIDU1LCA1Nik7Ci0gICAgdGVzdEdldFN0cmluZ0Z1bmN0aW9uKHBhcmFn
cmFwaCwgYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQsIEFUS19URVhUX0dSQU5VTEFSSVRZ
X1dPUkQsIDU1LCAiaW4gIiwgNTMsIDU2KTsKLQotICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFw
aCk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19CiAjZW5kaWYgLy8gIUFUS19DSEVD
S19WRVJTSU9OKDIsIDEwLCAwKQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dElu
UGFyYWdyYXBoQW5kQm9keVNpbXBsZSgpCkBAIC0yNTk2LDI1ICsxNzM4LDYgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsv
Y29tYm9Cb3giLCB0ZXN0V2Via2l0QXRrQ29tYm9Cb3gpOwogICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdC9hdGsvZG9jdW1lbnRMb2FkaW5nRXZlbnRzIiwgdGVzdFdlYmtpdEF0a0RvY3VtZW50
TG9hZGluZ0V2ZW50cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9lbWJlZGRl
ZE9iamVjdHMiLCB0ZXN0V2Via2l0QXRrRW1iZWRkZWRPYmplY3RzKTsKLSNpZiAhQVRLX0NIRUNL
X1ZFUlNJT04oMiwgMTAsIDApCi0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRU
ZXh0QXRPZmZzZXQiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRBdE9mZnNldE5ld2xpbmVzIiwgdGVzdFdlYmtp
dEF0a0dldFRleHRBdE9mZnNldE5ld2xpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQvYXRrL2dldFRleHRBdE9mZnNldFRleHRhcmVhIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9m
ZnNldFRleHRhcmVhKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFRleHRB
dE9mZnNldFRleHRJbnB1dCIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0SW5wdXQp
OwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0V2l0aFBy
ZWZvcm1hdHRlZFRleHQiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0V2l0aFByZWZvcm1h
dHRlZFRleHQpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zm
c2V0V2l0aFNwZWNpYWxDaGFyYWN0ZXJzIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFdp
dGhTcGVjaWFsQ2hhcmFjdGVycyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9n
ZXRUZXh0QXRPZmZzZXRXaXRoV3JhcHBlZExpbmVzIiwgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9m
ZnNldFdpdGhXcmFwcGVkTGluZXMpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsv
Z2V0VGV4dEF0T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cyIsIHRlc3RXZWJraXRBdGtHZXRUZXh0
QXRPZmZzZXRXaXRoRW1iZWRkZWRPYmplY3RzKTsKLSNlbHNlCi0gICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldCIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdB
dE9mZnNldCk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9m
ZnNldE5ld2xpbmVzIiwgdGVzdFdlYmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0TmV3bGluZXMpOwot
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0U3RyaW5nQXRPZmZzZXRUZXh0YXJl
YSIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFRleHRhcmVhKTsKLSAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0VGV4dElucHV0IiwgdGVzdFdl
YmtpdEF0a0dldFN0cmluZ0F0T2Zmc2V0VGV4dElucHV0KTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvYXRrL2dldFN0cmluZ0F0T2Zmc2V0V2l0aFByZWZvcm1hdHRlZFRleHQiLCB0ZXN0
V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoUHJlZm9ybWF0dGVkVGV4dCk7Ci0gICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hh
cmFjdGVycyIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNldFdpdGhTcGVjaWFsQ2hhcmFj
dGVycyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRTdHJpbmdBdE9mZnNl
dFdpdGhXcmFwcGVkTGluZXMiLCB0ZXN0V2Via2l0QXRrR2V0U3RyaW5nQXRPZmZzZXRXaXRoV3Jh
cHBlZExpbmVzKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldFN0cmluZ0F0
T2Zmc2V0V2l0aEVtYmVkZGVkT2JqZWN0cyIsIHRlc3RXZWJraXRBdGtHZXRTdHJpbmdBdE9mZnNl
dFdpdGhFbWJlZGRlZE9iamVjdHMpOwotI2VuZGlmCiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Vi
a2l0L2F0ay9nZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlIiwgdGVzdFdlYmtpdEF0a0dl
dFRleHRJblBhcmFncmFwaEFuZEJvZHlTaW1wbGUpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdC9hdGsvZ2V0VGV4dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlIiwgdGVzdFdlYmtpdEF0
a0dldFRleHRJblBhcmFncmFwaEFuZEJvZHlNb2RlcmF0ZSk7CiAgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L2F0ay9nZXRUZXh0SW5UYWJsZSIsIHRlc3RXZWJraXRBdGtHZXRUZXh0SW5UYWJs
ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MWUwNjk1Y2ZkZDMxMGExNjhlMTcxYTdkOGFlYjJiMDlmMTgxZDIyMC4uMjJmMmI1MTFjNmQ2YmZh
ZDQyNTYzODU1MGFkZDg3MTg0M2VlNGIxZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEyLTA5ICBKb2FubWFy
aWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBBWDogW0FUS10gQ29udmVy
dCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRv
IGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlIHRoZSBuZWVkZWQgY2FsbGJhY2tzIGZvciBEUlQgYW5kIFdLVFIuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKGNoYXJhY3RlckF0T2Zmc2V0Q2FsbGJhY2spOiBhZGRlZAorICAgICAgICAod29yZEF0T2Zm
c2V0Q2FsbGJhY2spOiBhZGRlZAorICAgICAgICAobGluZUF0T2Zmc2V0Q2FsbGJhY2spOiBhZGRl
ZAorICAgICAgICAoc2VudGVuY2VBdE9mZnNldENhbGxiYWNrKTogYWRkZWQKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChzdHJpbmdBdE9mZnNl
dCk6IGFkZGVkCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9m
ZnNldCk6IGFkZGVkCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZz
ZXQpOiBhZGRlZAorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0
KTogYWRkZWQKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZz
ZXQpOiBhZGRlZAorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KTogYWRkZWQKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VBdE9mZnNldCk6IGFkZGVkCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdU
Ujo6c3RyaW5nQXRPZmZzZXQpOiBhZGRlZAorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldCk6IGFkZGVkCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQpOiBhZGRlZAorCiAyMDEzLTEy
LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NvY29hXSBDb252
ZXJ0IGEgZmV3IG1vcmUgcGFydHMgb2YgTWluaUJyb3dzZXIgb3ZlciB0byB0aGUgT2JqZWN0aXZl
LUMgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwCmluZGV4IDMyN2I5ODhjZWY1ODdjYjU4ZmFiZGFjNTUyOWNmODU5M2QzMDM3NjguLmM0Mzc4
NWY3ZTEzYmZmNzU5OTg2YzQ5YjViZTZlYjcxZDZmMTAzMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0xMTAzLDcgKzExMDMsNDgg
QEAgc3RhdGljIEpTVmFsdWVSZWYgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpCitzdGF0aWMgSlNWYWx1ZVJlZiBjaGFyYWN0ZXJBdE9mZnNldENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRv
TnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBjaGFyYWN0ZXJBdE9mZnNldChBZG9wdCwgdG9BWEVsZW1lbnQodGhp
c09iamVjdCktPmNoYXJhY3RlckF0T2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVN0cmluZyhjb250ZXh0LCBjaGFyYWN0ZXJBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHdvcmRBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0g
MSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB3b3JkQXRPZmZz
ZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT53b3JkQXRPZmZzZXQob2Zmc2V0KSk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHdvcmRBdE9mZnNldC5nZXQo
KSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxpbmVBdE9mZnNldENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgb2Zmc2V0ID0gLTE7CisgICAgaWYgKGFy
Z3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgb2Zmc2V0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBsaW5lQXRPZmZzZXQoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5saW5lQXRP
ZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGxp
bmVBdE9mZnNldC5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNlbnRlbmNlQXRPZmZz
ZXRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaW50IG9mZnNl
dCA9IC0xOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIG9mZnNldCA9IEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VudGVuY2VBdE9mZnNldChBZG9wdCwgdG9BWEVsZW1l
bnQodGhpc09iamVjdCktPnNlbnRlbmNlQXRPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHNlbnRlbmNlQXRPZmZzZXQuZ2V0KCkpOworfQorCisj
ZWxpZiBQTEFURk9STShJT1MpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHN0cmluZ0ZvclNlbGVjdGlv
bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKQEAgLTE0
NzUsNyArMTUxNiwxMiBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpT
Q2xhc3MoKQogICAgICAgICB7ICJzZXRTZWxlY3RlZENoaWxkIiwgc2V0U2VsZWN0ZWRDaGlsZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNlbGVjdGVkQ2hpbGRBdEluZGV4Iiwgc2VsZWN0
ZWRDaGlsZEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzY3JvbGxUb01ha2VW
aXNpYmxlIiwgc2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorICAgICAgICB7ICJj
aGFyYWN0ZXJBdE9mZnNldCIsIGNoYXJhY3RlckF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAid29yZEF0T2Zmc2V0Iiwgd29yZEF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAibGluZUF0T2Zmc2V0IiwgbGluZUF0T2Zmc2V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAic2VudGVuY2VBdE9mZnNldCIsIHNlbnRlbmNlQXRPZmZzZXRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorI2VsaWYgUExBVEZPUk0oSU9TKQogICAgICAgICB7ICJsaW5rZWRFbGVtZW50IiwgbGlu
a2VkRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImhlYWRlckVsZW1lbnRBdElu
ZGV4IiwgaGVhZGVyRWxlbWVudEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJl
bGVtZW50c0ZvclJhbmdlIiwgZWxlbWVudHNGb3JSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggYWI0NmY2
NTRjYjlmZDNkZThlYTI5NTI1MjEwNDkzZGQ5OTBiOWU4MC4uZTUzYTU2NzA2ZjkxNTI0MGY4Yzc0
ZjliZjU5MzgxZjc4ZmE4YzlhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaApAQCAtMjEzLDYgKzIxMywxNCBAQCBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBsaW5rZWRFbGVtZW50KCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQorICAgIC8vIFRleHQtc3BlY2lmaWMKKyAgICBKU1N0cmlu
Z1JlZiBjaGFyYWN0ZXJBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBKU1N0cmluZ1JlZiB3b3Jk
QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNTdHJpbmdSZWYgbGluZUF0T2Zmc2V0KGludCBv
ZmZzZXQpOworICAgIEpTU3RyaW5nUmVmIHNlbnRlbmNlQXRPZmZzZXQoaW50IG9mZnNldCk7Cisj
ZW5kaWYKKwogICAgIC8vIFRhYmxlLXNwZWNpZmljCiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCmluZGV4IGVkZTE0ZWFjZTJlYzU3YjYxZGIxYWU1YzhhNmFiZTVkOWVhM2RjMjgu
LmFlZjgwZmViNzgwMzdkNWQzZTViNjljM2E0ZDdhNTYwZDE1Y2M0YjQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAK
QEAgLTE0MzUsNCArMTQzNSw1OSBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjbGFzc0xpc3QoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitKU1N0cmluZ1Jl
ZiBzdHJpbmdBdE9mZnNldChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBBdGtUZXh0Qm91bmRh
cnkgYm91bmRhcnksIGludCBvZmZzZXQpCit7CisgICAgaWYgKCFBVEtfSVNfVEVYVChlbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisK
KyAgICBnaW50IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworCisjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTAsIDApCisgICAgQXRrVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5OworICAgIHN3aXRjaCAoYm91bmRhcnkpIHsKKyAgICBjYXNlIEFU
S19URVhUX0JPVU5EQVJZX0NIQVI6CisgICAgICAgIGdyYW51bGFyaXR5ID0gQVRLX1RFWFRfR1JB
TlVMQVJJVFlfQ0hBUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFS
WV9XT1JEX1NUQVJUOgorICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZ
X1dPUkQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfTElORV9T
VEFSVDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklUWV9MSU5FOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJU
OgorICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZX1NFTlRFTkNFOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZChhdGtf
dGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVEtfVEVYVChlbGVtZW50KSwgb2Zmc2V0LCBncmFu
dWxhcml0eSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KSk7CisjZWxzZQorICAgIGJ1aWxkZXIu
YXBwZW5kKGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldChBVEtfVEVYVChlbGVtZW50KSwgb2Zm
c2V0LCBib3VuZGFyeSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KSk7CisjZW5kaWYKKyAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiLCAlaSwgJWkiLCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0KSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1
cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLCBvZmZz
ZXQpOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZz
ZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCBvZmZzZXQpOworfQorCitKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBy
ZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9MSU5FX1NU
QVJULCBvZmZzZXQpOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZW50ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0
KG1fZWxlbWVudCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsIG9mZnNldCk7Cit9
CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggMmJkOWVjZmQ2
Nzg5ZDViNjhmNTkzOGRhZjdjM2M2YWI4YWUwNjE5Yy4uNDA3MmZmNTkwMTc4Y2ZjOTUyYzA2OWYz
ZTc3NWQ3YTE1MDQzNzc3MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC01
NCw2ICs1NCwxMyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmFsaWQoKSBjb25z
dAogfQogCiAvLyBVbnN1cHBvcnRlZCBtZXRob2RzIG9uIHZhcmlvdXMgcGxhdGZvcm1zLiBBcyB0
aGV5J3JlIGltcGxlbWVudGVkIG9uIG90aGVyIHBsYXRmb3JtcyB0aGlzIGxpc3Qgc2hvdWxkIGJl
IG1vZGlmaWVkLgorI2lmICghUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKSkgfHwgIUhB
VkUoQUNDRVNTSUJJTElUWSkKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50
KSB7IHJldHVybiAwOyB9CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQoaW50KSB7
IHJldHVybiAwOyB9CisjZW5kaWYKKwogI2lmICghUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0o
R1RLKSAmJiAhUExBVEZPUk0oRUZMKSkgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQp
IHsgfQogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25z
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JikgeyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CmluZGV4IDkwZjVjYjEwY2I3MTFmYjcyMmU3ZWQxYjJhNWFiOGYwYjZmM2Y4MDIuLmNkOGUwZjgw
YzkwNmU1MmI1ZjhkODYzMWIwZWJmNjM4MDJhYWNkZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCkBAIC0yMDEsNiArMjAxLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGF0dHJpYnV0ZWRT
dHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3Ro
KTsKICAgICB1bnNpZ25lZCB1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRl
eHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVj
dGlvbk5leHQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBi
b29sIHZpc2libGVPbmx5KTsKICAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTVmFsdWVSZWYg
c2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5KTsKKwor
ICAgIC8vIFRleHQtc3BlY2lmaWMKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY2hhcmFj
dGVyQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHdv
cmRBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGlu
ZUF0T2Zmc2V0KGludCBvZmZzZXQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZW50
ZW5jZUF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIAogICAgIC8vIFRhYmxlLXNwZWNpZmljCiAg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjZWxsRm9yQ29sdW1uQW5kUm93
KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCmluZGV4IDdjZGU1ODZjNTYyZDQ5ZmU1NTcxNGM0ODdh
ZjcwMTEyZjdlNTkxM2EuLmVlZDMzZDIyYTYzMGYzNzJjMzNmMGNkOTQ4YTczMDA2MDgzNWEzOTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbApAQCAt
MTE0LDYgKzExNCwxMiBAQCBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CiAgICAg
RE9NU3RyaW5nIGF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CiAgICAgRE9NU3RyaW5nIGF0dHJpYnV0
ZXNPZkxpbmtlZFVJRWxlbWVudHMoKTsKICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mRG9jdW1l
bnRMaW5rcygpOworCisgICAgLy8gVGV4dCBpbmZvLgorICAgIERPTVN0cmluZyBjaGFyYWN0ZXJB
dE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBET01TdHJpbmcgd29yZEF0T2Zmc2V0KGludCBvZmZz
ZXQpOworICAgIERPTVN0cmluZyBsaW5lQXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgRE9NU3Ry
aW5nIHNlbnRlbmNlQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgCiAgICAgLy8gVGFibGUgaW5m
by4KICAgICBET01TdHJpbmcgYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCBmZDQ2YzI1OTRlYTZkOWJl
ZGQ0MDNkZWUwYWNiYmVmNzM1MzhlOGE5Li44MTI0MmNjMzAwMGJiNzUyNzg2NzViNWJjZmFhZTJk
OWY1ODZjODUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cApAQCAtMTYwNiw2ICsxNjA2LDYxIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwog
fQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXRPZmZzZXQoUGxhdGZvcm1VSUVs
ZW1lbnQgZWxlbWVudCwgQXRrVGV4dEJvdW5kYXJ5IGJvdW5kYXJ5LCBpbnQgb2Zmc2V0KQorewor
ICAgIGlmICghQVRLX0lTX1RFWFQoZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgZ2ludCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworI2lmIEFUS19DSEVDS19W
RVJTSU9OKDIsIDEwLCAwKQorICAgIEF0a1RleHRHcmFudWxhcml0eSBncmFudWxhcml0eTsKKyAg
ICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CisgICAgY2FzZSBBVEtfVEVYVF9CT1VOREFSWV9DSEFSOgor
ICAgICAgICBncmFudWxhcml0eSA9IEFUS19URVhUX0dSQU5VTEFSSVRZX0NIQVI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVDoKKyAgICAgICAg
Z3JhbnVsYXJpdHkgPSBBVEtfVEVYVF9HUkFOVUxBUklUWV9XT1JEOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQ6CisgICAgICAgIGdyYW51bGFy
aXR5ID0gQVRLX1RFWFRfR1JBTlVMQVJJVFlfTElORTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVDoKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBBVEtfVEVYVF9HUkFOVUxBUklUWV9TRU5URU5DRTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
CisgICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQoYXRrX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZz
ZXQoQVRLX1RFWFQoZWxlbWVudC5nZXQoKSksIG9mZnNldCwgZ3JhbnVsYXJpdHksICZzdGFydE9m
ZnNldCwgJmVuZE9mZnNldCkpOworI2Vsc2UKKyAgICBidWlsZGVyLmFwcGVuZChhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQoQVRLX1RFWFQoZWxlbWVudC5nZXQoKSksIG9mZnNldCwgYm91bmRh
cnksICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCkpOworI2VuZGlmCisgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpmb3JtYXQoIiwgJWksICVpIiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkpOwor
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQgb2Zmc2V0KQoreworICAgIHJl
dHVybiBzdHJpbmdBdE9mZnNldChtX2VsZW1lbnQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIsIG9m
ZnNldCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp3b3JkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZz
ZXQobV9lbGVtZW50LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX1NUQVJULCBvZmZzZXQpOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0
T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHN0cmluZ0F0T2Zmc2V0KG1fZWxlbWVu
dCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgb2Zmc2V0KTsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQo
aW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXRPZmZzZXQobV9lbGVtZW50LCBBVEtf
VEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwgb2Zmc2V0KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2YwN2I5ZTM5
ZDFjNmQ4NWExZDM0MTQ3Yjc0NDIxNTc5MmJkYjU3YS4uZWM2M2FiOTVkY2U2YzJlMjg1OTE0NWFj
OGVjMmZhNDIwMmY5ODZhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTEyLTA5ICBKb2Fu
bWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KKworICAgICAgICBBWDogW0FUS10gQ29u
dmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0a3Rlc3QuYyB1bml0IHRlc3Rz
IHRvIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI1NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTmV3IHRlc3RzIGFuZCBleHBlY3RhdGlvbnMgYmFzZWQgb24gdGhlIHRlc3RzIGFu
ZCBleHBlY3RhdGlvbnMgZm91bmQgaW4gYXRrdGVzdC5jLgorICAgICAgICBUaGVzZSB3ZXJlIGRv
bmUgYXMgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMgYmVjYXVzZSBvbmx5IEFUSy1iYXNlZCBhc3Np
c3RpdmUgdGVjaG5vbG9naWVzCisgICAgICAgIHNlZW0gdG8gaGF2ZSBhbnkgbmVlZCBmb3IgdGhp
cyBzdXBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1h
dC1vZmZzZXQtZW1iZWRkZWQtb2JqZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVj
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4
dC1hdC1vZmZzZXQtbmV3bGluZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1w
cmVmb3JtYXR0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
YWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1wcmVmb3JtYXR0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc2ltcGxl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvdGV4dC1hdC1vZmZzZXQtc2ltcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNwZWNpYWwtY2hhcnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0
LW9mZnNldC1zcGVjaWFsLWNoYXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQt
dGV4dGFyZWEuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQt
b2Zmc2V0LXdyYXBwZWQtbGluZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC13cmFwcGVkLWxpbmVzLmh0bWw6
IEFkZGVkLgorCiAyMDEzLTEyLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNU0VdIEJyaW5nIGVuZC1vZi1zdHJlYW0gYWxnb3JpdGhtIHNlY3Rpb24gdXAg
dG8gY3VycmVudCBzcGVjLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2JqZWN0cy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1l
bWJlZGRlZC1vYmplY3RzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWE5MTgwMmFlODIyN2Q3
YWZmMDE2OWEyZWQ4YzBkNzFkNWFhMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1iZWRkZWQtb2JqZWN0
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAorVGhpcyBpcyBvbmUgbGluZSBjb250YWlu
aW5nIHR3byAgZW1iZWRkZWQgb2JqZWN0cyAgaW4gdGhlIG1pZGRsZS4KKworVGhpcyB0ZXN0cyB0
aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGll
cyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29u
dGVudC5jaGFyYWN0ZXJBdE9mZnNldCgzMikgaXMgJ8Ovwr/CvCwgMzIsIDMzJworUEFTUyBjb250
ZW50LndvcmRBdE9mZnNldCgzMikgaXMgJ3R3byDDr8K/wrwgLCAyOCwgMzQnCitQQVNTIGNvbnRl
bnQuY2hhcmFjdGVyQXRPZmZzZXQoMzMpIGlzICcgLCAzMywgMzQnCitQQVNTIGNvbnRlbnQud29y
ZEF0T2Zmc2V0KDMzKSBpcyAndHdvIMOvwr/CvCAsIDI4LCAzNCcKK1BBU1MgY29udGVudC5jaGFy
YWN0ZXJBdE9mZnNldCgzNCkgaXMgJ2UsIDM0LCAzNScKK1BBU1MgY29udGVudC53b3JkQXRPZmZz
ZXQoMzQpIGlzICdlbWJlZGRlZCAsIDM0LCA0MycKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9m
ZnNldCg0MikgaXMgJyAsIDQyLCA0MycKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNDIpIGlz
ICdlbWJlZGRlZCAsIDM0LCA0MycKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1MSkg
aXMgJ8Ovwr/CvCwgNTEsIDUyJworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1MSkgaXMgJ29i
amVjdHMgw6/Cv8K8ICwgNDMsIDUzJworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUy
KSBpcyAnICwgNTIsIDUzJworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1MikgaXMgJ29iamVj
dHMgw6/Cv8K8ICwgNDMsIDUzJworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUzKSBp
cyAnaSwgNTMsIDU0JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1MykgaXMgJ2luICwgNTMs
IDU2JworUEFTUyBjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDU1KSBpcyAnICwgNTUsIDU2Jwor
UEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1NSkgaXMgJ2luICwgNTMsIDU2JworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LWVtYmVk
ZGVkLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LWVtYmVkZGVkLW9iamVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODZjNWQ5
YmQ0N2UzZDkzY2UwYTRkMTcxYWYzZDlkODQ5MDg0MjAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtZW1iZWRk
ZWQtb2JqZWN0cy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IGlkPSJib2R5Ij4KKzxwPlRoaXMgaXMgb25lIGxpbmUgY29udGFpbmluZyB0d28gPGltZz4gZW1i
ZWRkZWQgb2JqZWN0cyA8aW1nPiBpbiB0aGUgbWlkZGxlLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZl
cmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJv
ZHkiKS5mb2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgY29udGVudCA9IHdlYkFyZWEuY2hpbGRB
dEluZGV4KDApOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0
KDMyKSIsICInXDM1N1wyNzdcMjc0LCAzMiwgMzMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250
ZW50LndvcmRBdE9mZnNldCgzMikiLCAiJ3R3byBcMzU3XDI3N1wyNzQgLCAyOCwgMzQnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDMzKSIsICInICwgMzMs
IDM0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMzMpIiwgIid0
d28gXDM1N1wyNzdcMjc0ICwgMjgsIDM0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5j
aGFyYWN0ZXJBdE9mZnNldCgzNCkiLCAiJ2UsIDM0LCAzNSciKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvbnRlbnQud29yZEF0T2Zmc2V0KDM0KSIsICInZW1iZWRkZWQgLCAzNCwgNDMnIik7CisgICAg
ICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDQyKSIsICInICwgNDIsIDQz
JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNDIpIiwgIidlbWJl
ZGRlZCAsIDM0LCA0MyciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQuY2hhcmFjdGVyQXRP
ZmZzZXQoNTEpIiwgIidcMzU3XDI3N1wyNzQsIDUxLCA1MiciKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvbnRlbnQud29yZEF0T2Zmc2V0KDUxKSIsICInb2JqZWN0cyBcMzU3XDI3N1wyNzQgLCA0Mywg
NTMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDUyKSIs
ICInICwgNTIsIDUzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQo
NTIpIiwgIidvYmplY3RzIFwzNTdcMjc3XDI3NCAsIDQzLCA1MyciKTsKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoNTMpIiwgIidpLCA1MywgNTQnIik7CisgICAg
ICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1MykiLCAiJ2luICwgNTMsIDU2JyIp
OworICAgICAgICBzaG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCg1NSkiLCAiJyAs
IDU1LCA1NiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDU1KSIs
ICInaW4gLCA1MywgNTYnIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0
LWF0LW9mZnNldC1uZXdsaW5lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGE2ZWU4MGE2ZmUwOWFkMWVkYzI3MTkxYTUxOGNiZDE4OTNmYTNhNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQt
YXQtb2Zmc2V0LW5ld2xpbmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIGlz
IGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhpcmQu
CisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3IgZGlmZmVy
ZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGNvbnRlbnQuY2hhcmFjdGVyQXRPZmZzZXQoMCkgaXMgJ1QsIDAsIDEnCitQ
QVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDApIGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVu
dC53b3JkQXRPZmZzZXQoNCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9m
ZnNldCgxMCkgaXMgJ3Rlc3QuICwgMTAsIDE2JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg1
OCkgaXMgJ3RoaXJkLiwgNTgsIDY0JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMCkg
aXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LnNlbnRlbmNlQXRPZmZz
ZXQoMTUpIGlzICdUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5saW5lQXRP
ZmZzZXQoMCkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2Uu
IEFuZCB0aGlzIHRoZSB0aGlyZC4sIDAsIDY0JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LW5ld2xpbmVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkMDMxMTBlMDNhMjZlZDUzNTc3MjVjMWE4Zjk3MDQwM2NjZjVkOTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS90ZXh0LWF0LW9mZnNldC1uZXdsaW5lcy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxwIGlkPSJjb250ZW50Ij5UaGlzIGlzIGEgdGVz
dC4gCisKK1RoaXMKKyAgIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGly
ZC48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBn
ZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4i
KTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIHdlYkFy
ZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFy
IGNvbnRlbnQgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAgICAgICBzaG91bGRCZSgi
Y29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSciKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwgMCwgNSciKTsKKyAgICAg
ICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidUaGlzICwgMCwgNSciKTsK
KyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSIsICIndGVzdC4gLCAx
MCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNldCg1OCkiLCAi
J3RoaXJkLiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0
T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAsIDAs
IDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ1Ro
aXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0
aGlyZC4sIDAsIDY0JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1h
dC1vZmZzZXQtcHJlZm9ybWF0dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2JjMzA4MTYzOWI0NjQxNjUyNTVmYWJiZjdkM2Y0N2U3YzMxY2JhNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L3RleHQtYXQtb2Zmc2V0LXByZWZvcm1hdHRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBA
QAorCQorCWZpcnN0IGxpbmUKKwlzZWNvbmQgbGluZQorCQorVGhpcyB0ZXN0cyB0aGUgYWJpbGl0
eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zm
c2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5saW5l
QXRPZmZzZXQoMCkgaXMgJ1x0XG4sIDAsIDInCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDIp
IGlzICdcdGZpcnN0IGxpbmVcbiwgMiwgMTQnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDE0
KSBpcyAnXHRzZWNvbmQgbGluZVxuLCAxNCwgMjcnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1wcmVm
b3JtYXR0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmOTQxODhlODgxNDZjYWJiODZlNmI3ZDU0Nzkw
YmUwNDNmMzY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtcHJlZm9ybWF0dGVkLmh0bWwKQEAgLTAsMCArMSwy
OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHByZSBpZD0iY29udGVu
dCI+CisJCisJZmlyc3QgbGluZQorCXNlY29uZCBsaW5lCisJCis8L3ByZT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9y
IGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImJvZHkiKS5mb2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgY29udGVudCA9IHdlYkFyZWEu
Y2hpbGRBdEluZGV4KDApOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmxpbmVBdE9mZnNl
dCgwKSIsICInXFx0XFxuLCAwLCAyJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5l
QXRPZmZzZXQoMikiLCAiJ1xcdGZpcnN0IGxpbmVcXG4sIDIsIDE0JyIpOworICAgICAgICBzaG91
bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQoMTQpIiwgIidcXHRzZWNvbmQgbGluZVxcbiwgMTQs
IDI3JyIpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQt
c2ltcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE2ZWU4
MGE2ZmUwOWFkMWVkYzI3MTkxYTUxOGNiZDE4OTNmYTNhNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBs
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMg
dGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLgorCitUaGlzIHRlc3RzIHRo
ZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVz
IGFuZCBvZmZzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250
ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDApIGlzICdULCAwLCAxJworUEFTUyBjb250ZW50LndvcmRB
dE9mZnNldCgwKSBpcyAnVGhpcyAsIDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDQp
IGlzICdUaGlzICwgMCwgNScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMTApIGlzICd0ZXN0
LiAsIDEwLCAxNicKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoNTgpIGlzICd0aGlyZC4sIDU4
LCA2NCcKK1BBU1MgY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDApIGlzICdUaGlzIGlzIGEgdGVz
dC4gLCAwLCAxNicKK1BBU1MgY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDE1KSBpcyAnVGhpcyBp
cyBhIHRlc3QuICwgMCwgMTYnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdUaGlz
IGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUgdGhp
cmQuLCAwLCA2NCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS90ZXh0LWF0LW9mZnNldC1zaW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXNpbXBsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZGMw
Mjg4NzRjMzU1ZWRhMWMzZWQxY2U1NjY5ODMzM2UzMjQyNGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zaW1w
bGUuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9k
eSI+Cis8cCBpZD0iY29udGVudCI+VGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBz
ZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVtZW50IHRleHQgZm9yIGRpZmZlcmVudCBn
cmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5m
b2N1cygpOworICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OworICAgICAgICB2YXIgY29udGVudCA9IHdlYkFyZWEuY2hpbGRBdEluZGV4
KDApOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDApIiwg
IidULCAwLCAxJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMCki
LCAiJ1RoaXMgLCAwLCA1JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZz
ZXQoNCkiLCAiJ1RoaXMgLCAwLCA1JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3Jk
QXRPZmZzZXQoMTApIiwgIid0ZXN0LiAsIDEwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRlbnQud29yZEF0T2Zmc2V0KDU4KSIsICIndGhpcmQuLCA1OCwgNjQnIik7CisgICAgICAgIHNo
b3VsZEJlKCJjb250ZW50LnNlbnRlbmNlQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAs
IDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDE1
KSIsICInVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250
ZW50LmxpbmVBdE9mZnNldCgwKSIsICInVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29u
ZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiwgMCwgNjQnIik7CisgICAgfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zm
c2V0LXNwZWNpYWwtY2hhcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MTRjNzViNjFiMDg5
MWZjY2UwMWQ4ZWYxOWYyYmRkNDBmZGQzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACivCq8KgVGhpcyBpcyBhIHBhcmFncmFwaCB3
aXRoIOKAnHNwZWNpYWzigJ0gY2hhcmFjdGVycyBpbnNpZGUuwqDCuworCitMaXN0IGl0ZW0gd2l0
aCBzb21lIHRleHQgdGhhdCB3cmFwcyBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLgorTGlzdCBpdGVt
IHdpdGggc29tZSB0ZXh0IHRoYXQgd3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4KKworVGhp
cyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3Jh
bnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgcGFyYWdyYXBoLmxpbmVBdE9mZnNldCgwKSBpcyAnw4LCq8OCwqBUaGlzIGlzIGEgcGFy
YWdyYXBoIHdpdGggw6LCgMKcc3BlY2lhbMOiwoDCnSBjaGFyYWN0ZXJzIGluc2lkZS7DgsKgw4LC
uywgMCwgNTcnCitQQVNTIGxpc3RpdGVtLmxpbmVBdE9mZnNldCgzKSBpcyAnw6LCgMKiIExpc3Qg
aXRlbSAsIDAsIDEyJworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMTMpIGlzICd3aXRoIHNv
bWUgLCAxMiwgMjInCitQQVNTIGxpc3RpdGVtLmxpbmVBdE9mZnNldCgzKSBpcyAnw6LCgMKiIExp
c3QgaXRlbSAsIDAsIDEyJworUEFTUyBsaXN0aXRlbS5saW5lQXRPZmZzZXQoMTMpIGlzICd3aXRo
IHNvbWUgLCAxMiwgMjInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtc3BlY2lhbC1jaGFycy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNkNTQ5OTZiM2QwMjVhYWE3OTczZTFiYTBjMTVhOGE4MDI1YmU1NTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90
ZXh0LWF0LW9mZnNldC1zcGVjaWFsLWNoYXJzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHA+JmxhcXVvOyZuYnNwO1RoaXMgaXMgYSBw
YXJhZ3JhcGggd2l0aCAmbGRxdW87c3BlY2lhbCZyZHF1bzsgY2hhcmFjdGVycyBpbnNpZGUuJm5i
c3A7JnJhcXVvOzwvcD48dWw+PGxpIHN0eWxlPSdtYXgtd2lkdGg6NzBweDsnPkxpc3QgaXRlbSB3
aXRoIHNvbWUgdGV4dCB0aGF0IHdyYXBzIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMuPC9saT48bGkg
c3R5bGU9J21heC13aWR0aDo3MHB4Oyc+PHA+TGlzdCBpdGVtIHdpdGggc29tZSB0ZXh0IHRoYXQg
d3JhcHMgYWNyb3NzIGRpZmZlcmVudCBsaW5lcy48L3A+PC9saT48L3VsPgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1lbnQgdGV4dCBmb3Ig
ZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuIik7CisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm9keSIpLmZvY3VzKCk7CisgICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgdmFyIHBhcmFncmFwaCA9IHdlYkFy
ZWEuY2hpbGRBdEluZGV4KDApOworICAgICAgICBzaG91bGRCZSgicGFyYWdyYXBoLmxpbmVBdE9m
ZnNldCgwKSIsICInXDMwMlwyNTNcMzAyXDI0MFRoaXMgaXMgYSBwYXJhZ3JhcGggd2l0aCBcMzQy
XDIwMFwyMzRzcGVjaWFsXDM0MlwyMDBcMjM1IGNoYXJhY3RlcnMgaW5zaWRlLlwzMDJcMjQwXDMw
MlwyNzMsIDAsIDU3JyIpOworCisgICAgICAgIHZhciBsaXN0ID0gd2ViQXJlYS5jaGlsZEF0SW5k
ZXgoMSk7CisgICAgICAgIHZhciBsaXN0aXRlbSA9IGxpc3QuY2hpbGRBdEluZGV4KDApOworICAg
ICAgICBzaG91bGRCZSgibGlzdGl0ZW0ubGluZUF0T2Zmc2V0KDMpIiwgIidcMzQyXDIwMFwyNDIg
TGlzdCBpdGVtICwgMCwgMTInIik7CisgICAgICAgIHNob3VsZEJlKCJsaXN0aXRlbS5saW5lQXRP
ZmZzZXQoMTMpIiwgIid3aXRoIHNvbWUgLCAxMiwgMjInIik7CisKKyAgICAgICAgdmFyIGxpc3Rp
dGVtID0gbGlzdC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIHNob3VsZEJlKCJsaXN0aXRlbS5s
aW5lQXRPZmZzZXQoMykiLCAiJ1wzNDJcMjAwXDI0MiBMaXN0IGl0ZW0gLCAwLCAxMiciKTsKKyAg
ICAgICAgc2hvdWxkQmUoImxpc3RpdGVtLmxpbmVBdE9mZnNldCgxMykiLCAiJ3dpdGggc29tZSAs
IDEyLCAyMiciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zm
c2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZDA0ZWNjNDhlYTBjYjY4YzExMzM5MTM5ZTNjNmZjY2RhZTgyZmVlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZz
ZXQtdGV4dGFyZWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKKworVGhpcyB0ZXN0cyB0
aGUgYWJpbGl0eSB0byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGll
cyBhbmQgb2Zmc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29u
dGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSBpcyAnVCwgMCwgMScKK1BBU1MgY29udGVudC53b3Jk
QXRPZmZzZXQoMCkgaXMgJ1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg0
KSBpcyAnVGhpcyAsIDAsIDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSBpcyAndGVz
dC4gLCAxMCwgMTYnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDU4KSBpcyAndGhpcmQuLCA1
OCwgNjQnCitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRl
c3QuICwgMCwgMTYnCitQQVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkgaXMgJ1RoaXMg
aXMgYSB0ZXN0LiAsIDAsIDE2JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAnVGhp
cyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRo
aXJkLiwgMCwgNjQnCitQQVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdmb28gYmFyIGJh
eiwgMCwgMTEnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkv
dGV4dC1hdC1vZmZzZXQtdGV4dGFyZWEuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRhcmVhLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBm
YmUxMGUwOGY0YjkzY2E1NjU5MWZjYTMwYjQ1MzBkNTkwZjYwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRl
eHRhcmVhLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9
ImJvZHkiPgorPHRleHRhcmVhIGlkPSJjb250ZW50IiBjb2xzPSc4MCc+VGhpcyBpcyBhIHRlc3Qu
IFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLjwvdGV4dGFy
ZWE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQg
ZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4iKTsK
KyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIGNvbnRl
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICBz
aG91bGRCZSgiY29udGVudC5jaGFyYWN0ZXJBdE9mZnNldCgwKSIsICInVCwgMCwgMSciKTsKKyAg
ICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDApIiwgIidUaGlzICwgMCwgNSci
KTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDQpIiwgIidUaGlzICwg
MCwgNSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSIsICIn
dGVzdC4gLCAxMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LndvcmRBdE9mZnNl
dCg1OCkiLCAiJ3RoaXJkLiwgNTgsIDY0JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5z
ZW50ZW5jZUF0T2Zmc2V0KDApIiwgIidUaGlzIGlzIGEgdGVzdC4gLCAwLCAxNiciKTsKKyAgICAg
ICAgc2hvdWxkQmUoImNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkiLCAiJ1RoaXMgaXMgYSB0
ZXN0LiAsIDAsIDE2JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC5saW5lQXRPZmZzZXQo
MCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0
aGlzIHRoZSB0aGlyZC4sIDAsIDY0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50IikudmFsdWUgPSAiZm9vIGJhciBiYXoiOworICAgICAgICBzaG91bGRCZSgi
Y29udGVudC5saW5lQXRPZmZzZXQoMCkiLCAiJ2ZvbyBiYXIgYmF6LCAwLCAxMSciKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RleHQtYXQtb2Zmc2V0LXRleHRpbnB1dC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0
LW9mZnNldC10ZXh0aW5wdXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMDRlY2M0OGVhMGNi
NjhjMTEzMzkxMzllM2M2ZmNjZGFlODJmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC10ZXh0aW5wdXQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKKworVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBn
ZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0cy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5jaGFyYWN0ZXJB
dE9mZnNldCgwKSBpcyAnVCwgMCwgMScKK1BBU1MgY29udGVudC53b3JkQXRPZmZzZXQoMCkgaXMg
J1RoaXMgLCAwLCA1JworUEFTUyBjb250ZW50LndvcmRBdE9mZnNldCg0KSBpcyAnVGhpcyAsIDAs
IDUnCitQQVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDEwKSBpcyAndGVzdC4gLCAxMCwgMTYnCitQ
QVNTIGNvbnRlbnQud29yZEF0T2Zmc2V0KDU4KSBpcyAndGhpcmQuLCA1OCwgNjQnCitQQVNTIGNv
bnRlbnQuc2VudGVuY2VBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3QuICwgMCwgMTYnCitQ
QVNTIGNvbnRlbnQuc2VudGVuY2VBdE9mZnNldCgxNSkgaXMgJ1RoaXMgaXMgYSB0ZXN0LiAsIDAs
IDE2JworUEFTUyBjb250ZW50LmxpbmVBdE9mZnNldCgwKSBpcyAnVGhpcyBpcyBhIHRlc3QuIFRo
aXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiwgMCwgNjQnCitQ
QVNTIGNvbnRlbnQubGluZUF0T2Zmc2V0KDApIGlzICdmb28gYmFyIGJheiwgMCwgMTEnCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQt
dGV4dGlucHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90
ZXh0LWF0LW9mZnNldC10ZXh0aW5wdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzc3Mjg5Njk0MWQ3ZWFj
MzFlNmYyOTRlZWFhMzJlZWFlNDBmMzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtdGV4dGlucHV0Lmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPGlu
cHV0IGlkPSJjb250ZW50IiB0eXBlPSd0ZXh0JyBzaXplPSc4MCcgdmFsdWU9J1RoaXMgaXMgYSB0
ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4nLz4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCBlbGVt
ZW50IHRleHQgZm9yIGRpZmZlcmVudCBncmFudWxhcml0aWVzIGFuZCBvZmZzZXRzLiIpOworICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5mb2N1cygpOworICAgICAgICB2YXIgY29udGVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisgICAgICAgIHNob3Vs
ZEJlKCJjb250ZW50LmNoYXJhY3RlckF0T2Zmc2V0KDApIiwgIidULCAwLCAxJyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMCkiLCAiJ1RoaXMgLCAwLCA1JyIpOwor
ICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoNCkiLCAiJ1RoaXMgLCAwLCA1
JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudC53b3JkQXRPZmZzZXQoMTApIiwgIid0ZXN0
LiAsIDEwLCAxNiciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQud29yZEF0T2Zmc2V0KDU4
KSIsICIndGhpcmQuLCA1OCwgNjQnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LnNlbnRl
bmNlQXRPZmZzZXQoMCkiLCAiJ1RoaXMgaXMgYSB0ZXN0LiAsIDAsIDE2JyIpOworICAgICAgICBz
aG91bGRCZSgiY29udGVudC5zZW50ZW5jZUF0T2Zmc2V0KDE1KSIsICInVGhpcyBpcyBhIHRlc3Qu
ICwgMCwgMTYnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmxpbmVBdE9mZnNldCgwKSIs
ICInVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gQW5kIHRoaXMg
dGhlIHRoaXJkLiwgMCwgNjQnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnQiKS52YWx1ZSA9ICJmb28gYmFyIGJheiI7CisgICAgICAgIHNob3VsZEJlKCJjb250
ZW50LmxpbmVBdE9mZnNldCgwKSIsICInZm9vIGJhciBiYXosIDAsIDExJyIpOworICAgIH0KKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90ZXh0LWF0
LW9mZnNldC13cmFwcGVkLWxpbmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTM1MWJiNGY4
MjQ1ODIxOWZkMWQ3Mzc5NmQzYzNiNjhmMTEzMzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1s
aW5lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyBpcyBvbmUgbGluZSB3cmFw
cGVkIGJlY2F1c2Ugb2YgdGhlIG1heGltdW0gd2lkdGggb2YgaXRzIGNvbnRhaW5lci4KKworVGhp
cyBpcyBhbm90aGVyIGxpbmUgd3JhcHBlZAorYmVjYXVzZSBvZiBvbmUgZm9yY2VkCitsaW5lIGJy
ZWFrIGluIHRoZSBtaWRkbGUuCisKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gZ2V0IGVsZW1l
bnQgdGV4dCBmb3IgZGlmZmVyZW50IGdyYW51bGFyaXRpZXMgYW5kIG9mZnNldHMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhcmFncmFwaC5jaGFyYWN0ZXJBdE9mZnNl
dCgxNikgaXMgJyAsIDE2LCAxNycKK1BBU1MgcGFyYWdyYXBoLndvcmRBdE9mZnNldCgxNikgaXMg
J2xpbmUgLCAxMiwgMTcnCitQQVNTIHBhcmFncmFwaC5saW5lQXRPZmZzZXQoMTcpIGlzICd3cmFw
cGVkIGJlY2F1c2UgLCAxNywgMzMnCitQQVNTIHBhcmFncmFwaC5jaGFyYWN0ZXJBdE9mZnNldCgy
OCkgaXMgJ1xuLCAyOCwgMjknCitQQVNTIHBhcmFncmFwaC53b3JkQXRPZmZzZXQoMjgpIGlzICd3
cmFwcGVkXG4sIDIxLCAyOScKK1BBU1MgcGFyYWdyYXBoLmxpbmVBdE9mZnNldCgzMCkgaXMgJ2Jl
Y2F1c2Ugb2Ygb25lIGZvcmNlZFxuLCAyOSwgNTEnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3JhcHBlZC1saW5lcy5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGV4dC1hdC1vZmZzZXQtd3Jh
cHBlZC1saW5lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2EyOWU5ZDY1MGZjYWFiYmVlOGI1MzcwZjc4
NzlkMjNmNWRjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
YWNjZXNzaWJpbGl0eS90ZXh0LWF0LW9mZnNldC13cmFwcGVkLWxpbmVzLmh0bWwKQEAgLTAsMCAr
MSwyOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHAgc3R5bGU9J21h
eC13aWR0aDoxMjBweDsnPlRoaXMgaXMgb25lIGxpbmUgd3JhcHBlZCBiZWNhdXNlIG9mIHRoZSBt
YXhpbXVtIHdpZHRoIG9mIGl0cyBjb250YWluZXIuPC9wPjxwPlRoaXMgaXMgYW5vdGhlciBsaW5l
IHdyYXBwZWQ8YnI+YmVjYXVzZSBvZiBvbmUgZm9yY2VkPGJyPmxpbmUgYnJlYWsgaW4gdGhlIG1p
ZGRsZS48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0
byBnZXQgZWxlbWVudCB0ZXh0IGZvciBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcyBhbmQgb2Zmc2V0
cy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICAgICAgdmFyIHdl
YkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAg
ICB2YXIgcGFyYWdyYXBoID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHNob3Vs
ZEJlKCJwYXJhZ3JhcGguY2hhcmFjdGVyQXRPZmZzZXQoMTYpIiwgIicgLCAxNiwgMTcnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgud29yZEF0T2Zmc2V0KDE2KSIsICInbGluZSAsIDEy
LCAxNyciKTsKKyAgICAgICAgc2hvdWxkQmUoInBhcmFncmFwaC5saW5lQXRPZmZzZXQoMTcpIiwg
Iid3cmFwcGVkIGJlY2F1c2UgLCAxNywgMzMnIik7CisKKyAgICAgICAgcGFyYWdyYXBoID0gd2Vi
QXJlYS5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIHNob3VsZEJlKCJwYXJhZ3JhcGguY2hhcmFj
dGVyQXRPZmZzZXQoMjgpIiwgIidcXG4sIDI4LCAyOSciKTsKKyAgICAgICAgc2hvdWxkQmUoInBh
cmFncmFwaC53b3JkQXRPZmZzZXQoMjgpIiwgIid3cmFwcGVkXFxuLCAyMSwgMjknIik7CisgICAg
ICAgIHNob3VsZEJlKCJwYXJhZ3JhcGgubGluZUF0T2Zmc2V0KDMwKSIsICInYmVjYXVzZSBvZiBv
bmUgZm9yY2VkXFxuLCAyOSwgNTEnIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>