<?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>80752</bug_id>
          
          <creation_ts>2012-03-10 02:17:50 -0800</creation_ts>
          <short_desc>REGRESSION(r110353): copmile failed on Chromium (Requested by ukai_home on #webkit).</short_desc>
          <delta_ts>2012-03-10 02:27:57 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>80613</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>575482</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 02:17:50 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/110353 broke the build:
copmile failed on Chromium (Requested by ukai_home on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575483</commentid>
    <comment_count>1</comment_count>
      <attachid>131167</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 02:18:24 -0800</bug_when>
    <thetext>Created attachment 131167
ROLLOUT of r110353

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575484</commentid>
    <comment_count>2</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2012-03-10 02:22:13 -0800</bug_when>
    <thetext> -c /Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp -o /Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/./xcodebuild/WebKitUnitTests.build/Release/webkit_unit_tests.build/Objects-normal/i386/CCOcclusionTrackerTest.o

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:316:9: error: use of undeclared identifier &apos;calcDrawEtc&apos;
        calcDrawEtc(parent);
        ^
        this-&gt;
/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:354:1: note: in instantiation of member function &apos;&lt;anonymous namespace&gt;::CCOcclusionTrackerTestIdentityTransforms&lt;&lt;anonymous&gt;::CCOcclusionTrackerTestMainThreadTypes, true&gt;::runMyTest&apos; requested here
ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestIdentityTransforms);
^
/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:300:5: note: expanded from macro &apos;ALL_CCOCCLUSIONTRACKER_TEST&apos;
    RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS(ClassName) \
    ^
/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:283:58: note: expanded from macro &apos;RUN_TEST_MAIN_THREAD_OPAQUE_LAYERS&apos;
    TEST_F(ClassName##MainThreadOpaqueLayers, runTest) { runMyTest(); }
                                                         ^
/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:219:27: note: must qualify identifier to find this declaration in dependent base class
    TestContentLayerImpl* calcDrawEtc(TestContentLayerImpl* root)
                          ^
/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-release/build/Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:235:31: note: must qualify identifier to find this declaration in dependent base class
    TestContentLayerChromium* calcDrawEtc(TestContentLayerChromium* root)
                              ^

..
http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/33021/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575485</commentid>
    <comment_count>3</comment_count>
      <attachid>131167</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 02:27:53 -0800</bug_when>
    <thetext>Comment on attachment 131167
ROLLOUT of r110353

Clearing flags on attachment: 131167

Committed r110372: &lt;http://trac.webkit.org/changeset/110372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575486</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 02:27:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131167</attachid>
            <date>2012-03-10 02:18:24 -0800</date>
            <delta_ts>2012-03-10 02:27:53 -0800</delta_ts>
            <desc>ROLLOUT of r110353</desc>
            <filename>bug-80752-20120310102047.patch</filename>
            <type>text/plain</type>
            <size>222789</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDc1YjdhMGM3ZmQ0NmIyZTVlYjgyMmNkOWYxNTUzOGRiMzU4YWNlMTkuLjJjZTcxMDRmMTQ2NmMx
OTZhZmJjYjJmOTRjMTdkZDZiZGRmNjM3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTItMDMtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTAzNTMu
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExMDM1MworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3NTIKKworICAgICAg
ICBjb3BtaWxlIGZhaWxlZCBvbiBDaHJvbWl1bSAoUmVxdWVzdGVkIGJ5IHVrYWlfaG9tZSBvbgor
ICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ6OkxheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50OjpvcGFxdWVDb250ZW50
c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudDo6c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
Q0NPY2NsdXNpb25UcmFja2VyOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6Om9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlcjo6b2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6OnNl
dE9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVz
aW9uVHJhY2tlcjo6c2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERhbWFnZUNsaWVudDo6ZGFtYWdlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3Vy
ZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhT
dXJmYWNlQWxyZWFkeU9uU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OnN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3Vy
ZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJl
bnRUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6Om9jY2x1c2lvbkludGVyYWN0aW9uV2l0
aEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
bGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVy
U2Npc3NvclJlY3RPdmVyTm9UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5TY2lzc29y
UmVjdE92ZXJOb1RpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyU2Npc3NvclJlY3RGb3JM
YXllck9mZk9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpkYW1hZ2VSZWN0T3ZlclRpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRh
bWFnZVJlY3RPdmVyTm9UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0w
My0wOSAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SGFuZGxlIG1vcmUgR2VzdHVyZSogZXZlbnRzIGJ5IHBlcmZvcm1pbmcgc2Nyb2xscyBvbiB0aGUg
Y29ycmVjdCB0YXJnZXQgU2Nyb2xsYWJsZUFyZWEgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCAwZTUwNzky
NTNjYmI4OWE3MGFkMTU1MzViYmZlODIzYzZhODA2NmFhLi4yNmQ1MjUyM2JlMTM0YzJlZmM5Nzhi
MzRhMGJkNGMzMzIwNTA5Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTMwLDkgKzMwLDcgQEAKICNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgotI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KQEAgLTQ3LDY2ICs0NSw4NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIHsKIAotY2xhc3MgVGVzdENvbnRlbnRMYXllckNocm9taXVtIDogcHVibGlj
IExheWVyQ2hyb21pdW0geworY2xhc3MgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgVGVzdENvbnRlbnRMYXll
ckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CisgICAgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKQorICAgICAgICA6IExheWVyQ2hyb21pdW0oKQorICAgIHsKKyAg
ICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgUmVnaW9uIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKCkgY29uc3QgeyBy
ZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0
KCkpOyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgb3Bh
cXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVudHNSZWN0ID0gb3BhcXVlQ29udGVudHNS
ZWN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgSW50UmVjdCBtX29wYXF1ZUNvbnRlbnRzUmVjdDsKLX07
CisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUxh
eWVyUmVjdCgpKTsKKyAgICB9CiAKLWNsYXNzIFRlc3RDb250ZW50TGF5ZXJJbXBsIDogcHVibGlj
IENDTGF5ZXJJbXBsIHsKLXB1YmxpYzoKLSAgICBUZXN0Q29udGVudExheWVySW1wbChpbnQgaWQp
IDogQ0NMYXllckltcGwoaWQpIHsgc2V0RHJhd3NDb250ZW50KHRydWUpOyB9CisgICAgdm9pZCBz
ZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRSZWN0KSB7IG1fb3Bh
cXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CiAKLSAgICB2aXJ0dWFsIFJlZ2lvbiBv
cGFxdWVDb250ZW50c1JlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1
ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsgfQotICAgIHZvaWQgc2V0T3BhcXVl
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1
ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQogcHJpdmF0ZToKLSAgICBJbnRS
ZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7
CiB9OwogCit2b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJvbWl1bSog
bGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCit7CisgICAgbGF5ZXItPnNl
dFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7CisgICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICBsYXll
ci0+c2V0Qm91bmRzKGJvdW5kcyk7Cit9CisKK3ZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCogbGF5ZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlLCBib29sIG9wYXF1ZUxheWVycykK
K3sKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLCB0cmFuc2Zvcm0sIHBv
c2l0aW9uLCBib3VuZHMpOworICAgIGlmIChvcGFxdWVMYXllcnMpCisgICAgICAgIGxheWVyLT5z
ZXRPcGFxdWUob3BhcXVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGF5ZXItPnNldE9wYXF1ZShm
YWxzZSk7CisgICAgICAgIGlmIChvcGFxdWUpCisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVl
UGFpbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKKyAgICB9Cit9
CisKIC8vIEEgc3ViY2xhc3MgdG8gZXhwb3NlIHRoZSB0b3RhbCBjdXJyZW50IG9jY2x1c2lvbi4K
LXRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+
Ci1jbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZSA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IHsKK2NsYXNzIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXIgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyIHsKIHB1YmxpYzoKLSAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0KQot
ICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT4oc2NyZWVuU2Npc3NvclJlY3QpCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcihJbnRS
ZWN0IHNjcmVlblNjaXNzb3JSZWN0KQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihzY3Jl
ZW5TY2lzc29yUmVjdCkKICAgICAgICAgLCBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdChmYWxz
ZSkKICAgICB7CiAgICAgfQogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVj
dCBzY3JlZW5TY2lzc29yUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyRGFtYWdlQ2xpZW50
QmFzZTxSZW5kZXJTdXJmYWNlVHlwZT4qIGRhbWFnZUNsaWVudCkKLSAgICAgICAgOiBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+KHNjcmVlblNjaXNz
b3JSZWN0LCBkYW1hZ2VDbGllbnQpCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0
IHNjcmVlblNjaXNzb3JSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnQq
IGRhbWFnZUNsaWVudCkKKyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXIoc2NyZWVuU2Npc3Nv
clJlY3QsIGRhbWFnZUNsaWVudCkKICAgICAgICAgLCBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVj
dChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgUmVnaW9uIG9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbjsgfQotICAg
IFJlZ2lvbiBvY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptX3N0YWNrLmxh
c3QoKS5vY2NsdXNpb25JblRhcmdldDsgfQorICAgIFJlZ2lvbiBvY2NsdXNpb25JblNjcmVlblNw
YWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyOjptX3N0YWNrLmxhc3QoKS5v
Y2NsdXNpb25JblNjcmVlbjsgfQorICAgIFJlZ2lvbiBvY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KSBjb25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRyYWNrZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1
c2lvbkluVGFyZ2V0OyB9CiAKLSAgICB2b2lkIHNldE9jY2x1c2lvbkluU2NyZWVuU3BhY2UoY29u
c3QgUmVnaW9uJiByZWdpb24pIHsgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSByZWdp
b247IH0KLSAgICB2b2lkIHNldE9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZShjb25zdCBSZWdpb24m
IHJlZ2lvbikgeyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lvbjsgfQorICAg
IHZvaWQgc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBD
Q09jY2x1c2lvblRyYWNrZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gcmVn
aW9uOyB9CisgICAgdm9pZCBzZXRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoY29uc3QgUmVnaW9u
JiByZWdpb24pIHsgQ0NPY2NsdXNpb25UcmFja2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25J
blRhcmdldCA9IHJlZ2lvbjsgfQogCiAgICAgdm9pZCBzZXRMYXllclNjaXNzb3JSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpIHsgbV9vdmVycmlkZUxheWVyU2Npc3NvclJlY3QgPSB0cnVlOyBtX2xh
eWVyU2Npc3NvclJlY3QgPSByZWN0O30KICAgICB2b2lkIHVzZURlZmF1bHRMYXllclNjaXNzb3JS
ZWN0KCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA9IGZhbHNlOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShj
b25zdCBMYXllclR5cGUqIGxheWVyKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlTGF5ZXJTY2lz
c29yUmVjdCA/IG1fbGF5ZXJTY2lzc29yUmVjdCA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UobGF5ZXIpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyU2Npc3NvclJlY3RJblRhcmdl
dFN1cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fb3Zl
cnJpZGVMYXllclNjaXNzb3JSZWN0ID8gbV9sYXllclNjaXNzb3JSZWN0IDogQ0NPY2NsdXNpb25U
cmFja2VyOjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKTsgfQogCiBwcml2
YXRlOgogICAgIGJvb2wgbV9vdmVycmlkZUxheWVyU2Npc3NvclJlY3Q7CiAgICAgSW50UmVjdCBt
X2xheWVyU2Npc3NvclJlY3Q7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNl
VHlwZT4KLWNsYXNzIFRlc3REYW1hZ2VDbGllbnQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2Vy
RGFtYWdlQ2xpZW50QmFzZTxSZW5kZXJTdXJmYWNlVHlwZT4geworY2xhc3MgVGVzdERhbWFnZUNs
aWVudCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnQgewogcHVibGljOgog
ICAgIC8vIFRoZSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBkYW1hZ2VSZWN0KGNv
bnN0IFJlbmRlclN1cmZhY2VUeXBlKikgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VSZWN0OyB9Cisg
ICAgdmlydHVhbCBGbG9hdFJlY3QgZGFtYWdlUmVjdChjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0qKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVJlY3Q7IH0KIAogICAgIC8vIFRlc3Rpbmcgc3R1
ZmYKICAgICBUZXN0RGFtYWdlQ2xpZW50KGNvbnN0IEZsb2F0UmVjdCYgZGFtYWdlUmVjdCkgOiBt
X2RhbWFnZVJlY3QoZGFtYWdlUmVjdCkgeyB9CkBAIC0xMTYsMTU4OCArMTMyLDIwODEgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFJlY3QgbV9kYW1hZ2VSZWN0OwogfTsKIAotc3RydWN0IENDT2NjbHVz
aW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMgewotICAgIHR5cGVkZWYgTGF5ZXJDaHJvbWl1
bSBMYXllclR5cGU7Ci0gICAgdHlwZWRlZiBSZW5kZXJTdXJmYWNlQ2hyb21pdW0gUmVuZGVyU3Vy
ZmFjZVR5cGU7Ci0gICAgdHlwZWRlZiBUZXN0Q29udGVudExheWVyQ2hyb21pdW0gQ29udGVudExh
eWVyVHlwZTsKLSAgICB0eXBlZGVmIFJlZlB0cjxMYXllckNocm9taXVtPiBMYXllclB0clR5cGU7
Ci0gICAgdHlwZWRlZiBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IFBhc3NMYXllclB0clR5cGU7
Ci0gICAgdHlwZWRlZiBSZWZQdHI8Q29udGVudExheWVyVHlwZT4gQ29udGVudExheWVyUHRyVHlw
ZTsKLSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8Q29udGVudExheWVyVHlwZT4gUGFzc0NvbnRlbnRM
YXllclB0clR5cGU7Ci0KLSAgICBzdGF0aWMgUGFzc0xheWVyUHRyVHlwZSBjcmVhdGVMYXllcigp
IHsgcmV0dXJuIExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOyB9Ci0gICAgc3RhdGljIFBhc3NDb250
ZW50TGF5ZXJQdHJUeXBlIGNyZWF0ZUNvbnRlbnRMYXllcigpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb250ZW50TGF5ZXJUeXBlKCkpOyB9Ci19OwotCi1zdHJ1Y3QgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdEltcGxUaHJlYWRUeXBlcyB7Ci0gICAgdHlwZWRlZiBDQ0xheWVySW1wbCBMYXllclR5cGU7
Ci0gICAgdHlwZWRlZiBDQ1JlbmRlclN1cmZhY2UgUmVuZGVyU3VyZmFjZVR5cGU7Ci0gICAgdHlw
ZWRlZiBUZXN0Q29udGVudExheWVySW1wbCBDb250ZW50TGF5ZXJUeXBlOwotICAgIHR5cGVkZWYg
T3duUHRyPENDTGF5ZXJJbXBsPiBMYXllclB0clR5cGU7Ci0gICAgdHlwZWRlZiBQYXNzT3duUHRy
PENDTGF5ZXJJbXBsPiBQYXNzTGF5ZXJQdHJUeXBlOwotICAgIHR5cGVkZWYgT3duUHRyPENvbnRl
bnRMYXllclR5cGU+IENvbnRlbnRMYXllclB0clR5cGU7Ci0gICAgdHlwZWRlZiBQYXNzT3duUHRy
PENvbnRlbnRMYXllclR5cGU+IFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlOwotCi0gICAgc3RhdGlj
IFBhc3NMYXllclB0clR5cGUgY3JlYXRlTGF5ZXIoKSB7IHJldHVybiBDQ0xheWVySW1wbDo6Y3Jl
YXRlKG5leHRDQ0xheWVySW1wbElkKyspOyB9Ci0gICAgc3RhdGljIFBhc3NDb250ZW50TGF5ZXJQ
dHJUeXBlIGNyZWF0ZUNvbnRlbnRMYXllcigpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50
TGF5ZXJUeXBlKG5leHRDQ0xheWVySW1wbElkKyspKTsgfQotICAgIHN0YXRpYyBpbnQgbmV4dEND
TGF5ZXJJbXBsSWQ7Ci19OwotCi1pbnQgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRU
eXBlczo6bmV4dENDTGF5ZXJJbXBsSWQgPSAwOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlcywg
Ym9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBydW5NeVRlc3Qo
KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgbV9y
b290LmNsZWFyKCk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtLmNs
ZWFyKCk7Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGwuY2xlYXIoKTsKKyNk
ZWZpbmUgVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKEZVTExURVNUTkFNRSwgU0hPUlRU
RVNUTkFNRSkgXAorICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFxdWVMYXllcikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgU0hPUlRURVNU
TkFNRSh0cnVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZVBhaW50UmVjdCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTSE9SVFRFU1RO
QU1FKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
fQogCi0gICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNyZWF0ZVJvb3QoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJQdHJUeXBlIGxheWVyID0gVHlwZXM6OmNyZWF0ZUNvbnRlbnRMYXll
cigpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXJQdHIg
PSBsYXllci5nZXQoKTsKLSAgICAgICAgc2V0UHJvcGVydGllcyhsYXllclB0ciwgdHJhbnNmb3Jt
LCBwb3NpdGlvbiwgYm91bmRzKTsKLQotICAgICAgICBBU1NFUlQoIW1fcm9vdCk7Ci0gICAgICAg
IG1fcm9vdCA9IGxheWVyLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGxheWVyUHRyOwotICAg
IH0KLQotICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZUxheWVyKHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5k
cykKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclB0clR5cGUgbGF5ZXIgPSBU
eXBlczo6Y3JlYXRlTGF5ZXIoKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSog
bGF5ZXJQdHIgPSBsYXllci5nZXQoKTsKLSAgICAgICAgc2V0UHJvcGVydGllcyhsYXllclB0ciwg
dHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKLSAgICAgICAgcGFyZW50LT5hZGRDaGlsZChs
YXllci5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm4gbGF5ZXJQdHI7Ci0gICAgfQordm9pZCBs
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbihib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICAvLyBU
aGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCisgICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5j
cmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CisKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Owor
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBp
bnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVy
TGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcw
LCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKworICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0
TGF5ZXJTY2lzc29yUmVjdCgpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzAp
KSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAs
IDcwKSkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcw
KSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMjksIDcw
LCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjks
IDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEs
IDI5LCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAxLCA3
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMxLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3
MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAx
MDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
OSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOworfQorCitURVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJl
Z2lvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24pOworCit2b2lkIGxheWVyQWRkZWRUb09j
Y2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIC8vIFRo
aXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KKyAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgIGxheWVyVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAg
ICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250
ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAg
ICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisK
KyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlN
YXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAs
IDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgMzEsIDcwLCA3MCkpKTsKKworICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29y
UmVjdCgpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5
LCA3MCwgNzApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMjksIDcwLCA3MCkpKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDI5LCA3MCwgNzAp
KSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAxLCA3MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAs
IDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3MCwgNzApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzEs
IDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDMxLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDI5LCAzMSwgNzAsIDcwKSkpOworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3Rh
dGlvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24pOworCit2b2lkIGxh
eWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uKGJvb2wgb3BhcXVlTGF5ZXJz
KQoreworICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVp
bmcgdXNlZC4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
KyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxk
KGxheWVyKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAg
IGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyMCwgMjApOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6
ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVy
ZVNpemUgPSA1MTI7CisKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFy
ZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworCisgICAg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4
dHVyZVNpemUpOworCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAs
IDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDUwLCA1MCwg
NTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUx
LCA1MCwgNTApKSk7CisKKyAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3Qo
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDUwLCA1MCwgNTAsIDUwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA0OSwgNTAs
IDUwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKKyAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDQ5LCA1MCwgNTApKSk7CisgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOwor
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkp
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUxLCA1MCwg
NTApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMTAwLCA1MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwg
NTAsIDUwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUxLCA1MCwgNTApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwg
NTEsIDUwLCA1MCkpKTsKKworICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVj
dCgpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDQ5LCA1MCwgNTApKSk7Cisg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDQ5LCAxKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDQ5LCA1MCwgNTAp
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDUxLCA1MSwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUw
LCA1MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEsIDEs
IDQ5KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNDksIDUxLCA1MCwgNTApKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cit9CisKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVE
X09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aFRyYW5zbGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlv
bik7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2Uo
Ym9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwor
ICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLT5hZGRDaGlsZChsYXllcik7
CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAgICBjaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5
MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAs
IDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNp
emUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgY2hpbGQtPnNldE1hc2tz
VG9Cb3VuZHModHJ1ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
ZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAg
ICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworCisgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxk
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllci5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAs
IDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJ
bnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwg
NjAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0
KCksIEludFJlY3QoMTAsIDQzMCwgNjEsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkpOworCisg
ICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3
MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIElu
dFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjEs
IDcwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwg
SW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5maW5pc2hlZFRh
cmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYw
KSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworCisgICAgb2Nj
bHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYw
KSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKworICAgIC8qIEp1c3RpZmljYXRpb24g
Zm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXJ8OgorICAgICAgICAgICAgICAgMTAw
CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLworICAgICAg
fCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHJvdGF0ZSg5MCkgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IDMwICsgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgMTAwIHwgICAgfCAgMTAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8ICAgICAgICAgICAgICAg
fDEwICAgICAgICAgICAgICAgfAorICAgICAgfCAgICB8MTArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICB8CisgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgIDQy
MCAgICAgIHwgIHwKKyAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAgICAgICAg
ICAgfCAgfAorICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICAgICAgICAgICB8
ICB8CisgICAgICArLS0tLXwtLXwtLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwK
KyAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAg
ICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAg
ICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAg
ICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAg
ICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAg
fCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8ICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgfCAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfDEwfAorICAgICAgICAgICArLS18LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCisgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
NDkwICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMAorICAgICAqLworfQor
CitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9s
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSwgbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UpOworCit2b2lkIGxheWVyQWRkZWRUb09j
Y2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjayhib29sIG9wYXF1ZUxheWVycykK
K3sKKyAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5n
IHVzZWQuCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gY2hp
bGQyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Cisg
ICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChj
aGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsKKyAgICBwYXJlbnQtPmFkZENoaWxk
KGNoaWxkMik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAg
ICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNoaWxkVHJhbnNmb3Jt
LnJvdGF0ZSg5MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwor
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAx
MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgLy8gfGNo
aWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJmYWNlIGdldCBjb25zaWRlcmVkIGJ5IENDT2NjbHVz
aW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBvZiB8Y2hpbGR8J3MuIFRoaXMgZXhlcmNpc2VzIGRp
ZmZlcmVudCBjb2RlIGluCisgICAgLy8gbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UsIGFzIHRo
ZSB0YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4uCisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNjAsIDIwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIGNo
aWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+
c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOworICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMw
LCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkp
OworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRS
ZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzEsIDYw
LCA3MCkpKTsKKworICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgx
MCwgNDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0
KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKKworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCks
IEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAvLyBUaGlzIGlzIHRo
ZSBsaXR0bGUgcGllY2Ugbm90IG9jY2x1ZGVkIGJ5IGNoaWxkMgorICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoOSwgNDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgLy8gVGhpcyBleHRl
bmRzIHBhc3QgYm90aCBzaWRlcyBvZiBjaGlsZDIsIHNvIGl0IHdpbGwgYmUgdGhlIG9yaWdpbmFs
IHJlY3QuCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDYwLCA4MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2
MCwgODApKSk7CisgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgdHdvIGFkamFjZW50IHNpZGVzIG9m
IGNoaWxkMiwgYW5kIHNob3VsZCBpbmNsdWRlZCB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNo
IHNpZGUuCisgICAgLy8gVGhpcyBhbHNvIGRlbW9uc3RyYXRlcyB0aGF0IHRoZSByZWN0IGNhbiBi
ZSBhcmJpdHJhcnkgYW5kIGRvZXMgbm90IGdldCBjbGlwcGVkIHRvIHRoZSBsYXllcidzIHZpc2li
bGVMYXllclJlY3QoKS4KKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCAyMCwg
NzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0
KC0xMCwgNDMwLCA2MCwgNzApKSk7CisgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgdGhyZWUgYWRq
YWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBzbyBpdCBzaG91bGQgY29udGFpbiB0aGUgdW5vY2NsdWRl
ZCBwYXJ0cyBvZiBlYWNoIHNpZGUuIFRoZSBsZWZ0CisgICAgLy8gYW5kIGJvdHRvbSBlZGdlcyBh
cmUgY29tcGxldGVseSB1bm9jY2x1ZGVkIGZvciBzb21lIHJvdy9jb2x1bW4gc28gd2UgZ2V0IGJh
Y2sgdGhlIG9yaWdpbmFsIHF1ZXJ5IHJlY3QuCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgt
MTAsIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5n
ZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMTAsIDQyOSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNo
aWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAgb2Nj
bHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMw
LCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKS5pc0Vt
cHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIElu
dFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQz
MCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpLmlz
RW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCks
IEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7CisgICAgLy8gfGNoaWxk
Mnwgc2hvdWxkIGdldCBtZXJnZWQgd2l0aCB0aGUgc3VyZmFjZSB3ZSBhcmUgbGVhdmluZyBub3cK
KyAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdldCgpLCBj
aGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgVmVjdG9yPEludFJlY3Q+IHNjcmVlbiA9IG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKTsKKyAgICBWZWN0b3I8SW50
UmVjdD4gdGFyZ2V0ID0gb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCk7CisKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkw
LCAzMCwgMTAsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNjAsIDEwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5
LCAzMCwgNjAsIDEwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEwKSkpOworICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDMxLCA2MCwgMTApKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAs
IDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA2MCwg
MTApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCAx
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDI5LCAzMCwgNjAsIDEwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA2
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAyOSwgNjAsIDEwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDMw
LCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNjAsIDEwKSku
aXNFbXB0eSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkp
KTsKKyAgICAvLyBUaGlzIHJlY3QgaXMgbW9zdGx5IG9jY2x1ZGVkIGJ5IHxjaGlsZDJ8LgorICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDM5LCAxMCwgMSksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwor
ICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgdG9wL3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwu
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAxMSksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcw
KSkpOworICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgbGVmdC9yaWdodCBlbmRzIG9mIHxj
aGlsZDJ8LgorICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDM5LCA4MCwgNjApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzks
IDgwLCA2MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgNDAsIDEsIDYwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEs
IDQwLCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwg
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCA0MSwgNzAsIDYwKSkpOworCisgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3Zl
IG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6CisgICAgICAgICAgICAgICAxMDAKKyAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8
MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCisgICAgICB8ICAgIDMwICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAgICAgICAgfCAgICAgMzAg
ICA2MCAgICAgICAgIHwgICAgfGNoaWxkMnw6IFxcXFxcCisgICAgICB8IDMwICsgLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAgMzAgKy0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgMTAwIHwgICAgfCAgMTAgICAgICAgICB8
ICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8XFxcXFxcXFxc
XFxcfCAgfDEwICAgICAgICAgICAgICAgfAorICAgICAgfCAgICB8MTArLS0tLS0tLS0tLXwtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwgICstLXxcXFxcXFxcXFxcXFx8
LS0tLS0tLS0tLS0tLS0tLS0rICB8CisgICAgICB8ICAgICsgLS0tLS0tLS0tLS0tKyAgfCAgICAg
ICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgKy0tLS0tLS0tLS0tLSsvL3wg
ICAgIDQyMCAgICAgIHwgIHwKKyAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAg
ICAgICAgICAgfCAgfAorICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICAgICAg
ICAgICB8ICB8CisgICAgICArLS0tLXwtLXwtLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAg
IHwgIHwKKyAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwg
ICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAgICAgICAgICAgICAgfCAg
fAorICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAg
ICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Cisg
ICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAg
ICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAg
ICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAg
ICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgIHwg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAg
fCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgfCAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfDEwfAorICAgICAgICAgICArLS18LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICAgICAgICAgIHwgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCisgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgNDkwICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMAorICAgICAq
LworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2ss
IGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjayk7CisK
K3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNl
KGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAg
IHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLT5hZGRDaGlsZChsYXllcik7CisK
KyAgICAvLyBOb3cgcm90YXRlIHRoZSBjaGlsZCBhIGxpdHRsZSBtb3JlIHNvIGl0IGlzIG5vdCBh
eGlzLWFsaWduZWQuIFRoZSBwYXJlbnQgd2lsbCBubyBsb25nZXIgYmUgb2NjbHVkZWQgYnkgfGxh
eWVyfCwgYnV0CisgICAgLy8gdGhlIGNoaWxkJ3Mgb2NjbHVzaW9uIHNob3VsZCBiZSB1bmNoYW5n
ZWQuCisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAgICBjaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0
ZSg5NSk7CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgbGF5ZXJUcmFuc2Zvcm0u
dHJhbnNsYXRlKDEwLCAxMCk7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBj
aGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zv
cm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXll
cnMpOworCisgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisKKyAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15
TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQp
OworCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1
bW15TWF4VGV4dHVyZVNpemUpOworCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICBJbnRSZWN0IGNsaXBw
ZWRMYXllckluQ2hpbGQgPSBsYXllclRyYW5zZm9ybS5tYXBSZWN0KGxheWVyLT52aXNpYmxlTGF5
ZXJSZWN0KCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMHUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAg
IEVYUEVDVF9FUV9SRUNUKGNsaXBwZWRMYXllckluQ2hpbGQsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxk
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7CisgICAgY2xpcHBlZExh
eWVySW5DaGlsZC5tb3ZlKC0xLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5
ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAw
KTsKKyAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwor
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICBjbGlwcGVkTGF5ZXJJ
bkNoaWxkLm1vdmUoLTEsIDApOworICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7
CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBl
ZExheWVySW5DaGlsZCkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsK
KyAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7CisgICAgY2xpcHBlZExheWVySW5D
aGlsZC5tb3ZlKDAsIDEpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hp
bGQpLmlzRW1wdHkoKSk7CisgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0xKTsKKwor
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7CisgICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAg
RVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNzUsIDU1
LCAxLCAxKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzUsIDU1LCAxLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNzUsIDU1
LCAxLCAxKSkpOworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhp
c1N1cmZhY2UsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3Vy
ZmFjZSk7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFx
dWVMYXllcnMoYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgLy8gVGhpcyBpcyBzaW1pbGFyIHRv
IHRoZSBwcmV2aW91cyB0ZXN0IGJ1dCBub3cgd2UgbWFrZSBhIGZldyBvcGFxdWUgbGF5ZXJzIGlu
c2lkZSBvZiB8Y2hpbGR8IHNvIHRoYXQgdGhlIG9jY2x1ZGVkIHBhcnRzIG9mIGNoaWxkIGFyZSBu
b3QgYSBzaW1wbGUgcmVjdC4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50
LT5hZGRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKGxheWVyMSk7CisgICAgY2hp
bGQtPmFkZENoaWxkKGxheWVyMik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRy
YW5zZm9ybTsKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNo
aWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0y
NTAsIC0yNTApOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFu
c2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNDQwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMTAsIDQ1MCksIEludFNpemUoNTAwLCA2MCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CisKKyAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMi5nZXQoKSk7CisgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQoKSk7CisKKyAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0
KDksIDQzMCwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcw
KSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIElu
dFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzAp
KS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOSwgNDMwLCAxLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwg
NDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5LCA2MCwg
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTAsIDQyOSwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwg
MSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRS
ZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA1
MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwg
SW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoY2hpbGQuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0
MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwor
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDM5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7
CisKKyAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxh
eWVyMXwgYW5kIHxsYXllcjJ8OgorCisgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXIx
fDogLy8vLy8KKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICBWaXNpYmxlIHJlZ2lv
biBvZiB8bGF5ZXIyfDogXFxcXFwKKyAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKworICAgICAgIHwgICAgIHwgICAgICAgICAgICAgICB8MTAgICAgICAgICAg
ICAgICB8CisgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsgIHwK
KyAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAgICAgfCAgfAorICAgICAg
IHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98NjAgICAgICAgICAgICB8ICB8CisgICAgICAgfCAgfCAg
fFxcXFxcXFxcXFxcXHwvL3wgICAgICAgICAgICAgIHwgIHwKKyAgICAgICArLS18LS18LS0tLS0t
LS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAgfAorICAgICAgICAyMHwxMHwgICAgIDcwICAgICB8
ICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgIHwgIHwKKyAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgfCAgfAorICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8
CisgICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgIHwg
IHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8MTB8CisgICAgICAgICAgfCAgKy0tLS0t
LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICB8ICAgICAgICAgICAgICAg
fCA0OTAgICAgICAgICAgICAgfAorICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICAgICAgNjAgICAgICAgICAgICAgICA0NDAKKyAgICAgKi8K
K30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRl
c3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMsIGxh
eWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzKTsKKwordm9p
ZCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKGJvb2wgb3Bh
cXVlTGF5ZXJzKQoreworICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3Jt
cyBhcmUgYmVpbmcgdXNlZC4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBw
YXJlbnQtPmFkZENoaWxkKGNoaWxkMSk7CisgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIpOwor
ICAgIGNoaWxkMS0+YWRkQ2hpbGQobGF5ZXIxKTsKKyAgICBjaGlsZDItPmFkZENoaWxkKGxheWVy
Mik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAgICBjaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0
ZSg5MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgy
MCwgNDApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIGNoaWxkMS0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKKyAgICBjaGlsZDItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisK
KyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Cisg
ICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICBwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFw
cGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlM
YXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworCisgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOworCisg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMi5nZXQo
KSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCA0MCwgODAsIDYwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQyMCwgNjAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQy
MCwgNjAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LmdldCgpLCBJbnRSZWN0KC0xLCA0MjAsIDYwLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0MTksIDYwLCA4MCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVj
dCgwLCA0MjAsIDYxLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0MjAsIDYwLCA4MSkpKTsKKworICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgpLCBjaGlsZDItPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKKyAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDMwLCA3
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwor
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEsIDQzMCwgNzAsIDcwKSkp
OworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRS
ZWN0KDAsIDQyOSwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDAsIDQzMCwgNzEsIDcwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDAsIDQzMCwgNzAs
IDcxKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMS5n
ZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEu
Z2V0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDMwLCA4MCwgNzApKSk7CisK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcw
KSkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgyMCwgNDAsIDgwLCA2MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxOSwgNDAsIDgwLCA2MCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzks
IDgwLCA2MCkpKTsKKworICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNp
b246CisgICAgICAgICAgICAgICAxMDAKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCAgICAzMCAgICAgICAgICAgICAg
IHwgICAgICAgY2hpbGQxCisgICAgICB8ICAzMCsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKworICAxMDAgfCAgNDB8ICAgICAgICAgICAgICAgIHwgICAgIGNoaWxkMiAgICAgIHwK
KyAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICB8
ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgfCAgfCB8ICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgIHwgIHwgfCAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICArLS18LXwtLS0tLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgICAgIHwgfAorICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgNTAwCisgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfAorICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwtKworICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICA1MDAKKyAgICAgKi8KK30KKworVEVTVF9PUEFRVUVfQU5EX1BB
SU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc3VyZmFjZU9jY2x1c2lvbldpdGhP
dmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcywgc3VyZmFjZU9jY2x1c2lvbldpdGhPdmVybGFwcGlu
Z1NpYmxpbmdTdXJmYWNlcyk7CisKK3ZvaWQgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
Ym9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
MiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgp
OworICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQxKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGNo
aWxkMik7CisgICAgY2hpbGQxLT5hZGRDaGlsZChsYXllcjEpOworICAgIGNoaWxkMi0+YWRkQ2hp
bGQobGF5ZXIyKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwor
ICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGRUcmFuc2Zv
cm0ucm90YXRlKDkwKTsKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
CisKKyAgICAvLyBUaGUgb3duaW5nIGxheWVycyBoYXZlIHZlcnkgZGlmZmVyZW50IGJvdW5kcyBm
cm9tIHRoZSBzdXJmYWNlcyB0aGF0IHRoZXkgb3duLgorICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDEw
LCAxMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEw
LCAxMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgLy8gTWFrZSB0aGVtIGJvdGggcmVuZGVyIHN1cmZh
Y2VzCisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9u
cygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
MC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgIGNoaWxkMS0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKKyAgICBjaGlsZDItPnNldEZpbHRlcnMoZmlsdGVycyk7CisKKyAgICBjaGls
ZDEtPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOworICAgIGNoaWxkMi0+c2V0TWFza3NUb0JvdW5k
cyhmYWxzZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICBwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworCisgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cisg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwg
MTAwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyMi5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCks
IEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0x
MCwgNDE5LCA3MCwgODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAs
IDgxKSkpOworCisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgt
MTAsIDQyMCwgNzAsIDgwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDIuZ2V0KCksIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwg
ODApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwg
SW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKKyAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAw
KSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyLmdldCgp
KTsKKyAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi5nZXQo
KSwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQoKSk7CisKKyAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50
UmVjdCgtMTEsIDQzMCwgODAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0xMCwgNDI5LCA4MCwgNzApKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0
MzAsIDgxLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
MS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcxKSkpOworCisgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMS5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlz
aGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEuZ2V0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgw
LCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAg
IEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNU
X0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMjAsIDIwLCA4MCwgODApKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyMCwgNzAsIDgwKSkpOworICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAy
MCwgNzAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAxOSwgNzAsIDgwKSkpOworCisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgxOSwgMzAsIDgwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMjksIDgwLCA3MCkpKTsKKworICAgIC8qIEp1c3Rp
ZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246CisgICAgICAgICAgICAgICAxMDAKKyAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICAgIDIwICAgICAgICAgICAgICAg
fCAgICAgICBsYXllcjEKKyAgICAgIHwgIDMwKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCisgIDEwMCB8ICAzMHwgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICAgICAgfAor
ICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgIHwg
IHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICB8ICB8IHwgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgfCAgfCB8ICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0rICAg
ICAgICAgICAgICAgfCB8CisgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfCA1MTAKKyAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8CisgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICB8IHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgfCB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfC0rCisgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAg
ICAgICAgICAgICAgICAgICAgIDUxMAorICAgICAqLworfQorCitURVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSwgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOworCit2b2lkIHN1cmZhY2VP
Y2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyhib29sIG9wYXF1ZUxheWVy
cykKK3sKKyAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJl
aW5nIHVzZWQuCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5h
ZGRDaGlsZChjaGlsZDEpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQyKTsKKyAgICBjaGls
ZDEtPmFkZENoaWxkKGxheWVyMSk7CisgICAgY2hpbGQyLT5hZGRDaGlsZChsYXllcjIpOworCisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQxVHJhbnNmb3JtOworICAgIGNoaWxkMVRyYW5z
Zm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNoaWxkMVRyYW5zZm9ybS5yb3RhdGUoLTkw
KTsKKyAgICBjaGlsZDFUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGQyVHJhbnNmb3JtOworICAgIGNoaWxkMlRyYW5zZm9ybS50
cmFuc2xhdGUoMjUwLCAyNTApOworICAgIGNoaWxkMlRyYW5zZm9ybS5yb3RhdGUoOTApOworICAg
IGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAvLyBUaGUgb3du
aW5nIGxheWVycyBoYXZlIHZlcnkgZGlmZmVyZW50IGJvdW5kcyBmcm9tIHRoZSBzdXJmYWNlcyB0
aGF0IHRoZXkgb3duLgorICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
OworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZDFU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDIwKSwgSW50U2l6ZSgxMCwgMTApKTsKKyAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoLTEwLCAtMjApLCBJbnRTaXplKDUxMCwgNTIwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJz
KTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgY2hpbGQy
VHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7CisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVy
cyk7CisKKyAgICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3VyZmFjZXMKKyAgICBGaWx0ZXJP
cGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJh
dGlvbjo6R1JBWVNDQUxFKSk7CisgICAgY2hpbGQxLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAg
IGNoaWxkMi0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKworICAgIGNoaWxkMS0+c2V0TWFza3NUb0Jv
dW5kcyhmYWxzZSk7CisgICAgY2hpbGQyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKKworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Owor
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBp
bnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVy
TGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAxMDAwKSk7CisKKyAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsK
KworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQy
MCwgNzAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LmdldCgpLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50
UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7CisKKyAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyLmdldCgpKTsKKyAgICBvY2Ns
dXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi5nZXQoKSwgY2hpbGQyLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQy
MCwgLTIwLCA4MCwgOTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MTksIC0y
MCwgODAsIDkwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQx
LmdldCgpLCBJbnRSZWN0KDQyMCwgLTIxLCA4MCwgOTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIwLCAtMTksIDgwLCA5MCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50
UmVjdCg0MjEsIC0yMCwgODAsIDkwKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGNoaWxkMS5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZDEuZ2V0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMCwg
MjAsIDkwLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCg5LCAyMCwgOTAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAxOSwgOTAsIDgwKSkpOwor
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDExLCAyMCwgOTAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAyMSwgOTAsIDgwKSkpOworCisgICAgLyogSnVzdGlm
aWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAgICAgICAgICAgICAgIDEwMAorICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwyMCAgICAgICAgICAgICAgICAgICB8
ICAgICAgIGxheWVyMQorICAgICAxMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KworICAxMDAgfHwgMzAgICAgICAgICAgICAgICAgIHwgICAgIGxheWVyMiAgfAorICAgICAgfDIw
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8fCB8ICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICB8IHwKKyAgICAgIHx8IHwgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgIHwgfAorICAgICAgfHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgfCB8CisgICAgICArfC18LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICB8IHwKKyAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA1MTAKKyAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEwIHwgfAorICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwKKyAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfAorICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Cisg
ICAgICAgfCB8ICAgICAgICAgICAgICAgIDUyMCAgICAgICAgICAgICB8IHwKKyAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICA1MTAKKyAgICAgKi8KK30K
KworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zLCBzdXJmYWNl
T2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMpOworCit2b2lkIG9jY2x1
c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMoYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgLy8g
VGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgorICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGJsdXJMYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IG9wYWNpdHlMYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IG9wYXF1ZUxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoYmx1
ckxheWVyKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKG9wYWNpdHlMYXllcik7CisgICAgcGFyZW50
LT5hZGRDaGlsZChvcGFxdWVMYXllcik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKKyAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAg
IGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRl
KC0yNTAsIC0yNTApOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhibHVyTGF5ZXIuZ2V0KCksIGxh
eWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVl
LCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhcXVl
TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3Rpbmcob3BhY2l0eUxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAotICAgIHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZVN1cmZhY2UodHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsK
LSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5ZXIgPSBjcmVhdGVMYXllcihw
YXJlbnQsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7CiAgICAgICAgIEZpbHRlck9wZXJh
dGlvbnMgZmlsdGVyczsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJh
dGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwot
ICAgICAgICByZXR1cm4gbGF5ZXI7Ci0gICAgfQotCi0gICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIGNyZWF0ZURyYXdpbmdMYXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
KiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQot
ICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclB0clR5cGUgbGF5ZXIg
PSBUeXBlczo6Y3JlYXRlQ29udGVudExheWVyKCk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBsYXllclB0ciA9IGxheWVyLmdldCgpOwotICAgICAgICBzZXRQcm9w
ZXJ0aWVzKGxheWVyUHRyLCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOwotCi0gICAgICAg
IGlmIChvcGFxdWVMYXllcnMpCi0gICAgICAgICAgICBsYXllclB0ci0+c2V0T3BhcXVlKG9wYXF1
ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbGF5ZXJQdHItPnNldE9wYXF1ZShmYWxz
ZSk7Ci0gICAgICAgICAgICBpZiAob3BhcXVlKQotICAgICAgICAgICAgICAgIGxheWVyUHRyLT5z
ZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsYXllclB0ci0+c2V0T3BhcXVlQ29udGVudHNS
ZWN0KEludFJlY3QoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGxh
eWVyLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybiBsYXllclB0cjsKKyAgICAgICAgZmlsdGVy
cy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgo
MTAsIFdlYkNvcmU6OlBlcmNlbnQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsKKyAgICAgICAg
Ymx1ckxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIH0KIAotICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFjZSh0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJv
b2wgb3BhcXVlKQogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIGxheWVyID0gY3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdHJhbnNmb3JtLCBwb3NpdGlv
biwgYm91bmRzLCBvcGFxdWUpOwogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CiAg
ICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkp
OwotICAgICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICAgICAgcmV0dXJuIGxh
eWVyOworICAgICAgICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICB9CiAK
LQotICAgIFRlc3RDb250ZW50TGF5ZXJJbXBsKiBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVy
SW1wbCogcm9vdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChyb290ID09IG1fcm9vdC5nZXQoKSk7
Ci0gICAgICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0OwotICAgICAgICBp
bnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgICAgICBBU1NFUlQoIXJvb3QtPnJl
bmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAg
ICAgICAgcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7Ci0gICAgICAgIHJvb3QtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKLSAgICAgICAgbV9y
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbC5hcHBlbmQobV9yb290LmdldCgpKTsKLQotICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShyb290LCByb290LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVy
U3VyZmFjZUxheWVyTGlzdEltcGwsIGR1bW15TGF5ZXJMaXN0LCAwLCBkdW1teU1heFRleHR1cmVT
aXplKTsKLSAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmls
dGVyczsKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6T1BB
Q0lUWSkpOworICAgICAgICBvcGFjaXR5TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAg
fQogCi0gICAgVGVzdENvbnRlbnRMYXllckNocm9taXVtKiBjYWxjRHJhd0V0YyhUZXN0Q29udGVu
dExheWVyQ2hyb21pdW0qIHJvb3QpCi0gICAgewotICAgICAgICBBU1NFUlQocm9vdCA9PSBtX3Jv
b3QuZ2V0KCkpOwotICAgICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7Ci0gICAgICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAg
ICAgIEFTU0VSVCghcm9vdC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgcm9vdC0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwotICAgICAgICByb290LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKLSAgICAg
ICAgcm9vdC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCByb290LT5ib3Vu
ZHMoKSkpOwotICAgICAgICBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bS5hcHBlbmQo
bV9yb290KTsKLQotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LCByb290LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtLCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0gICAgICAgIHJldHVybiByb290OwotICAgIH0KIAor
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAg
ICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxh
eWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIC8v
IE9wYWNpdHkgbGF5ZXIgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG9wYWNpdHlMYXllci5n
ZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5
TGF5ZXIuZ2V0KCksIG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0
eSgpKTsKKworICAgIC8vIEFuZCBoYXMgbm90aGluZyB0byBjb250cmlidXRlIHRvIGl0cyBwYXJl
bnQgc3VyZmFjZS4KKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKKworICAgIC8vIE9wYXF1ZSBs
YXllciB3aWxsIGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgorICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG9wYXF1ZUxheWVyLmdldCgpKTsKKyAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLmdldCgpLCBv
cGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDMw
LCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkp
OworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIC8vIEFuZCBpdCBnZXRzIHRyYW5zbGF0ZWQgdG8gdGhl
IHBhcmVudCBzdXJmYWNlLgorICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Cisg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOworCisgICAgLy8gVGhlIGJsdXIgbGF5ZXIgbmVlZHMgdG8gdGhyb3cgYXdh
eSBhbnkgb2NjbHVzaW9uIGZyb20gb3V0c2lkZSBpdHMgc3VidHJlZS4KKyAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHko
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmlzRW1wdHkoKSk7CisKKyAgICAvLyBBbmQgaXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNp
b24uCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGJsdXJMYXllci5nZXQo
KSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXIu
Z2V0KCksIGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CisKKyAg
ICAvLyBCdXQgdGhlIG9wYXF1ZSBsYXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhl
IHBhcmVudC4KKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKK30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Rfb2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycywgb2NjbHVzaW9uSW50ZXJh
Y3Rpb25XaXRoRmlsdGVycyk7CisKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKGJvb2wg
b3BhcXVlTGF5ZXJzKQorewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5
TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50
LT5hZGRDaGlsZChwYXJlbnRMYXllcik7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CisK
KyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUs
IEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgcGFyZW50TGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisKKyAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsK
KworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsK
KyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
YXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1t
eUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworCisg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkp
OworCisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAw
LCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEw
MCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Cit9CisKK1RFU1RfT1BBUVVFX0FORF9Q
QUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVy
VGlsZSwgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKTsKKwordm9pZCBzY3JlZW5TY2lzc29yUmVj
dE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7CisgICAgcGFyZW50LT5hZGRD
aGlsZChsYXllcik7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBzZXRCYXNlUHJvcGVydGllcyh0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJv
dW5kcykKLSAgICB7Ci0gICAgICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAg
ICAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
OwotICAgICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAg
ICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgIGxheWVyLT5zZXRCb3Vu
ZHMoYm91bmRzKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFByb3BlcnRpZXMoTGF5ZXJDaHJvbWl1
bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCi0gICAgewotICAgICAg
ICBzZXRCYXNlUHJvcGVydGllcyhsYXllciwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldFByb3BlcnRpZXMoQ0NMYXllckltcGwqIGxheWVyLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQotICAgIHsKLSAgICAgICAgc2V0QmFzZVByb3Bl
cnRpZXMobGF5ZXIsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7CisgICAgRmlsdGVyT3Bl
cmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgICAgIGxheWVyLT5zZXRDb250
ZW50Qm91bmRzKGxheWVyLT5ib3VuZHMoKSk7Ci0gICAgfQorICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCi0gICAgLy8gVGhl
c2UgaG9sZCBvd25lcnNoaXAgb2YgdGhlIGxheWVycyBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0
ZXN0LgotICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclB0clR5cGUgbV9yb290OwotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1
bTsKLSAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBs
OwotfTsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxp
c3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CiAKLSNkZWZpbmUgUlVOX1RF
U1RfTUFJTl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKLSAgICBjbGFzcyBDbGFz
c05hbWUjI01haW5UaHJlYWRPcGFxdWVMYXllcnMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDT2NjbHVz
aW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMsIHRydWU+IHsgfTsgXAotICAgIFRFU1RfRihD
bGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVMYXllcnMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7
IH0KLSNkZWZpbmUgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX1BBSU5UUyhDbGFzc05hbWUp
IFwKLSAgICBjbGFzcyBDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVQYWludHMgOiBwdWJsaWMg
Q2xhc3NOYW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMsIGZhbHNlPiB7
IH07IFwKLSAgICBURVNUX0YoQ2xhc3NOYW1lIyNNYWluVGhyZWFkT3BhcXVlUGFpbnRzLCBydW5U
ZXN0KSB7IHJ1bk15VGVzdCgpOyB9Ci0KLSNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BB
UVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKLSAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJlYWRP
cGFxdWVMYXllcnMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBs
VGhyZWFkVHlwZXMsIHRydWU+IHsgXAotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbDsgXAotICAgIH07IFwKLSAgICBURVNUX0YoQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVl
TGF5ZXJzLCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9Ci0jZGVmaW5lIFJVTl9URVNUX0lNUExf
VEhSRUFEX09QQVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBcCi0gICAgY2xhc3MgQ2xhc3NOYW1lIyNJ
bXBsVGhyZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENsYXNzTmFtZTxDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0SW1wbFRocmVhZFR5cGVzLCBmYWxzZT4geyBcCi0gICAgICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsOyBcCi0gICAgfTsgXAotICAgIFRFU1RfRihDbGFzc05hbWUjI0ltcGxU
aHJlYWRPcGFxdWVQYWludHMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7IH0KLQotI2RlZmluZSBB
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ2xhc3NOYW1lKSBcCi0gICAgUlVOX1RFU1RfTUFJ
Tl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKLSAgICBSVU5fVEVTVF9NQUlOX1RI
UkVBRF9PUEFRVUVfUEFJTlRTKENsYXNzTmFtZSkgXAotICAgIFJVTl9URVNUX0lNUExfVEhSRUFE
X09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKSBcCi0gICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BB
UVVFX1BBSU5UUyhDbGFzc05hbWUpCi0KLSNkZWZpbmUgTUFJTl9BTkRfSU1QTF9USFJFQURfVEVT
VChDbGFzc05hbWUpIFwKLSAgICBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfTEFZRVJTKENs
YXNzTmFtZSkgXAotICAgIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NO
YW1lKQotCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zIDogcHVibGljIENDT2NjbHVz
aW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZv
aWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihw
YXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsKKyAgICBwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJT
dXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVt
bXlNYXhUZXh0dXJlU2l6ZSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAs
IDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEs
IDcwLCA3MCkpKTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJl
Y3QoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcw
KSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDI5LCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDI5LCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTAwLCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSkpOwotICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzEsIDcwLCA3MCkpKTsKLSAgICB9
Ci19OworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSk7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi10ZW1wbGF0ZTxjbGFz
cyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
Um90YXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1
ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwotICAgICAgICBsYXllclRy
YW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgICAgICBsYXllclRyYW5zZm9ybS5yb3Rh
dGUoOTApOwotICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xh
eWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIHRydWUpOwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOworICAgIC8vIE9j
Y2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5kcy4KKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAvLyBUZXN0
IHdpdGhvdXQgYW55IHNjaXNzb3JzLgorICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
IG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwogCi0gICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwot
ICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwg
MzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLnVz
ZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAs
IDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3
MCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5KCkp
OwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgNzApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkp
KTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcw
KSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3
MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMjksIDcwLCA3MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAyOSwgNzAs
IDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3
MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3MCwgNzAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzEs
IDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwg
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAz
MSwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAs
IDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjks
IDMxLCA3MCwgNzApKSk7Ci0gICAgfQotfTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotQUxMX0ND
T0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgy
MDAsIDIwMCwgMTAwLCAxMDApKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1
ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQgOiBw
dWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyMCwgMjApOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVy
KHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUpOwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOworICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Cit9CiAK
LSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSwg
c2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkp
OwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCg0OSwgNTAsIDUwLCA1MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkp
OwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCg1MCwgNTEsIDUwLCA1MCkpKTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVy
U2Npc3NvclJlY3QoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA0
OSwgNTAsIDUwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotICAgICAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDQ5LCA1MCwgNTApKSk7Ci0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDQ5LCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOwotICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKLSAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNTEsIDUwLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSkpOwot
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAxMDAsIDUwLCAxKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7
Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUxLCA1MCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkp
KTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKLSAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCg0OSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSkpOwotICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDQ5LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUx
LCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDUxLCA1MCwgNTApKS5p
c0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUxLCAxLCA0OSksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOwotICAg
ICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKLSAgICB9Ci19OwotCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZCk7Ci0KLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBi
b29sIG9wYXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90
YXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxh
eWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgICAgICBjaGlsZFRyYW5z
Zm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUo
OTApOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Cit2b2lk
IGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKK3sKKyAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVu
dC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5
ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwogCi0gICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIo
cGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSk7Ci0gICAgICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsK
KyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUs
IEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgcGFyZW50TGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlw
ZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRl
eHR1cmVTaXplID0gNTEyOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQw
LCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMw
LCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkp
OwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkp
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVj
dCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjEsIDcwKSkpOwotICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkp
KTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwg
NjEsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQs
IEludFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOwotICAgICAgICBvY2NsdXNpb24uZmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsK
LSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwg
NzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5y
ZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3
MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7
Ci0KLSAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDQw
LCA3MCwgNjApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgNDAs
IDcwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLQotICAgICAgICAvKiBK
dXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxheWVyfDoKLSAgICAg
ICAgICAgICAgICAgICAxMDAKLSAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24g
b2YgfGxheWVyfDogLy8vLy8KLSAgICAgICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgcm90YXRlKDkwKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwK
LSAgICAgICAgICB8IDMwICsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAg
ICAgICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LSAgICAgIDEwMCB8ICAgIHwgIDEwICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgID09PiAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAgICAgICAgIHwK
LSAgICAgICAgICB8ICAgIHwxMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAg
ICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIHwK
LSAgICAgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgIDQyMCAgICAgIHwgIHwK
LSAgICAgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICArLS0tLXwtLXwtLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgIDIwfDEwfCAgICAgNzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAw
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMHwK
LSAgICAgICAgICAgICAgICstLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsK
LSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKLSAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCi0gICAgICAgICAqLwotICAgIH0KLX07Cisg
ICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tF
Ul9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKTsKKyAgICBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0
dXJlU2l6ZSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNs
YXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RWaXNpdFRhcmdldFR3b1RpbWVzIDogcHVibGljIEND
T2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgot
ICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNoaWxkVHJhbnNmb3JtOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgICAgICBjaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJl
bnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDAp
KTsKLSAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0gICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdM
YXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUpOwotICAgICAgICAvLyB8Y2hpbGQyfCBtYWtlcyB8cGFyZW50
fCdzIHN1cmZhY2UgZ2V0IGNvbnNpZGVyZWQgYnkgQ0NPY2NsdXNpb25UcmFja2VyIGZpcnN0LCBp
bnN0ZWFkIG9mIHxjaGlsZHwncy4gVGhpcyBleGVyY2lzZXMgZGlmZmVyZW50IGNvZGUgaW4KLSAg
ICAgICAgLy8gbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UsIGFzIHRoZSB0YXJnZXQgc3VyZmFj
ZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4uCi0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDYwLCAyMCksIHRy
dWUpOwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVz
OjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEw
LCAxMDAwLCAxMDAwKSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMik7CisgICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0K
LSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyKTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVY
UEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwg
NjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICAg
ICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVj
dCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEw
LCA0MzEsIDYwLCA3MCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAs
IDcwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGl0dGxlIHBpZWNlIG5v
dCBvY2NsdWRlZCBieSBjaGlsZDIKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0
MzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVj
dCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgYm90aCBz
aWRlcyBvZiBjaGlsZDIsIHNvIGl0IHdpbGwgYmUgdGhlIG9yaWdpbmFsIHJlY3QuCi0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOSwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSkpOwotICAgICAg
ICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0d28gYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBhbmQg
c2hvdWxkIGluY2x1ZGVkIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4KLSAgICAg
ICAgLy8gVGhpcyBhbHNvIGRlbW9uc3RyYXRlcyB0aGF0IHRoZSByZWN0IGNhbiBiZSBhcmJpdHJh
cnkgYW5kIGRvZXMgbm90IGdldCBjbGlwcGVkIHRvIHRoZSBsYXllcidzIHZpc2libGVMYXllclJl
Y3QoKS4KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgMjAsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwg
NjAsIDcwKSkpOwotICAgICAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0aHJlZSBhZGphY2VudCBz
aWRlcyBvZiBjaGlsZDIsIHNvIGl0IHNob3VsZCBjb250YWluIHRoZSB1bm9jY2x1ZGVkIHBhcnRz
IG9mIGVhY2ggc2lkZS4gVGhlIGxlZnQKLSAgICAgICAgLy8gYW5kIGJvdHRvbSBlZGdlcyBhcmUg
Y29tcGxldGVseSB1bm9jY2x1ZGVkIGZvciBzb21lIHJvdy9jb2x1bW4gc28gd2UgZ2V0IGJhY2sg
dGhlIG9yaWdpbmFsIHF1ZXJ5IHJlY3QuCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
LTEwLCA0MzAsIDYwLCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQs
IEludFJlY3QoLTEwLCA0MzAsIDYwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hp
bGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDUwMCwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKLQotICAgICAgICBvY2NsdXNpb24u
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzAp
KS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwg
SW50UmVjdCg5LCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAs
IDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAsIDYwLCA4MCkpLmlzRW1w
dHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVj
dCgxMSwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3
MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihjaGlsZCk7Ci0gICAgICAgIC8vIHxjaGlsZDJ8IHNob3VsZCBnZXQgbWVy
Z2VkIHdpdGggdGhlIHN1cmZhY2Ugd2UgYXJlIGxlYXZpbmcgbm93Ci0gICAgICAgIG9jY2x1c2lv
bi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzAsIDEwLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotCi0gICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA2
MCwgMTApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDI5LCAzMCwgNjAsIDEwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDYwLCAxMCkpKTsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA2
MCwgMTApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMzAsIDMxLCA2MCwgMTApKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3
MCwgNjApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNjAsIDEw
KSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEs
IDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjks
IDMwLCA2MCwgMTApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA2
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMw
LCAyOSwgNjAsIDEwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwg
MSwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgz
MSwgMzAsIDYwLCAxMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKS5pc0VtcHR5KCkp
OwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgICAgIC8v
IFRoaXMgcmVjdCBpcyBtb3N0bHkgb2NjbHVkZWQgYnkgfGNoaWxkMnwuCi0gICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoOTAsIDM5LCAxMCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgICAgICAvLyBU
aGlzIHJlY3QgZXh0ZW5kcyBwYXN0IHRvcC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgotICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDExKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAg
ICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgbGVmdC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8
LgotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAsIDM5LCA4MCwgNjAp
KSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2
MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAs
IDYwKSkpOwotCi0gICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNp
b24gZnJvbSB8bGF5ZXJ8OgotICAgICAgICAgICAgICAgICAgIDEwMAotICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgfDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLwotICAgICAgICAgIHwgICAg
MzAgICAgICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8
ICAgICAzMCAgIDYwICAgICAgICAgfCAgICB8Y2hpbGQyfDogXFxcXFwKLSAgICAgICAgICB8IDMw
ICsgLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAg
fCAgMzAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIDEwMCB8ICAg
IHwgIDEwICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgID09PiAgICAg
fCAgICAgfFxcXFxcXFxcXFxcXHwgIHwxMCAgICAgICAgICAgICAgIHwKLSAgICAgICAgICB8ICAg
IHwxMCstLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAg
fCAgKy0tfFxcXFxcXFxcXFxcXHwtLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgICAgICB8ICAg
ICsgLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
fCAgfCAgKy0tLS0tLS0tLS0tLSsvL3wgICAgIDQyMCAgICAgIHwgIHwKLSAgICAgICAgICB8ICAg
IHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
fCAgfCAgfC8vLy8vLy8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICAg
IHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
fCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICArLS0t
LXwtLXwtLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
Ky0tfC0tfC0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
IDIwfDEwfCAgICAgNzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMHwKLSAgICAgICAgICAgICAg
ICstLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTAwCi0gICAgICAgICAqLwotICAgIH0KLX07CisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdFZpc2l0VGFyZ2V0VHdvVGltZXMpOworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi10ZW1w
bGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tl
clRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlU
ZXN0KCkKLSAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3Jt
OwotICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgICAgICBj
aGlsZFRyYW5zZm9ybS5yb3RhdGUoOTUpOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xh
dGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFu
c2Zvcm07Ci0gICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTApOwotCi0gICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVh
dGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEw
MCwgMTAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkID0gdGhp
cy0+Y3JlYXRlTGF5ZXIocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzAp
LCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRy
dWUpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0
aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIGNhbGNEcmF3RXRjKHBh
cmVudCk7Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlw
ZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgICAgIEludFJl
Y3QgY2xpcHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXItPnZp
c2libGVMYXllclJlY3QoKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChjbGlwcGVkTGF5ZXJJbkNoaWxk
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0Vt
cHR5KCkpOwotICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNo
aWxkKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAgICAgICAgY2xp
cHBlZExheWVySW5DaGlsZC5tb3ZlKDEsIDApOwotICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxk
Lm1vdmUoMSwgMCk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0Vt
cHR5KCkpOwotICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwotICAgICAg
ICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgY2xp
cHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAgICAgICAgY2xpcHBlZExheWVySW5DaGls
ZC5tb3ZlKDAsIDEpOwotICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXll
ckluQ2hpbGQpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAgICAg
ICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOwotCi0gICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hl
ZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
ICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgw
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDc1LCA1NSwgMSwg
MSkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3NSwgNTUsIDEsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg3NSwgNTUsIDEsIDEp
KSk7Ci0gICAgfQotfTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwg
MTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIAotQUxMX0NDT0NDTFVTSU9OVFJB
Q0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXMpOwor
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNs
YXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09wYXF1ZUNoaWxkcmVuIDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJv
dGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xh
dGUoMjUwLCAyNTApOwotICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgICAg
ICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhp
cy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
LSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVM
YXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApKTsKLSAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0gICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEw
LCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGls
ZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDQ1MCksIEludFNpemUoNTAw
LCA2MCksIHRydWUpOwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGxheWVyMSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwg
NjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwg
NjAsIDcwKSkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwot
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7
Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDUwMCwgNjAsIDEpLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkp
KTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOwot
ICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGls
ZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkp
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotCi0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMw
LCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDM5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDEwMCwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKLQotICAgICAgICAvKiBKdXN0aWZpY2F0
aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxheWVyMXwgYW5kIHxsYXllcjJ8Ogot
Ci0gICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjF8OiAvLy8vLwotICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5
ZXIyfDogXFxcXFwKLSAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLSAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAgICAg
ICAgIHwKLSAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsg
IHwKLSAgICAgICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3wgICAgIDQyMCAgICAgIHwgIHwK
LSAgICAgICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3w2MCAgICAgICAgICAgIHwgIHwKLSAg
ICAgICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3wgICAgICAgICAgICAgIHwgIHwKLSAgICAg
ICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLXwtLSsgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAg
ICAgIDIwfDEwfCAgICAgNzAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAg
fCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAgfCAgfCAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgICAgfCAgfCAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgIHwxMHwKLSAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwg
NDkwICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAgIDYwICAgICAgICAgICAgICAgNDQwCi0g
ICAgICAgICAqLwotICAgIH0KLX07CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0Vt
cHR5KCkpOworfQogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdFN1cmZhY2VXaXRoVHdvT3BhcXVlQ2hpbGRyZW4pOworVEVTVF9PUEFRVUVfQU5EX1BB
SU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJD
dWxsZWRUaWxlLCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOwogCi10ZW1wbGF0ZTxj
bGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3MgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRl
c3QoKQotICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07
Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgICAgIGNo
aWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0
ZSgtMjUwLCAtMjUwKTsKK3ZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29s
IG9wYXF1ZUxheWVycykKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVu
dC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwog
Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlz
LT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxk
MSA9IHRoaXMtPmNyZWF0ZVN1cmZhY2UocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2lu
dCgzMCwgMzApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBhcmVudCwgY2hpbGRUcmFuc2Zv
cm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKLSAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdM
YXllcihjaGlsZDEsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwg
SW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVu
dExheWVyVHlwZSogbGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMiwgdGhp
cy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEw
KSwgdHJ1ZSk7Ci0gICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CisgICAgRmlsdGVyT3BlcmF0
aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246
OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAg
IGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5k
ZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAg
ICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAw
LCAxMDAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3Bh
cXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIpOworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9
IDUxMjsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0x
MCwgNDE5LCA3MCwgODApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEp
KSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEw
LCA0MjAsIDcwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMiwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3Qo
LTEwLCA0MjAsIDcxLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOwotICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAwKSk7Ci0K
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMik7Ci0gICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLCBjaGlsZDIt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxKTsKLQotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMw
LCA4MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQxLCBJbnRSZWN0KC0xMSwgNDMwLCA4MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDI5LCA4MCwgNzApKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0x
MCwgNDMwLCA4MSwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzEpKSk7Ci0KLSAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMSk7Ci0gICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwg
MjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwotICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAy
MCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygp
KTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSkpOwotCi0gICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDIwLCA3MCwg
ODApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDI5LCAyMCwgNzAsIDgwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMTksIDcwLCA4MCkpKTsKLQotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwLCAzMCwgODAs
IDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgxOSwgMzAsIDgwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAsIDI5LCA4MCwgNzApKSk7Ci0KLSAgICAgICAg
LyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKLSAgICAgICAgICAgICAg
ICAgICAxMDAKLSAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgIHwg
ICAgMjAgICAgICAgICAgICAgICB8ICAgICAgIGxheWVyMQotICAgICAgICAgIHwgIDMwKyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAxMDAgfCAgMzB8ICAgICAgICAg
ICAgICAgIHwgICAgIGxheWVyMiAgICAgIHwKLSAgICAgICAgICB8MjArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgfAotICAgICAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICB8IHwKLSAgICAgICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgIHwgfAotICAgICAgICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICAgfCB8Ci0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwgNTEwCi0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKLSAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAot
ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAg
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICAgfCAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LSsKLSAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEw
Ci0gICAgICAgICAqLwotICAgIH0KLX07CisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNl
dENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50
KTsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RP
dmVybGFwcGluZ1N1cmZhY2VTaWJsaW5ncyk7CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogCi10ZW1wbGF0ZTxj
bGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3JtcyA6IHB1YmxpYyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoK
LSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjaGlsZDFUcmFuc2Zvcm07Ci0gICAgICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoMjUw
LCAyNTApOwotICAgICAgICBjaGlsZDFUcmFuc2Zvcm0ucm90YXRlKC05MCk7Ci0gICAgICAgIGNo
aWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY2hpbGQyVHJhbnNmb3JtOwotICAgICAgICBjaGlsZDJUcmFuc2Zvcm0udHJh
bnNsYXRlKDI1MCwgMjUwKTsKLSAgICAgICAgY2hpbGQyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0g
ICAgICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJv
b3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAx
MDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+
Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMjAp
LCBJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBj
aGlsZDIgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBhcmVudCwgY2hpbGQyVHJhbnNmb3JtLCBGbG9h
dFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hp
bGQxLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUo
NTEwLCA1MTApLCB0cnVlKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIGxheWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUp
OwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpS
ZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAx
MDAwLCAxMDAwKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcjIpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgt
MTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0
MjAsIDcwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDIsIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3Qo
LTEwLCA0MjAsIDcwLCA4MSkpKTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY2hpbGQyKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDIsIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
LSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcjEpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CiAKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkpOwotICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MTksIC0yMCwg
ODAsIDkwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
MSwgSW50UmVjdCg0MjAsIC0yMSwgODAsIDkwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjAsIC0xOSwgODAsIDkwKSkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjEs
IC0yMCwgODAsIDkwKSkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
bGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGNoaWxkMSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwg
MTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSkpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg5
LCAyMCwgOTAsIDgwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgxMCwgMTksIDkwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTEsIDIwLCA5MCwgODApKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
LCAyMSwgOTAsIDgwKSkpOwotCi0gICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92
ZSBvY2NsdXNpb246Ci0gICAgICAgICAgICAgICAgICAgICAgMTAwCi0gICAgICAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgfDIwICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgbGF5ZXIxCi0gICAgICAgICAgIDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi0gICAgICAgIDEwMCB8fCAzMCAgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICB8
Ci0gICAgICAgICAgICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAg
ICAgICAgICAgIHx8IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAg
ICAgICAgfHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAg
ICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKLSAgICAgICAgICAgICt8
LXwtLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUxMAotICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1MTAgfCB8Ci0gICAgICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwKLSAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgNTIwICAg
ICAgICAgICAgIHwgfAotICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyB8Ci0gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKLSAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAotICAgICAgICAgKi8KLSAgICB9
Ci19OworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7
CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzV2l0aFR3b1Ry
YW5zZm9ybXMpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywg
Ym9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVycyA6
IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXBy
b3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNs
YXRlKDI1MCwgMjUwKTsKLSAgICAgICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICAg
ICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNy
ZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MTAwLCAxMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGJs
dXJMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3Jt
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIG9wYWNpdHlMYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAz
MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIG9wYXF1ZUxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBh
cmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCksIHRydWUpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKK30K
IAotICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgICAgIGZpbHRlcnMub3Bl
cmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwLCBX
ZWJDb3JlOjpQZXJjZW50KSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7Ci0gICAgICAgIGJsdXJM
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUs
IHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOwogCi0gICAgICAgIGZpbHRlcnMub3Bl
cmF0aW9ucygpLmNsZWFyKCk7Ci0gICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJP
cGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgICAgICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFx
dWVMYXllcnMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4g
cGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFk
ZENoaWxkKHBhcmVudExheWVyKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmls
dGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKworICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJm
YWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocGFyZW50KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOworCisgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
KworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAw
KSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKK30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFs
VGlsZXMsIGxheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKTsKKwordm9pZCBzY3JlZW5T
Y2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsK
KyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAgIEZpbHRlck9wZXJhdGlvbnMgZmls
dGVyczsKKyAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NB
TEUpKTsKKyAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBsYXllci0+
c2V0RmlsdGVycyhmaWx0ZXJzKTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVT
aXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVu
dC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1
cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3Qo
NTAsIDUwLCAyMDAsIDIwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQo
KSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
KworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAy
MDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVj
dCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAs
IDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAw
LCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
K30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRl
c3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzLCBzY3JlZW5TY2lzc29yUmVjdE92
ZXJQYXJ0aWFsVGlsZXMpOworCit2b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcyhib29s
IG9wYXF1ZUxheWVycykKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVu
dC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwor
CisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygp
LmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41
LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVyLT5zZXRGaWx0
ZXJzKGZpbHRlcnMpOworICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworCisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7
CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICBwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LmFwcGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVt
bXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworCisgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKKwor
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSku
aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RP
dmVyTm9UaWxlcywgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKTsKKwordm9pZCBzY3JlZW5T
Y2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7CisgICAg
cGFyZW50LT5hZGRDaGlsZChsYXllcik7CisKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7
CisgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgbGF5ZXItPnNldEZp
bHRlcnMoZmlsdGVycyk7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAz
MDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZh
bHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9
IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwor
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVy
VHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJl
bnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6
ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDUwMCwg
NTAwLCAxMDAsIDEwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAs
IDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIw
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAw
LCAxMDApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlz
RW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
K30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRl
c3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxlcywgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9U
aWxlcyk7CisKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKGJvb2wgb3Bh
cXVlTGF5ZXJzKQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0
cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+
IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5h
ZGRDaGlsZChwYXJlbnRMYXllcik7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CiAKLSAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuY2xlYXIoKTsKLSAgICAgICAgZmlsdGVycy5vcGVy
YXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOwotICAgICAgICBvcGFjaXR5TGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwor
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwor
ICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgIGxheWVyLT5zZXRGaWx0
ZXJzKGZpbHRlcnMpOwogCi0gICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpM
YXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVy
ZVNpemUgPSA1MTI7CiAKLSAgICAgICAgLy8gT3BhY2l0eSBsYXllciB3b24ndCBjb250cmlidXRl
IHRvIG9jY2x1c2lvbi4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihvcGFjaXR5TGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24uZmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllciwgb3BhY2l0eUxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJl
bnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CiAKLSAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5
KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkuaXNFbXB0eSgpKTsKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1t
eUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKLSAgICAgICAgLy8gQW5kIGhhcyBu
b3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBzdXJmYWNlLgotICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIC8vIE9wYXF1ZSBs
YXllciB3aWxsIGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5ZXIpOwotICAg
ICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLCBv
cGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAvLyBUaGlzIGxh
eWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBz
Y2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZhY2UKKyAgICAvLyBpcyBub3Qg
aW4gdGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4gYWZ0ZXIgdHJhbnNsYXRpbmcgdGhlc2UgcXVlcnkg
cmVjdHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5IHdpbGwgZmFsbCBvdXRzaWRlCisgICAgLy8gdGhl
IHNjaXNzb3IgYW5kIGJlIGNvbnNpZGVyZWQgb2NjbHVkZWQuCisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOworfQogCi0gICAgICAgIC8vIEFuZCBpdCBnZXRzIHRyYW5zbGF0ZWQgdG8gdGhl
IHBhcmVudCBzdXJmYWNlLgotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gVGhlIGJsdXIg
bGF5ZXIgbmVlZHMgdG8gdGhyb3cgYXdheSBhbnkgb2NjbHVzaW9uIGZyb20gb3V0c2lkZSBpdHMg
c3VidHJlZS4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVy
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICAg
ICAgLy8gQW5kIGl0IHdvbid0IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoYmx1ckxheWVyKTsKLSAgICAgICAgb2NjbHVz
aW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXIsIGJsdXJMYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgICAgICAvLyBCdXQg
dGhlIG9wYXF1ZSBsYXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhlIHBhcmVudC4K
LSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotICAgIH0KLX07CitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFR
VUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmln
aW4sIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7CiAKLUFMTF9DQ09DQ0xVU0lP
TlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVycyk7Cit2b2lkIGRhbWFn
ZVJlY3RPdmVyVGlsZShib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOworICAgIHBhcmVudC0+
YWRkQ2hpbGQobGF5ZXIpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXll
cnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91dHNpZGVD
aGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+
IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkp
OwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlz
LT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Ci0gICAgICAgIGNhbGNEcmF3
RXRjKHBhcmVudCk7Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0KLSAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICAg
ICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkp
OwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAg
ICB9Ci19OworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0ZXJzLm9wZXJh
dGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBwYXJlbnRMYXllci0+
c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAot
QUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNj
aXNzb3JSZWN0T3V0c2lkZUNoaWxkKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMs
IGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNj
aXNzb3JSZWN0T3V0c2lkZUNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlw
ZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAg
ICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0
aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsK
LSAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVu
ZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwot
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKLQotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3Qo
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAy
MDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDAp
KSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKLSAgICB9Ci19OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsK
IAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3Jl
ZW5TY2lzc29yUmVjdE91dHNpZGVDaGlsZCk7CisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCkt
PnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFy
ZW50KTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQgOiBwdWJsaWMgQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUpOwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOworICAg
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRl
eHR1cmVTaXplKTsKIAotICAgICAgICBUZXN0RGFtYWdlQ2xpZW50PHR5cGVuYW1lIFR5cGVzOjpS
ZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsK
LSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CisgICAgVGVzdERhbWFnZUNsaWVudCBkYW1h
Z2UoRmxvYXRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwogCi0g
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+
cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpLmlzRW1wdHko
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAvLyBPdXRzaWRl
IHRoZSBsYXllcidzIGNsaXAgcmVjdC4KKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0g
ICAgfQotfTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0
KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9U
RVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3V0c2lkZUNoaWxkKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIw
MCwgMTAwLCAxMDApKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVy
cz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3ZlckNoaWxk
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewot
cHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0g
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMo
cGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKLQotICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwg
MTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotICAgIH0KLX07CisgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RM
YXllclNjaXNzb3JSZWN0T3ZlckNoaWxkKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworfQogCi10ZW1wbGF0ZTxjbGFzcyBU
eXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2Ny
ZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxU
eXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQot
ICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9
IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUp
OwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpS
ZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7
Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
bGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwg
MjAwLCAxMDAsIDEwMCkpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHko
KSk7Ci0gICAgfQotfTsKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lv
blRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyVGlsZSwgZGFtYWdlUmVjdE92ZXJUaWxlKTsKIAot
QUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5T
Y2lzc29yUmVjdE92ZXJDaGlsZCk7Cit2b2lkIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZShib29s
IG9wYXF1ZUxheWVycykKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVu
dC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwog
Ci10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1
bk15VGVzdCgpCi0gICAgewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6
Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJl
bnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSk7Ci0gICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CisgICAgRmlsdGVyT3Bl
cmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgICAgIFRlc3REYW1hZ2VDbGll
bnQ8dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpOwotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJz
KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBk
dW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAotICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIsIEludFJlY3QoMCwgMCwgMjAwLCAyMDApKSk7
CisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKIAotICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci0gICAgfQot
fTsKKyAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGlsZCk7CisgICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdGVt
cGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZh
Y2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgyMDAsIDIwMCksIHRydWUpOwotICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKLQotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKLSAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwg
NTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgfQotfTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5
ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCk7CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLXRl
bXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9u
VHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCA6IHB1YmxpYyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAg
ICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVu
dExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3Vy
ZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSk7Ci0gICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7Ci0KLSAg
ICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlw
ZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCg1
MCwgNTAsIDIwMCwgMjAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkp
KTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDEw
MCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICB9Ci19OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwogCi1B
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNj
aXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwogCi10ZW1wbGF0ZTxjbGFzcyBU
eXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFt
YWdlUmVjdFBhcnRseU92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5
cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0g
ICAgewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0g
dGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7
Ci0gICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAz
MDApKS5pc0VtcHR5KCkpOworfQogCi0gICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8dHlwZW5hbWUg
VHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDUwLCA1MCwgMjAwLCAy
MDApKTsKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CitURVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlckN1bGxlZFRp
bGUsIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKK3ZvaWQgZGFtYWdl
UmVjdE92ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJl
bmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKKyAgICBw
YXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsK
KyAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsK
KyAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBsYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFs
c2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAy
MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0g
NTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0
Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Cisg
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVu
dC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXpl
KTsKKworICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVjdCg1MCwgNTAsIDIwMCwg
MjAwKSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
LmdldCgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAw
KSkpOworCisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAy
MDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAw
LCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7CisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAw
KSkpOworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdF9kYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcywgZGFtYWdlUmVjdE92ZXJQYXJ0aWFs
VGlsZXMpOworCit2b2lkIGRhbWFnZVJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykK
K3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQocGFy
ZW50TGF5ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworCisgICAgRmlsdGVyT3Bl
cmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15
TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQp
OworCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1
bW15TWF4VGV4dHVyZVNpemUpOworCisgICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRS
ZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOworCisgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKK30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJOb1RpbGVzLCBkYW1h
Z2VSZWN0T3Zlck5vVGlsZXMpOworCitURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9wYXF1
ZUNvbnRlbnRzUmVnaW9uRW1wdHkpCit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAg
cGFyZW50LT5hZGRDaGlsZChsYXllcik7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg1MCwgNTAsIDE1MCwgMTUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChsYXll
ciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRl
cnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxF
KSk7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlLCBmYWxzZSk7CiAKLSAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgfQotfTsKKyAg
ICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
KyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAg
aW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJf
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdFBhcnRseU92ZXJDaGlsZCk7Cisg
ICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMs
IGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Np
c3NvclJlY3RPdmVyTm90aGluZyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVz
LCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAg
ewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhp
cy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Ci0g
ICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAg
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwg
MTAwKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEw
MCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkp
OwotICAgIH0KLX07CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXll
ckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyTm90aGluZyk7Cisg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJOb3RoaW5nIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVj
dGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURy
YXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50
KTsKLQotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAw
KSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgfQotfTsKKyAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi1B
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNj
aXNzb3JSZWN0T3Zlck5vdGhpbmcpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwg
MTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAot
dGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdERhbWFnZVJlY3RPdmVyTm90aGluZyA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1
bk15VGVzdCgpCi0gICAgewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6
Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJl
bnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSk7Ci0gICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CisgICAgLy8gT2NjbHVk
ZWQgc2luY2UgaXRzIG91dHNpZGUgdGhlIHN1cmZhY2UgYm91bmRzLgorICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7CiAKLSAgICAgICAgVGVzdERhbWFnZUNsaWVudDx0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0gICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOworICAgIC8vIFRlc3Qgd2l0aG91dCBhbnkgc2Npc3Nv
cnMuCisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgb2NjbHVzaW9uLnVzZURlZmF1
bHRMYXllclNjaXNzb3JSZWN0KCk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChsYXllciwgSW50UmVjdCgw
LCAwLCAyMDAsIDIwMCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9F
USgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Cit9CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
LSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKK1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgb3BhcXVlQ29udGVu
dHNSZWdpb25Ob25FbXB0eSkKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJl
bnQtPmFkZENoaWxkKGxheWVyKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1w
dHkoKSk7Ci0gICAgfQotfTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAz
MDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxz
ZSwgZmFsc2UpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdERhbWFnZVJlY3RPdmVyTm90aGluZyk7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2lu
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewot
cHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0g
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMo
cGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICAv
LyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0YXJnZXQuIFNv
IGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZhY2UKLSAgICAg
ICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFmdGVyIHRyYW5zbGF0aW5n
IHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3aWxsIGZhbGwgb3V0c2lk
ZQotICAgICAgICAvLyB0aGUgc2Npc3NvciBhbmQgYmUgY29uc2lkZXJlZCBvY2NsdWRlZC4KLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIH0KLX07CisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4pOworICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5n
ZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsK
IAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9uRW1wdHkgOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZh
Y2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgyMDAsIDIwMCksIGZhbHNlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsKLQotICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOworICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKIAotICAgICAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0
aGUgc3VyZmFjZSBib3VuZHMuCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICAgICAgLy8gVGVz
dCB3aXRob3V0IGFueSBzY2lzc29ycy4KLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQo
KSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
LSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9F
USgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CiAgICAgfQotfTsKLQotTUFJTl9BTkRfSU1QTF9U
SFJFQURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0
eSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNsYXNzIEND
T2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5IDogcHVibGlj
IENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVk
OgotICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwMCwgMTAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKLSAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50
KTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVj
dCgyMCwgMjAsIDE4MCwgMTgwKSk7CiAKLSAgICAgICAgewotICAgICAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7Ci0gICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKLQotICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotCi0gICAgICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgewotICAgICAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7Ci0gICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoMjAs
IDIwLCAxODAsIDE4MCkpOwotCi0gICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwogCi0gICAgICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMjAsIDEyMCwgMTgwLCAxODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKIAotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICB9CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAw
LCAxMDApKSk7CisgICAgfQogCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpS
ZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
ICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDE1MCwgMTUw
LCAxMDAsIDEwMCkpOworICAgIHsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIGxheWVyLT5zZXRPcGFx
dWVQYWludFJlY3QoSW50UmVjdCgxNTAsIDE1MCwgMTAwLCAxMDApKTsKIAotICAgICAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIp
OworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyLmdldCgpKTsKIAotICAgICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyNTAs
IDI1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDI1MCwgMjUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAg
ICAgfQorICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKICAgICB9Ci19OwotCi1NQUlOX0FORF9J
TVBMX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lv
bk5vbkVtcHR5KTsKK30KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>