<?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>69186</bug_id>
          
          <creation_ts>2011-09-30 16:27:09 -0700</creation_ts>
          <short_desc>Remove getCallDataVirtual methods</short_desc>
          <delta_ts>2011-10-10 15:31:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          <dependson>69311</dependson>
    
    <dependson>69697</dependson>
          <blocked>67690</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>abarth</cc>
    
    <cc>dihan.wickremasuriya</cc>
    
    <cc>ggaren</cc>
    
    <cc>loki</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476406</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-30 16:27:09 -0700</bug_when>
    <thetext>This is the last step in de-virtualizing getCallData.  We need to remove all getCallDataVirtual function definitions and replace the call sites with methodTable()-&gt;getCallData().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476483</commentid>
    <comment_count>1</comment_count>
      <attachid>109388</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-30 18:20:45 -0700</bug_when>
    <thetext>Created attachment 109388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476702</commentid>
    <comment_count>2</comment_count>
      <attachid>109388</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-02 12:03:01 -0700</bug_when>
    <thetext>Comment on attachment 109388
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Removed all getCallDataVirtual methods and replaced their call sites 
&gt; +        with an explicit lookup in the MethodTable.  Also had to add ClassInfo 
&gt; +        structs to some of the classes that overrode getCallData but didn&apos;t 
&gt; +        provide their own ClassInfo structure.

Can we add the new ClassInfo structures first in a separate patch? Seems that it would make both patches easier to review.

&gt; Source/JavaScriptCore/runtime/Error.cpp:214
&gt; +    static Structure* createStructure(JSGlobalData&amp; globalData, JSGlobalObject* globalObject, JSValue proto) 
&gt; +    { 
&gt; +        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &amp;s_info); 
&gt; +    }

The word prototype should not be abbreviated to proto. Same comment for the many other new createStructure functions. Also, can at least some of these functions be private instead of public? If they are private and only used in create functions (see comment below), then there’s a good chance we can move the function bodies into .cpp files without losing inline.

&gt; Source/JavaScriptCore/runtime/Error.cpp:216
&gt; +    static JS_EXPORTDATA const ClassInfo s_info;

Does this need to be public? Same comment for all the other new s_info.

&gt; Source/JavaScriptCore/runtime/Error.cpp:229
&gt; -    return StrictModeTypeErrorFunction::create(exec, exec-&gt;lexicalGlobalObject(), exec-&gt;lexicalGlobalObject()-&gt;internalFunctionStructure(), message);
&gt; +    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
&gt; +    return StrictModeTypeErrorFunction::create(exec, globalObject, StrictModeTypeErrorFunction::createStructure(exec-&gt;globalData(), globalObject, globalObject-&gt;functionPrototype()), message);

This seems to change from reusing a single structure to creating a new structure each time. Is that acceptable for performance? I guess these aren’t created that often?

I believe the reason we pass a structure in to the create functions has to do with when they were constructors, not functions. It seems to me that nowadays we can move this responsibility into the create function since we have done away with the &quot;allocation during constructor&quot; problem. Doing that would allow the createStructure function to be private.

&gt; Source/JavaScriptCore/runtime/InternalFunction.cpp:76
&gt; +CallType InternalFunction::getCallData(JSCell*, CallData&amp;)
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return CallTypeNone;
&gt; +}

Is this better than having a null pointer in the method table?

&gt; Source/JavaScriptCore/runtime/JSCell.h:138
&gt; -
&gt; +    

Seems like a gratuitous whitespace change.

&gt; Source/JavaScriptCore/runtime/Structure.h:308
&gt; +    inline CallType getCallData(JSValue value, CallData&amp; callData)

Could this function go in a different header file? I don’t understand why Structure.h is the right file for this. It seems unpleasant that Structure.h now has to include ClassInfo.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476721</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-02 15:06:16 -0700</bug_when>
    <thetext>&gt; &gt; +    return StrictModeTypeErrorFunction::create(exec, globalObject, &gt; StrictModeTypeErrorFunction::createStructure(exec-&gt;globalData(), globalObject, globalObject-&gt; &gt;functionPrototype()), message);

You can do this without creating a new structure each time if you give JSGlobalData a data member for StrictModeTypeErrorFunction&apos;s structure. Then it can be shared, like the structure for InternalFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476722</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-02 15:07:39 -0700</bug_when>
    <thetext>&gt; You can do this without creating a new structure each time if you give JSGlobalData a data member for StrictModeTypeErrorFunction&apos;s structure. Then it can be shared, like the structure for InternalFunction.

Actually, you probably want to put the data member on JSGlobalObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479618</commentid>
    <comment_count>5</comment_count>
      <attachid>110059</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-06 16:43:26 -0700</bug_when>
    <thetext>Created attachment 110059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479641</commentid>
    <comment_count>6</comment_count>
      <attachid>110059</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-06 17:11:09 -0700</bug_when>
    <thetext>Comment on attachment 110059
Patch

Attachment 110059 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10009009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479662</commentid>
    <comment_count>7</comment_count>
      <attachid>110065</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-06 17:24:51 -0700</bug_when>
    <thetext>Created attachment 110065
Fix qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480387</commentid>
    <comment_count>8</comment_count>
      <attachid>110065</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-07 16:46:56 -0700</bug_when>
    <thetext>Comment on attachment 110065
Fix qt

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480403</commentid>
    <comment_count>9</comment_count>
      <attachid>110065</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 17:06:34 -0700</bug_when>
    <thetext>Comment on attachment 110065
Fix qt

Rejecting attachment 110065 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
lativeJIT64.cpp
	M	Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
	M	Source/JavaScriptCore/create_hash_table
r96993 = 4b8cca37ba5752f09cddaf4d8d1e9807200bd175 (refs/remotes/origin/master)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/10000371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480430</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-07 18:43:29 -0700</bug_when>
    <thetext>Committed r96996: &lt;http://trac.webkit.org/changeset/96996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480529</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-08 01:47:53 -0700</bug_when>
    <thetext>It broke all tests on the Qt bot. :-/

http://build.webkit.org/results/Qt%20Linux%20Release/r96996%20%2838308%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480537</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-08 02:42:02 -0700</bug_when>
    <thetext>Reopen, because it was rolled out by http://trac.webkit.org/changeset/97006

Zoltan or Gabor, could you check this bug please and give some hints what happened?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480538</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-08 02:43:20 -0700</bug_when>
    <thetext>Additionally it broke the Qt Snow Leopard bot: http://build.webkit.org/builders/Qt%20SnowLeopard%20Release/builds/2560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480642</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-08 17:37:11 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Additionally it broke the Qt Snow Leopard bot: http://build.webkit.org/builders/Qt%20SnowLeopard%20Release/builds/2560

The SL breakage appears to be due to a bug in the Qt build tools (see bug 67799).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480695</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-09 03:34:09 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Additionally it broke the Qt Snow Leopard bot: http://build.webkit.org/builders/Qt%20SnowLeopard%20Release/builds/2560
&gt; 
&gt; The SL breakage appears to be due to a bug in the Qt build tools (see bug 67799).

Sorry, I didn&apos;t check the build log. You&apos;re right, 67799 is the culprit.
Dihan, Alexis, please trigger a clean build on the Qt-SL bots after this patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480897</commentid>
    <comment_count>16</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-10-10 03:09:14 -0700</bug_when>
    <thetext>I will check this tomorrow if that is acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481057</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-10 12:16:12 -0700</bug_when>
    <thetext>It looks like the Qt failure may be due to Qt&apos;s DumpRenderTree linking directly to JSC&apos;s internal C++ API. If true, the right long-term fix is to migrate Qt&apos;s DumpRenderTree to using JSC&apos;s public C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481063</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-10 12:31:04 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; It looks like the Qt failure may be due to Qt&apos;s DumpRenderTree linking directly to JSC&apos;s internal C++ API. If true, the right long-term fix is to migrate Qt&apos;s DumpRenderTree to using JSC&apos;s public C API.

I think the failure was caused by the fact that QtRuntimeMetaMethod and QtRuntimeConnectionMethod were using QtRuntimeMethod&apos;s structure, which gave them the wrong method table.  I&apos;m all for reducing the amount of coupling between JSC internals and other projects though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481068</commentid>
    <comment_count>19</comment_count>
      <attachid>110381</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-10-10 12:37:21 -0700</bug_when>
    <thetext>Created attachment 110381
Fixing qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481080</commentid>
    <comment_count>20</comment_count>
      <attachid>110381</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-10 12:51:58 -0700</bug_when>
    <thetext>Comment on attachment 110381
Fixing qt

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481231</commentid>
    <comment_count>21</comment_count>
      <attachid>110381</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-10 15:31:10 -0700</bug_when>
    <thetext>Comment on attachment 110381
Fixing qt

Clearing flags on attachment: 110381

Committed r97097: &lt;http://trac.webkit.org/changeset/97097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481232</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-10 15:31:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109388</attachid>
            <date>2011-09-30 18:20:45 -0700</date>
            <delta_ts>2011-10-06 16:43:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69186-20110930182044.patch</filename>
            <type>text/plain</type>
            <size>78101</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0MDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCAyNzQwNmI4ODNlZjk2NDA4MWU5N2ZlZDdh
YjlmMWEzZWUyMDhiODUyLi4xZWY1ZDk1ZTBiZDhlYWFlYTRkMjcwZDc2NGMwNzE2Njc4NDk3YTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
Y3BwCkBAIC03NywxMSArNzcsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrRnVuY3Rpb246
OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCByZXN1bHQpKTsKIH0KIAotQ2FsbFR5cGUgSlNDYWxsYmFja0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAppbmRleCBjZTJhZDljYmQ2MTk0NWQwOWZhNmY2MGMyY2I1YTM0MzI2
OGIxNTdkLi4xM2I1MWU1NTQ1ZjAyNzhiOGQwMGYzMzJkOGZhNmI5NWYzMDIxZjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTU2LDcg
KzU2LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZmViN2Q5N2M5ZTQwZjdkMzE1NDNlMDczMGIy
MzE5MzAwZWQxZTA1Ny4uZDA0YWMwNDIyZWZkMDJkOWE1Zjg2ZjFmZDZlMTg1N2I4NTFmMWQ2NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTE5
NCw3ICsxOTQsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVj
U3RhdGUqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmly
dHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA2OWRlY2ExMDE0NTFhYjdl
MDIwNGEwNjkyYzkxOTk4ODc4YWVjYmUxLi5iOWY0NGI5ODBlZmU3OTI2ODdlNGY4MjJlZGQwNGFi
ZGY3NGUxZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzcyLDEyICszNzIsNiBAQCBib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBKU1ZhbAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotQ2FsbFR5cGUgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRh
KQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KLXRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBDYWxsVHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIEpTQ2Fs
bGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4o
Y2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGZh
NjgyZDhmYTJlOTAwOGMyNjg4MjBmYmU4NDI5ZTFlMDM2MWI5YjQuLjRjYzY2YTRkYjMyNTQ1MjY1
NDU2YmVkMThhMTU1N2RlZjExY2RiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCkBAIC00MTYsNyArNDE2LDggQEAgYm9vbCBKU09iamVjdERlbGV0ZVByaXZh
dGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW4K
IGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0
KQogewogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIHJldHVybiB0b0pTKG9iamVjdCktPmdl
dENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lOworICAgIEpTQ2VsbCog
Y2VsbCA9IHRvSlMob2JqZWN0KTsKKyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0
Q2FsbERhdGEoY2VsbCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAogSlNWYWx1ZVJl
ZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTQzNSw3
ICs0MzYsNyBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU09iamVjdAogICAgICAgICBhcmdMaXN0LmFwcGVu
ZCh0b0pTKGV4ZWMsIGFyZ3VtZW50c1tpXSkpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc09iamVjdC0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxE
YXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShqc09iamVjdCwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBmMGQ0MzI1M2M3ZDhlMTk0MGQ2OTc0YzI5NTAzMzI1MDE1NjhmYWNlLi5kODQ1MmVhZDU5ZjU0
ZjZhMmYyOWYxNWVlNmFmYTdmNGRlYzhiZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsNSArMSw5MiBAQAogMjAxMS0wOS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdA
YXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGFs
bCBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRl
cyAKKyAgICAgICAgd2l0aCBhbiBleHBsaWNpdCBsb29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLiAg
QWxzbyBoYWQgdG8gYWRkIENsYXNzSW5mbyAKKyAgICAgICAgc3RydWN0cyB0byBzb21lIG9mIHRo
ZSBjbGFzc2VzIHRoYXQgb3ZlcnJvZGUgZ2V0Q2FsbERhdGEgYnV0IGRpZG4ndCAKKyAgICAgICAg
cHJvdmlkZSB0aGVpciBvd24gQ2xhc3NJbmZvIHN0cnVjdHVyZS4KKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoK
KyAgICAgICAgKEpTT2JqZWN0SXNGdW5jdGlvbik6CisgICAgICAgIChKU09iamVjdENhbGxBc0Z1
bmN0aW9uKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvQm9vbGVhbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVHlwZUVycm9yRnVuY3Rp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmg6CisKKyAgICAgICAgVG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBJbnRlcm5h
bEZ1bmN0aW9uIChlLmcuIFF0UnVudGltZU1ldGhvZCkgdG8gbm90IGhhdmUgCisgICAgICAgIHRv
IGRlY2xhcmUgdGhlaXIgb3duIENsYXNzSW5mbyBpZiB0aGV5IGRvbid0IG92ZXJyaWRlIGdldENh
bGxEYXRhLCBwcm92aWRlZCAKKyAgICAgICAgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBjYWxscyBB
U1NFUlRfTk9UX1JFQUNIRUQgaWYgY2FsbGVkLCBwcm92aWRpbmcgcm91Z2hseSB0aGUgc2FtZSAK
KyAgICAgICAgZnVuY3Rpb25hbGl0eSBhcyBvZiB0aGUgcHVyZSB2aXJ0dWFsIG1ldGhvZCBJbnRl
cm5hbEZ1bmN0aW9uIHVzZWQgdG8gaGF2ZS4KKyAgICAgICAgQWxzbyBtYWRlIHRoaXMgbmV3IGlt
cGxlbWVudGF0aW9uIHByb3RlY3RlZCByYXRoZXIgdGhhbiBwcml2YXRlIGZvciB0aGUgc2FtZSBy
ZWFzb24uCisgICAgICAgIEFsc28gYWRkZWQgYW4gQVNTRVJUIGluIEludGVybmFsRnVuY3Rpb246
OmZpbmlzaENyZWF0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyIAorICAgICAgICBvYmpl
Y3QgaXMgYmVpbmcgY3JlYXRlZCBwcm92aWRlcyB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gb2Yg
Z2V0Q2FsbERhdGEuICBUaGlzIAorICAgICAgICBqdXN0IG1ha2VzIGV4ZWN1dGlvbiBmYWlsIGVh
cmxpZXIgaW4gYSBwbGFjZSB3aGVyZSB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBpcyAKKyAgICAg
ICAgZWFzeSB0byB0cmFjZS4KKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6
CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAoSlNDOjpTdHJp
bmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBl
KToKKyAgICAgICAgKEpTQzo6anNJc0Z1bmN0aW9uVHlwZSk6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0
dGVyKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRh
KToKKworMjAxMS0wOS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCiAgICAgICAgIEFkZCBnZXRDYWxsRGF0YSB0byBNZXRob2RUYWJsZSBpbiBDbGFzc0luZm8K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDI0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDg0YmUxNmVkOThm
YjFhNWY5Y2QxZTc2YzhlNDZhYmZkMDE1NTBlMDUuLmY1MWM0N2Q0M2RlY2Y3NGY1MDVlY2ZkNjcw
ZTlhYTA4MmY3ZDQzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cApAQCAtMjU1LDcgKzI1NSw2IEBAIF9fWk4zSlNDNkpTQ2VsbDExZ2V0Q2FsbERhdGFFUFMwX1JO
U184Q2FsbERhdGFFCiBfX1pOM0pTQzZKU0NlbGwxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M2SlNDZWxsMTRkZWxldGVQcm9wZXJ0eUVQ
TlNfOUV4ZWNTdGF0ZUVqCiBfX1pOM0pTQzZKU0NlbGwxNmdldENvbnN0cnVjdERhdGFFUk5TXzEz
Q29uc3RydWN0RGF0YUUKLV9fWk4zSlNDNkpTQ2VsbDE4Z2V0Q2FsbERhdGFWaXJ0dWFsRVJOU184
Q2FsbERhdGFFCiBfX1pOM0pTQzZKU0NlbGwxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzZKU0Nl
bGwxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90
RQogX19aTjNKU0M2SlNDZWxsM3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVO
U183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IGE4ZmNmNDY2M2JmMTVkNmFh
MjFjMGNiYzJiOTlhOWY5OWZjMmVlNjkuLjFkNzVkNDczNGM5NGQwYWZiNDcwYjdkMzg4ZjI0MjVj
MWM0YzEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZGVmCkBAIC0xODgsNyArMTg4LDYgQEAgRVhQT1JUUwogICAgID9nZXRAU3RydWN0
dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBBQUlBQVBBVkpT
Q2VsbEAyQEBaCiAgICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJA
UEFWU3RyaW5nSW1wbEBXVEZAQEFBSUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsbERhdGFA
SlNDZWxsQEpTQ0BAU0E/QVc0Q2FsbFR5cGVAMkBQQVYxMkBBQVRDYWxsRGF0YUAyQEBaCi0gICAg
P2dldENhbGxEYXRhVmlydHVhbEBKU0NlbGxASlNDQEBVQUU/QVc0Q2FsbFR5cGVAMkBBQVRDYWxs
RGF0YUAyQEBaCiAgICAgP2dldENvbnN0cnVjdERhdGFASlNDZWxsQEpTQ0BAVUFFP0FXNENvbnN0
cnVjdFR5cGVAMkBBQVRDb25zdHJ1Y3REYXRhQDJAQFoKICAgICA/Z2V0T2JqZWN0QEpTQ2VsbEBK
U0NAQFFBRVBBVkpTT2JqZWN0QDJAWFoKICAgICA/Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQEpT
R2xvYmFsT2JqZWN0QEpTQ0BAVUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFW
UHJvcGVydHlEZXNjcmlwdG9yQDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDRjNjE3MWY3MWI0NzhhZDdmNmRjNjY2MTdk
YzdjNGNjZDUxZDJmYmUuLjM0M2E1NzI4OTUwMzJlMDJjYzE4MDAyZTEwNWUxNzQwZDAwMTBkZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtMjgyOSw3ICsyODI5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4
ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAg
ICAgICAgICAgICAgICAgaWYgKEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJT
ZXR0ZXIocHJvdG9PYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLmFzQ2VsbCgpKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGdldHRlciA9IGdldHRlclNldHRlci0+
Z2V0dGVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRDYWxs
RGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGdldHRlciwgY2Fs
bERhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNh
bGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFzT2JqZWN0KGJhc2VDZWxsKSwg
QXJnTGlzdCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04o
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0g
cmVzdWx0OwpAQCAtMjk2NCw3ICsyOTY0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAg
ICAgICAgICAgICAgICBpZiAoR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBhc0dldHRlclNl
dHRlcihiYXNlT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KS5hc0NlbGwoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGdldHRlciA9IGdldHRlclNldHRlci0+Z2V0dGVy
KCk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAg
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNh
bGxEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXIt
Pm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwogICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBnZXR0ZXIsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgYmFzZU9iamVjdCwgQXJnTGlzdCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKQEAgLTMwNzIsNyArMzA3Miw3IEBAIHNraXBfaWRf
Y3VzdG9tX3NlbGY6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoR2V0dGVyU2V0dGVyKiBn
ZXR0ZXJTZXR0ZXIgPSBhc0dldHRlclNldHRlcihiYXNlT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQo
b2Zmc2V0KS5hc0NlbGwoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVj
dCogZ2V0dGVyID0gZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNhbGxGcmFtZSwgZ2V0dGVy
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2VWYWx1ZSwgQXJnTGlzdCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDRjMDViYTFkZDUwOTY5OGZhZjBlZWNm
YjQ2YmFlOTAwZjQ5NDcxM2EuLjRkMWViOTdhZmI2MTU1OTcxYjBmOTg0NDEwMmViMzk2NzU3MDVm
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xNzU1LDcgKzE3
NTUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lk
X2dldHRlcl9zdHViKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBhc09iamVjdChnZXR0ZXJTZXR0ZXItPmdldHRl
cigpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dHRlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNhbGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHN0YWNrRnJhbWUuYXJnc1sxXS5qc09iamVjdCgpLCBBcmdMaXN0KCkpOwogICAg
IGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm5Ub1Rocm93VHJh
bXBvbGluZSgmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHN0YWNrRnJhbWUuYXJnc1syXS5yZXR1
cm5BZGRyZXNzKCksIFNUVUJfUkVUVVJOX0FERFJFU1MpOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfaml0Q29tcGlsZSkKIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBBU1NFUlQoc3RhY2tG
cmFtZS5jYWxsRnJhbWUtPmNhbGxlZSgpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpID09
IENhbGxUeXBlSlMpOworICAgIEFTU0VSVChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCkt
Pm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxsZWUo
KSwgY2FsbERhdGEpID09IENhbGxUeXBlSlMpOwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIGpp
dENvbXBpbGVGb3Ioc3RhY2tGcmFtZSwgQ29kZUZvckNhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA0NTM4Y2I4NDM5
NDg0MzViZmM2ZDdmYmY2OWNkYjRhZjVjNGQ0OGI5Li4zYmIxMzM4MjYzNjUzZjU0YmNlMzExYTZl
OThiMDRjNTBjMjVhMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMTA5LDExICsxMDksNiBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmsoZXhlYywgYXJncykpOwogfQogCi1DYWxsVHlwZSBBcnJheUNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEFycmF5Q29uc3RydWN0b3I6OmdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICAvLyBlcXVpdmFsZW50
IHRvICduZXcgQXJyYXkoLi4uLiknCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmgKaW5kZXggYzQ2ZGNiMjM2MzJkYWI0ZmM3Yjg2NmY5YTdjMDc3
MDNlMzYxZTAyNi4uZjY0YjliNmM0N2FkYjM2N2FjNmMzODkyMzVjNjYyOTJhM2ZlOGU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaApA
QCAtNTUsNyArNTUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAppbmRleCBjOThj
OThlZmUxMDBiNDQzYjY1ZDY0YjQ3NWI2ZWRlMzE1YzE4ZDYzLi5mMmE2MmQ3YWRlMzA5ZDcwZTQw
ZmJlOWU3MWM0MTkzODI5M2JhY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTI4LDYgKzI4LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbkNvbnN0cnVjdG9y
KTsKIAorY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5D
b25zdHJ1Y3RvcikgfTsKKwogQm9vbGVhbkNvbnN0cnVjdG9yOjpCb29sZWFuQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewpAQCAtNjgsMTEg
KzcwLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJvb2xlYW5D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7CiB9CiAKLUNhbGxU
eXBlIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxs
RGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBD
YWxsVHlwZSBCb29sZWFuQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsQm9vbGVh
bkNvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuQ29uc3RydWN0b3IuaAppbmRleCAwMzk1ZjgyNjdlODY1M2QwYTgxODMxZDhhMDQzYjQ3ZDM0
Y2IyZjRlLi4yZTgwNjkzMGRiZjBmZjI2NWM5ZDlkZDkyNTIxYjBkYWVkMDRmMjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaApA
QCAtMzcsNiArMzcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgYm9vbGVhblByb3RvdHlwZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pIAorICAgICAgICB7IAorICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7
IAorICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBCb29sZWFuUHJvdG90eXBlKik7CkBAIC00NCw3ICs1MSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDNlYTE2
MzdkYmQ1MWNmYjE4ZWYwYzcwZGY4NTI4M2M4ZjM5YjA5NGMuLmUzN2U2ZjExZDY2N2JhMzdhMWY2
YjU3YWE3OGUyZGJiNzhiZDljNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtMTc2LDExICsxNzYsNiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGRhdGUs
ICIgIiwgdGltZSkpOwogfQogCi1DYWxsVHlwZSBEYXRlQ29uc3RydWN0b3I6OmdldENhbGxEYXRh
VmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRo
aXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgRGF0ZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbERhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5oCmluZGV4IDA2ZGM5NGE4YjdiMGMzNGNmMWQwOWFkMjQ4MjRhMzI3NWY5
ZDRiMDYuLjQxYmU5MzU0NDNlYzA4MTE2ZGYzNzRkNDMwYzAzZjhkMTJiYzk5YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC01Miw3
ICs1Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIERhdGVDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
Y3BwCmluZGV4IDE5ZDkyMTZjNjFkNWM0N2YyOGRjNGI4YjRkZWQ5MTYyZTRjM2Q5NzUuLmQwOWMy
MDRmNmI0NDVmYTAzZjc0ODQ2NDI0NDI5MDRiZGQyM2MzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNvbnN0
cnVjdERhdGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMjAxLDI2ICsyMDIsMzEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAg
ICB9CiAKLSAgICBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRh
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLSAg
ICB9Ci0KLSAgICBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKICAgICB7CiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxU
aHJvd1R5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKICAgICB9CiAKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSAKKyAgICB7
IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZv
KTsgCisgICAgfQorCisgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKKwogcHJpdmF0ZToKICAgICBVU3RyaW5nIG1fbWVzc2FnZTsKIH07CiAKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKTsKIAorY29uc3Qg
Q2xhc3NJbmZvIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbikgfTsKKwogSlNWYWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5pbnRlcm5hbEZ1bmN0aW9u
U3RydWN0dXJlKCksIG1lc3NhZ2UpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIFN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIG1lc3NhZ2UpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTA1Y2Q1MjZkOGI0Njc4ZWYzNjQ0ZWFmZDAw
MDcwZjAzMDlkODFiMC4uMGIzYmE5MWY1NTMxNzMwNmZmMTI1NWZlZjJiNzRkOWY1MDllOThhMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTI5LDYgKzI5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CiAKK2NvbnN0IENsYXNzSW5mbyBFcnJvckNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoRXJyb3JDb25zdHJ1Y3RvcikgfTsKKwogRXJyb3JDb25zdHJ1Y3Rv
cjo6RXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpCiB7CkBAIC02NCwxMSArNjYsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1
cmUsIG1lc3NhZ2UpKTsKIH0KIAotQ2FsbFR5cGUgRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEo
dGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbEVycm9yQ29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggMjRmYzE5OGIyY2ZlMWUwZDdk
ZTM0ZjU1Y2JmOTkyMjg0NGNjMzZhOC4uMTk3ZGM5MTYyYzJmMWRlNTkyMTAyMWRjYzMzZDExNmFl
NzY5MTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuaApAQCAtMzksMTMgKzM5LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgCisgICAgICAgIHsgCisgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8g
c19pbmZvOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIEVycm9yUHJvdG90eXBlKik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYp
OwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGY2OTEzMDBjOTUyYzEwY2MxYjI4MGFkZDg3YmI0
OGFmZjI0Y2M3OGMuLjc3ZjQ3MDU0ZmIyZGIxYjg2OTcyYWMyNWMzMThkMjljNjNkOTY0YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCitjb25zdCBDbGFzc0luZm8g
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKIEZ1
bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewpAQCAtNjksMTEgKzcxLDYgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24o
ZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCks
IGFyZ3MpKTsKIH0KIAotQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFW
aXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhp
cywgY2FsbERhdGEpOwotfQotCiAvLyBFQ01BIDE1LjMuMSBUaGUgRnVuY3Rpb24gQ29uc3RydWN0
b3IgQ2FsbGVkIGFzIGEgRnVuY3Rpb24KIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCA2OGYw
NTdlNzM2ZmFmYzkwZGQ4MTYxNzAxMTk4NTQzY2UzZjA2M2FiLi4zMzI0ZTUyODFlNGE5NTUwM2I2
M2Y3Yzk3MGNlN2FkNTA1MzkzNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0zOCwxMSArMzgsMTcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAor
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSAK
KyAgICAgICAgeyAKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksICZzX2luZm8pOyAKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisKICAgICBwcml2YXRlOgogICAgICAgICBGdW5j
dGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYp
OwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKaW5kZXggYWIyZDhjNTQ1YTkwODFmY2FmMzI3YWExN2ZiM2M5Mjll
MjYwZGE1My4uZDliNWFiNWVkY2M1NmNkYTk5NDM3Y2FmNzNjMjQ1NTdkOTg4YWNhNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cApAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChGdW5jdGlvblByb3RvdHlwZSk7CiAKK2NvbnN0IENsYXNzSW5mbyBGdW5jdGlvblBy
b3RvdHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9OworCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNB
cHBseShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUHJvdG9GdW5jQ2FsbChFeGVjU3RhdGUqKTsKQEAgLTcwLDExICs3Miw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShFeGVj
U3RhdGUqKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LUNhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEm
IGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19
Ci0KIC8vIEVDTUEgMTUuMy40CiBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKaW5kZXggODJmZmYwNTg2Y2Y0MDIw
M2U2ZTI1MTI3NjhkYWViZWRkZjdjMTQ2YS4uZTkzYjVjMDlmNzU1OTJmNzg0ZmZiYWEzODY0MzRj
YTE1ZGM2Mzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5oCkBAIC00MywxMiArNDMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsK
ICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotICAg
ICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAg
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCmluZGV4IDE3YzcyNjVjNzgxN2JkODc2ZWVmOGY5MTNmMDdjOTFjNWEyMGFkNzcu
LjE3MTQxNjM3NjcxMzliNjAzZGM0NjZkZTM1ZGI5Njg5YjM3YjliM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC01MCw2
ICs1MCw3IEBAIHZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBB
U1NFUlQobWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEgIT0gSW50ZXJuYWxGdW5jdGlvbjo6c19p
bmZvLm1ldGhvZFRhYmxlLmdldENhbGxEYXRhKTsKICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFt
ZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CiB9CiAKQEAgLTY4LDYgKzY5LDEyIEBAIGNvbnN0IFVTdHJpbmcgSW50ZXJu
YWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBVU3Ry
aW5nKCk7CiB9CiAKK0NhbGxUeXBlIEludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
Q2FsbFR5cGVOb25lOworfQorCiBjb25zdCBVU3RyaW5nIEludGVybmFsRnVuY3Rpb246OmNhbGN1
bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgY29uc3QgVVN0cmluZyBl
eHBsaWNpdE5hbWUgPSBkaXNwbGF5TmFtZShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAppbmRleCA5Y2E1OWZiNzkwM2Y0Nzk3OTA1
ODVkMDgxM2U2MDkxOTNmZDBkNjZiLi44ZTIxNzhlM2Y2NTk3OGE5YzFhZWFlOWE0NTVmNjI5YmYx
NGNhZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCkBAIC01Niw5ICs1Niw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7
CiAKLSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmly
dHVhbChDYWxsRGF0YSYpID0gMDsKKyAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CiAKKyAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZv
aWQgdnRhYmxlQW5jaG9yKCk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKaW5kZXggNjJiNjUxZTE5NGUyOTRmNDBhY2Y3N2NjODY0MmE4YmUwMDEzMmFm
OC4uMDRmYjI4Mzc4OWY4OWFmYWE4NGMzZGMxN2I5YmE1ZTRkYTg1Y2NkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC01NCwxMSArNTQsNiBAQCBjb25zdCBK
U09iamVjdCogSlNDZWxsOjpnZXRPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBpc09iamVjdCgp
ID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKSA6IDA7CiB9CiAKLUNhbGxUeXBl
IEpTQ2VsbDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICBy
ZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBKU0NlbGw6
OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikKIHsKICAgICByZXR1cm4gQ2FsbFR5cGVO
b25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAxMTM0NGM2ZDEz
ZWFhZDIzYjg4YTFlN2M2OWNhZmEzMDNkODI0YjkzLi5hYTcxNzk2OGVjZWZhMGI2ZGIwMzYyMzg1
NjljZGI1NGViMjZjYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApA
QCAtNzMsNyArNzMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QqIGdldE9i
amVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgY29uc3QgSlNPYmplY3Qq
IGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgCi0g
ICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAg
ICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwog
ICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3RE
YXRhJik7CiAKQEAgLTEzNiw3ICsxMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07Ci0KKyAg
ICAKICAgICBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBtX3N0cnVjdHVyZShnbG9iYWxEYXRhLCB0
aGlzLCBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtMjI5LDEzICsyMjgsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldE9iamVjdCgpIDogMDsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNWYWx1ZSB2YWx1ZSwg
Q2FsbERhdGEmIGNhbGxEYXRhKQotICAgIHsKLSAgICAgICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFs
dWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRh
KSA6IENhbGxUeXBlTm9uZTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBDYWxsVHlwZU5vbmUg
fHwgdmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KICAgICBpbmxpbmUgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTVmFsdWUgdmFs
dWUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAgICAgewogICAgICAgICBDb25zdHJ1
Y3RUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPmdldENvbnN0
cnVjdERhdGEoY29uc3RydWN0RGF0YSkgOiBDb25zdHJ1Y3RUeXBlTm9uZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZmJlZGRlZDgxYzI5Mjhh
YjVlMGYyNTRmZDEzZTAxNzU0NzAzOTEzYy4uNjIwOTAyZDZmZmI0YjU0ZjIzNGQxNDEwZWM2OTM0
MTgwZTQ2NDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKQEAgLTE2NCwxMSArMTY0LDYgQEAgdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2V4ZWN1dGFibGUpOwogfQogCi1DYWxsVHlwZSBKU0Z1bmN0aW9u
OjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBn
ZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggOTFjM2NjZmQ5NTI0
YzJjOWNkMzUwODUzYjYwNjUyYmIyZTEwZmFhYi4uZTVmYTdhMzEwMzE2YTU3OWRjZjEzZWQ2M2Vm
Yjk1YmVhMGRiNTNjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaApAQCAtMTA5LDcgKzEwOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcigpOwogCiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAgICAgICAgc3RhdGlj
IGlubGluZSBzaXplX3Qgb2Zmc2V0T2ZTY29wZUNoYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMDA4ZDZiZjU0ZDg3NTg5ZjI1NzQzZjg4
YjRjNjc5OWI3YWRhMDIyYS4uMGU4YzUwODNhMjkwNjE0MzliZmMzZTMyMTQ2NGMwNDE4NTI3ZDU5
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAg
LTI0Niw3ICsyNDYsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBMb2NhbDxVbmtub3duPiYgcmVwbGFjZXIsIGNvbnN0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3JlcGxhY2VyQ2FsbFR5cGUgPSBtX3JlcGxhY2VyLmFzT2JqZWN0KCkt
PmdldENhbGxEYXRhVmlydHVhbChtX3JlcGxhY2VyQ2FsbERhdGEpOworICAgIG1fcmVwbGFjZXJD
YWxsVHlwZSA9IG1fcmVwbGFjZXIuYXNPYmplY3QoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERh
dGEobV9yZXBsYWNlci5hc09iamVjdCgpLmdldCgpLCBtX3JlcGxhY2VyQ2FsbERhdGEpOwogfQog
CiBMb2NhbDxVbmtub3duPiBTdHJpbmdpZmllcjo6c3RyaW5naWZ5KEhhbmRsZTxVbmtub3duPiB2
YWx1ZSkKQEAgLTMzNyw3ICszMzcsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9K
U09OKEpTVmFsdWUgdmFsdWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQwogCiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRvSlNPTkZ1bmN0aW9uKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+Z2V0Q2FsbERhdGFW
aXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCkBAIC00MDEsNyArNDAx
LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QodmFsdWUpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgaWYgKG9iamVjdC0+
Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICBpZiAo
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBD
YWxsVHlwZU5vbmUpIHsKICAgICAgICAgaWYgKGhvbGRlci0+aW5oZXJpdHMoJkpTQXJyYXk6OnNf
aW5mbykpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCmluZGV4IGE0YmYxNTNjYzI3MjVmYTljMTUxMzc4NjliN2NjNDVjODI5
Y2UyMzcuLjYzZWE2NTQ3ZjBiZDQwYzY3Y2FiYjgxYjIxMmFiYzM5NmVlNDI3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBA
QCB2b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlckZ1bmMtPmdldENhbGxEYXRhVmlydHVhbChjYWxs
RGF0YSk7CisgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXJGdW5jLT5t
ZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzZXR0ZXJGdW5jLCBjYWxsRGF0YSk7CiAgICAgICAg
ICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICAgICAgICAgICAgICBhcmdz
LmFwcGVuZCh2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjJlNmJjY2Y3MTA4M2ZmMjRm
M2FkNTU5NjhkZjlmOWJjOWI1OTlkZS4uMjdiZTU0MTMxMzJiNTMzZmQ1Mzc0YzM3YWI0M2NlNjUx
MGMzYjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTY5LDExICs2OSw2IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQogCi1DYWxsVHlwZSBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRh
KQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxU
eXBlIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA2N2Y1MjhkMGFlNzJlM2Y5YjEzNjE3
MGIzMzZlMjg0NWVkYmE4YTczLi41YmQ5ZTYwZjg0YTFlZWJjNjY0YmJiYmNlZjZlODZlNTMxOGYw
NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC02OSw3ICs2OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYp
OwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZmNhMDIyYjE0ZjkwNzVjOWUyMzIyNDNhMTM0ODQwNjMwNzQyYzA5
OC4uNzM4MDlkOTI4YTI0NjIxOTE5Y2I3MzEwYWRjOGNiMTgwNWZkZmU1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAt
MTI3LDExICsxMjcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBleGVjLT5hcmd1bWVu
dCgwKS50b051bWJlcihleGVjKSkpOwogfQogCi1DYWxsVHlwZSBOdW1iZXJDb25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0
Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBOdW1iZXJDb25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxOdW1iZXJDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCmluZGV4IDhhZWE2
OTA3YTMyNmViYTA1MzVlZjMxYWEyNGRiMGEwNmU3ZWNkZTIuLjliOTEwMGUzMWIxMGQ5MmZjNTE1
OTM4NDdlYTBhNDQyZDRhN2M3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaApAQCAtNTgsNyArNTgsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcml2YXRlOgogICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAxYTM5YzE4OWRj
N2JjMjc2NTVlNzk4OTg0MzYzMTQ3OTQxMzRhNTNlLi5hNzQzMGZlZGFkYzE2MWQ3Y2Y0YjQ2MzUw
NTQzMTYzMzMwNTcyMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMjYsMTEgKzEyNiw2IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywg
YXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3Mp
KTsKIH0KIAotQ2FsbFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxE
YXRhKTsKLX0KLQogQ2FsbFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsT2JqZWN0Q29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBkZGYzY2FmNGM0MTFjMmJhODBhODYyZGZl
MDcxYTJkN2RhMzAwOTU3Li41NDc1NzNjMTIyZmNjNjQ0ZWVhYjZmZmU1MmI0N2MyZWRhNzMyMTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmgKQEAgLTU1LDcgKzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAg
ICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0
YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0
YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwCmluZGV4IDUyZjRlOWQ2NThmYzRiZjhlZDU2YjdhY2UxOWMxYzhkY2JiMGVkMmYuLmJm
ZmQ5ZmZlMWI1MTAzMDhhNDI1ZDJiNWFlMTFhNDRiZDIwZmNkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC03NCw3ICs3NCw4IEBAIEpTVmFs
dWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdikK
ICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KGNhbGxGcmFtZSwgInVuZGVmaW5lZCIpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgaWYgKGFzT2JqZWN0KHYpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpICE9IENh
bGxUeXBlTm9uZSkKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOworICAg
ICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxE
YXRhKSAhPSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9uIik7CiAgICAgfQogICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcoY2FsbEZyYW1lLCAib2JqZWN0Iik7CkBAIC05Miw3ICs5Myw4IEBAIGJvb2wganNJ
c09iamVjdFR5cGUoSlNWYWx1ZSB2KQogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIGlmIChhc09i
amVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCisg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKKyAgICAgICAgaWYgKG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5
cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwMiw3ICsxMDQsOCBAQCBib29sIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1ZSB2KQog
ewogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgICAgIGlmIChhc09iamVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBD
YWxsVHlwZU5vbmUpCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKKyAg
ICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxs
RGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuY3BwCmluZGV4IDFhODZlZTMzN2M0ZGQwYjFkM2FkZjQ2Yjk2YWU4MWNmMGZkMmFk
YmQuLmVkYWJkN2E2ZWRlZmI5ZTYzODU3Yjc3Y2E2ZGU3NDQ1ZTgzYTA5YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcApAQCAtMzMsNyArMzMs
NyBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CiAKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fZGF0YS5nZXR0ZXJGdW5jLT5n
ZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gbV9k
YXRhLmdldHRlckZ1bmMtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fZGF0YS5nZXR0ZXJG
dW5jLCBjYWxsRGF0YSk7CiAgICAgCiAgICAgLy8gT25seSBvYmplY3RzIGNhbiBoYXZlIGFjY2Vz
c29yIHByb3BlcnRpZXMuCiAgICAgLy8gSWYgdGhlIGJhc2UgaXMgV2ViQ29yZSdzIGdsb2JhbCBv
YmplY3QgdGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGQw
ZWE5YTEwZGRlMjJjZWRkZDdjODJhMWNmYmU2MGQ3NWRjNjczMDguLjcxYjUwYzlmM2I3OWZiYzlj
NDJkNGIwNmNlNTI5NGMxYzI4ZDI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1NywxMSArMzU3LDYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdFJlZ0V4
cChleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
KSwgYXJncykpOwogfQogCi1DYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFW
aXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhp
cywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNhbGxSZWdFeHBDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4IGRlZTQ4NDQ1MWQ1OGY5ZjM0
MzFkZWZiOWU4NWVkNTUyMWRjZDMyYjIuLjgyYTZlZWE2MWE4M2E2N2RiZmEwNWUyOGZiYzQzNWI4
ODQ1ZWZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuaApAQCAtOTgsNyArOTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2
YXRlOgogICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25z
dHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFs
KENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwogCiAgICAgICAgIE93blB0cjxSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGU+
IGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYzEzN2NjYjFkNzNhMDc1ZGU2ODYzYWRiYmRhNDMyNTYwNGUzNzM1ZS4u
NDNjYTcwMWJhNWQxZDIxMjUxZmRhZTIzNTMzMDk0Mjc2YmQ5MDA0OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApAQCAtMTA5
LDExICsxMDksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3Ry
aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpKTsKIH0K
IAotQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0
YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsK
LX0KLQogQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
U3RyaW5nQ29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuaAppbmRleCA3MDBkZWFiNWY3ZWM4ODU3YjRmMzU2MmIxMjQzZGQx
MGE5ZTIzMTM1Li45YzE0YjkzOWZkZDE4MGM0Yzk1NWI2ODE2MjE5YjYzODdlMDUzNmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgK
QEAgLTUyLDcgKzUyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cmluZ0NvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiwgU3RyaW5nUHJvdG90eXBlKik7CiAgICAgICAgIHZpcnR1YWwgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmly
dHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCmluZGV4IGU4MzIzNDY0OWIxYmNjODdhNmFlODdjNTA0ZGEyOGZmMGQxNDk4ODEuLjUy
YTg3ODk2NDhmMmI4N2M0OWZiNjA2YmJjNDk5MGYzNDM2Yzc3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFN0
cnVjdHVyZV9oCiAjZGVmaW5lIFN0cnVjdHVyZV9oCiAKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIK
ICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAi
SlNUeXBlLmgiCkBAIC00OSw4ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogCi0gICAgc3RydWN0IENsYXNz
SW5mbzsKLQogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcywKICAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcwpAQCAtMzA1
LDYgKzMwNCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSog
ZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJz
dDsKICAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOwogICAg
IH0KKyAgICAKKyAgICBpbmxpbmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNWYWx1ZSB2YWx1ZSwg
Q2FsbERhdGEmIGNhbGxEYXRhKQorICAgIHsKKyAgICAgICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFs
dWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEo
dmFsdWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlTm9uZTsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdCA9PSBDYWxsVHlwZU5vbmUgfHwgdmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2Jq
ZWN0KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCAyNWJjZGQ2YWQ3
MDdkMGFmODE4YTM4N2E3NDZiNzdjODgzMzE3MjFiLi5lNzM2ZWMyZWRhZGFkMTdiMjc2YjM4Mjlm
NTZjNGM4ZDAxNTQ4MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMS0wOS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0
YVZpcnR1YWwgbWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRlcyAKKyAgICAgICAg
d2l0aCBhbiBleHBsaWNpdCBsb29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLiAgQWxzbyBoYWQgdG8g
YWRkIENsYXNzSW5mbyAKKyAgICAgICAgc3RydWN0cyB0byBzb21lIG9mIHRoZSBjbGFzc2VzIHRo
YXQgb3ZlcnJvZGUgZ2V0Q2FsbERhdGEgYnV0IGRpZG4ndCAKKyAgICAgICAgcHJvdmlkZSB0aGVp
ciBvd24gQ2xhc3NJbmZvIHN0cnVjdHVyZS4KKworICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNw
cDoKKyAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENhbGxGdW5jdGlvbik6CisgICAg
ICAgICogVXNlck9iamVjdEltcC5jcHA6CisgICAgICAgICogVXNlck9iamVjdEltcC5oOgorCiAy
MDExLTA5LTI5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRGUtdmlydHVhbGl6ZSBKU0NlbGw6OnZpc2l0Q2hpbGRyZW5WaXJ0dWFsIGFuZCByZW1v
dmUgYWxsIG90aGVyIHZpc2l0Q2hpbGRyZW5WaXJ0dWFsIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IGYxZjFhNzIxMzIxMjM1ZDc1ODAyNGRhNjU2
N2I0NjgyYzBiN2EwMTkuLmZlMjM5ZTVjMGYzZGJjZTBiMzk4ZTU1OGQyN2FlYjBjMGM4ZTkxZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcApAQCAtMTYzLDcgKzE2
Myw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENhbGxGdW5jdGlvbih2
b2lkICpkYXRhLCBKU09iamVjdFJlZiB0aGlzT2JqCiAgICAgICAgIH0KIAogICAgICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmpWYWx1ZS0+Z2V0
Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBv
YmpWYWx1ZS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqVmFsdWUsIGNhbGxEYXRhKTsK
ICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICBKU1ZhbHVlICByZXN1bHRWYWx1ZSA9IGNhbGwoZXhlYywgb2JqVmFsdWUs
IGNhbGxUeXBlLCBjYWxsRGF0YSwga3NqVGhpc09iaiwgbGlzdEFyZ3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4IDYzMjU5OTRmMWUxY2Y5YzIwOTBmZDgyZjZh
MDIzYzk1YjQwMTJkMmEuLjVmYmI1MGU3MThiNjYyYzcwOTRlNGU3MDRhMGNlZmRjN2U1ZTczZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTQ2LDExICs0Niw2
IEBAIFVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCkKICAgICAgICAgZkpTVXNlck9iamVj
dC0+UmVsZWFzZSgpOwogfQogCi1DYWxsVHlwZSBVc2VyT2JqZWN0SW1wOjpnZXRDYWxsRGF0YVZp
cnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlz
LCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxEYXRhKEpT
Q2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJbXAqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCAyZDU2ZDRhMDlkNzY2ZDc0N2VjNzU1MzU5ZDIx
MDU1NTAxZmExMjhlLi5jODkyNzJiYWJhZGNkNGU5MWI1MDYyNWFjMjJlMzlkYzZjMmZiYjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICB2aXJ0dWFs
IENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgdmlydHVhbCB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDdlOTM3ZDE4Njg5NjI4NTQ0OWYxMmU3NzYzYTQ4NTZkNmEyZDJmZGYuLmRiOTZmZjMwOTU1
Nzc0Y2U3MDg1M2ZiZDJjM2NhZjdkODJkZjFlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1MSBA
QAogMjAxMS0wOS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgog
CisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgUmVtb3ZlZCBhbGwgZ2V0Q2FsbERhdGFWaXJ0dWFsIG1ldGhvZHMgYW5kIHJlcGxhY2VkIHRo
ZWlyIGNhbGwgc2l0ZXMgCisgICAgICAgIHdpdGggYW4gZXhwbGljaXQgbG9va3VwIGluIHRoZSBN
ZXRob2RUYWJsZS4gIEFsc28gaGFkIHRvIGFkZCBDbGFzc0luZm8gCisgICAgICAgIHN0cnVjdHMg
dG8gc29tZSBvZiB0aGUgY2xhc3NlcyB0aGF0IG92ZXJyb2RlIGdldENhbGxEYXRhIGJ1dCBkaWRu
J3QgCisgICAgICAgIHByb3ZpZGUgdGhlaXIgb3duIENsYXNzSW5mbyBzdHJ1Y3R1cmUuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3Bh
Y2VVUkkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVs
ZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cnVudGltZU9iamVjdEdldENhbGxEYXRhKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBi
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRp
bWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjppc0phdmFTY3JpcHRGdW5jdGlvbik6
CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlF0UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKworMjAxMS0wOS0zMCAgTWFyayBIYWhu
ZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBnZXRDYWxsRGF0
YSB0byBNZXRob2RUYWJsZSBpbiBDbGFzc0luZm8KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDI0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggODI2
ZWFjNjVlZmU3OWMxMzNjMjZlZWIwYWM4MmU5ZTY4NWY0MWRmOS4uZDBkNjhjNDc5NjljZGFmMGI0
YjhhYzg5MTYyMjc2YTc3NjM2ZDE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE2NDcsNyAr
MTY0Nyw2IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnRF
aQogI2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Qx
MWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzEzUnVudGlt
ZU1ldGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlm
aWVyRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldENhbGxEYXRhVmlydHVhbEVSTlNfOENh
bGxEYXRhRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pT
QzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNS
dW50aW1lTWV0aG9kNnNfaW5mb0UKQEAgLTE2NTcsNyArMTY1Niw2IEBAIF9fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRh
RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3QxNGZpbmlzaENyZWF0aW9uRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0M4Qmlu
ZGluZ3MxM1J1bnRpbWVPYmplY3QxNmdldENvbnN0cnVjdERhdGFFUk5TXzEzQ29uc3RydWN0RGF0
YUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRDYWxsRGF0YVZpcnR1YWxF
Uk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Q
cm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVy
dHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJh
dGlvbk1vZGVFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDI0Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3Bl
cnR5RGVzY3JpcHRvckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmNwcAppbmRleCAwYjI3MDA4MDdkYjFjMTdkOTRmZTZmZDlhZDE3ZGRkMjQ0ODBmYzBkLi5h
ODhiZDY0ZGM2MTEyMTdhODQxNjk4NzFjMWNmNDNlYTk0YzljMmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCkBAIC01Myw3ICs1Myw3IEBAIEpT
VmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKE1hcmtlZEFyZ3VtZW50QnVmZmVy
JiBhcmdzLCBib29sKiByYWlzZWRFCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgY2FsbFR5cGUgPSBjYWxsYmFjaygp
LT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICBjYWxsVHlwZSA9IGNhbGxi
YWNrKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNhbGxiYWNrKCksIGNhbGxEYXRhKTsK
ICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApp
bmRleCAwNjJiYmEwZjc5ZmFlNTMzMDU5Y2UxOWQ5OWI1YWNiOGNlM2RlZDBhLi45MzA5OTk3NDdj
YTFlMmFmMTI1ODBjODU3OWJmOWExODc3NTM0ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJ
KGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGNhbGxUeXBlID0gbV9jdXN0b21S
ZXNvbHZlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICAgICAgY2FsbFR5cGUg
PSBtX2N1c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX2N1c3RvbVJl
c29sdmVyLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGFjdHVhbCBsaW5lIG51bWJlciBhbmQgc291
cmNlIFVSTC4KICAgICAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LT5pbXBsKCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNwYWNlVVJJ
IG1ldGhvZC4iLCAwLCBTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Vycm9ySGFuZGxlci5jcHAKaW5kZXggYTk0Zjc5NjZkYjJmMmYxYjA0YWIzNmVmMzA5NTA0ZjUz
MjQ2MDhlMS4uM2QwOWFiN2Q5MTFjMTUxMDY4M2RiYzI2NjNjNTZkZWMzOTMxZmUwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERh
dGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+
Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwogCiAgICAgaWYgKGNhbGxUeXBlICE9
IENhbGxUeXBlTm9uZSkgewogICAgICAgICBSZWZQdHI8SlNFcnJvckhhbmRsZXI+IHByb3RlY3Rl
ZGN0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAppbmRleCA5MWNhMTQ5OWExYzVkZmQyNjVmMjMwYTNiODA4NDIzMWFhMjUzOTYyLi5j
OGE3OTI4MmI1NTU2ZDNjN2VhMGMxMDQ3MTY3OTg3MmYwNWQ2MmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IEpTVmFsdWUo
KTsKLSAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2Fs
bERhdGEpOworICAgICAgICBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPm1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICB9CiAKICAgICBpZiAoY2FsbFR5
cGUgIT0gQ2FsbFR5cGVOb25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDcwZWI2ZTE3NWVmMzk4
MTRjNmU4YWJjYjIwZDUzN2FmZjM1ZGZjNzQuLmRmN2I0MmM3MGY4ZjMyOGQ5ZDA3ZDVmMDI1NmU2
Mzc2OTlhZTQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC05OSwxMSArOTksNiBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUNhbGxUeXBlIEpTSFRNTEFsbENvbGxlY3Rpb246OmdldENhbGxEYXRhVmlydHVhbChDYWxs
RGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRh
KTsKLX0KLQogQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNhbGxIVE1MQWxsQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggODBkNTk0ZWY1ODg5
NGM1NmRjMTdkYjg0MzU3MGNiZGJhMTdmNDdhNS4uMzBlMTU3ODEzN2NjY2QyNjAxYmI0OTQ5MWY5
YjEzZjczMWY5MjY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ4LDExICs0OCw2IEBAIGJvb2wg
SlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7CiB9CiAKLUNhbGxUeXBlIEpTSFRN
TEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17
Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUg
SlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0YShzdGF0aWNf
Y2FzdDxKU0hUTUxBcHBsZXRFbGVtZW50Kj4oY2VsbCksIGNhbGxEYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IDVjNGI3MGExYTEyYTI2ZGFjZjQxYTA2OGQ0YjU1MmJhYWVmZTY1ZGUuLjViNWM0MTEy
YjZkNjg0OTExZTgyMDhiY2YzNWZlYTU5YTA1YTI1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDgs
MTEgKzQ4LDYgQEAgYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkKICAgICByZXR1cm4gcnVudGltZU9i
amVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKIH0K
IAotQ2FsbFR5cGUgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERh
dGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7
Ci19Ci0KIENhbGxUeXBlIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBj
ZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmplY3RHZXRD
YWxsRGF0YShzdGF0aWNfY2FzdDxKU0hUTUxFbWJlZEVsZW1lbnQqPihjZWxsKSwgY2FsbERhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA3YjM5MGUzNWQ2NTRlNTc3YzcwOTQ0ZTZiODZlNmM4NTdm
MDg4ZTQzLi5hZmJlZTBlYmI5MzlmYWVmMGQ3Mzk5ZGQ5MzhkMjA2ZjMxZjNkN2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50
Q3VzdG9tLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50Ojpw
dXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnQKICAg
ICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCB0aGlzLCBzbG90KTsKIH0KIAotQ2FsbFR5cGUgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERh
dGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBKU0hUTUxPYmplY3RFbGVtZW50Ojpn
ZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICByZXR1
cm4gcnVudGltZU9iamVjdEdldENhbGxEYXRhKHN0YXRpY19jYXN0PEpTSFRNTE9iamVjdEVsZW1l
bnQqPihjZWxsKSwgY2FsbERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDAzMWJjMjEyZDYx
YzM1MTYzZmQzNGYxZGQzNDBiMzA0ZWNlMmUxNjkuLjhjMmMxM2U3YmExMTY5M2M1MDZmMGEwOTRl
ZmZlMTFjNjRlMjdkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgSlNW
YWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5ldmFsRnVu
Y3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGV2YWxGdW5jdGlvbi0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGV2YWxGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZXZh
bEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDE0N2JjMzg2ZTIzYmE5NzA5MTMwNGYyMDM1ZmVlODY3
MzgxMzA1N2UuLmEzM2E1Zjg1M2M2OTgwMzI5NzM0ZjA0OTNkOTA1Y2YzYjZkNTBiZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIENhbGxUeXBlIHJ1bnRpbWVPYmplY3RHZXRD
YWxsRGF0YShKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAg
aWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2lu
Vmlld0Jhc2UoZWxlbWVudCkpIHsKICAgICAgICAgQ2FsbERhdGEgc2NyaXB0T2JqZWN0Q2FsbERh
dGE7CiAgICAgICAgIAotICAgICAgICBpZiAoc2NyaXB0T2JqZWN0LT5nZXRDYWxsRGF0YVZpcnR1
YWwoc2NyaXB0T2JqZWN0Q2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgaWYgKHNj
cmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoc2NyaXB0T2JqZWN0LCBzY3Jp
cHRPYmplY3RDYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIENh
bGxUeXBlTm9uZTsKIAogICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUGx1
Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCAwYWU3ZTJjNGY3NGYzZWQ1ZjE4YTQxMGEyNDZkNTQ3YWRmNmFmNTY5Li5l
ZThkZmZmNWI0OWQ2MDU1ODFjODdhZTRiM2U1Y2ZkYTA4MWU4YjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtODE2LDcg
KzgxNiw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNoRXZlbnRIYW5kbGVyU2NvcGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikgY29uc3Q7XG5cbiIpIGlmICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSJ9
OwogCiAgICAgIyBDdXN0b20gY2FsbCBmdW5jdGlvbnMKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoSlNDOjpDYWxs
RGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21D
YWxsIn07CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTtcblxuIikgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9OwogCiAgICAgIyBDdXN0
b20gZGVsZXRlUHJvcGVydHkgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLmgKaW5kZXggYzFhZGViM2UwOGMzZDFhNGRhMzNiMjAyMjQ1MTRmYzQzMjZjMWIx
ZC4uMDllYzEwYTdiMmRiM2QzNTgxNTJkZjMzMjRmYTYwZmZmNzZkMDBkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTEyNiw3ICsxMjYsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHZpcnR1YWwg
Ym9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KaW5kZXggY2Y3ZjIyZThhN2Q1YWU5NzlkNGZkMWQ5NzliMDk2YWI3MmFh
NDkyOS4uZWQyODRmMjNjYzgzOGMyMzI2MzM5YWEyOWI0MjI1MTEwNGRlN2UzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjU1LDExICsyNTUsNiBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLUNhbGxUeXBlIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGFWaXJ0dWFs
KENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2Fs
bERhdGEpOwotfQotCiBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxEYXRh
KEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIE9iamNGYWxsYmFja09i
amVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDU1NTdi
MTM2ODI1ZjA1M2UzNjc2MjYwNDVhYzM2Y2M4YWE4OGMyZDQuLmZkMDZhMTNlZjQ5MTEyMTI4ODhm
MDVhYjNmNjQ5MjRhYmIwNzAyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5jcHAKQEAgLTE0MjUsNiArMTQyNSw4IEBAIHN0YXRpYyBpbnQgZmluZFNpZ25hbEluZGV4KGNv
bnN0IFFNZXRhT2JqZWN0KiBtZXRhLCBpbnQgaW5pdGlhbEluZGV4LCBRQnl0ZUFycmF5CiAgICAg
cmV0dXJuIGluZGV4OwogfQogCitjb25zdCBDbGFzc0luZm8gUXRSdW50aW1lTWV0YU1ldGhvZDo6
c19pbmZvID0geyAiUXRSdW50aW1lTWV0aG9kIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShRdFJ1bnRpbWVNZXRhTWV0aG9kKSB9OworCiBRdFJ1bnRpbWVNZXRhTWV0
aG9kOjpRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgOiBRdFJ1bnRpbWVNZXRo
b2QgKG5ldyBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSgpLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50
aWZpZXIpCiB7CkBAIC0xNDg2LDExICsxNDg4LDYgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50aW1l
TWV0YU1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotQ2FsbFR5cGUgUXRSdW50aW1lTWV0YU1ldGhvZDo6
Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0
Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBRdFJ1bnRpbWVNZXRhTWV0
aG9kOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbDsKQEAgLTE1ODAsNiArMTU3Nyw4IEBAIEpTVmFs
dWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsCiAKIFFNdWx0aU1hcDxRT2JqZWN0KiwgUXRDb25uZWN0aW9uT2Jq
ZWN0Kj4gUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y29ubmVjdGlvbnM7CiAKK2NvbnN0IENs
YXNzSW5mbyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVN
ZXRob2QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2QpIH07CisKIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OlF0UnVu
dGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IFF0UnVudGltZU1ldGhvZCAo
bmV3IFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKCksIGV4ZWMsIHN0cnVjdHVyZSwgaWRl
bnRpZmllcikKIHsKQEAgLTE2MjAsNyArMTYxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgZnVuY09iamVj
dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIGlmIChmdW5jT2JqZWN0LT5nZXRDYWxs
RGF0YVZpcnR1YWwoY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgICAg
IGlmIChmdW5jT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShmdW5jT2JqZWN0LCBj
YWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkLT5t
X2lzQ29ubmVjdCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJRdE1ldGFNZXRob2QuY29ubmVjdDogdGFyZ2V0
IGlzIG5vdCBhIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0xNjMz
LDcgKzE2MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpj
YWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3R1
YWwgZnVuY3Rpb24gdG8gY2FsbAogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqYXNPYmog
PSBleGVjLT5hcmd1bWVudCgxKS50b09iamVjdChleGVjKTsKICAgICAgICAgICAgICAgICAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhc09iai0+Z2V0Q2Fs
bERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFzT2JqLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShhc09iaiwgY2FsbERh
dGEpICE9IENhbGxUeXBlTm9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRnVuY3Rp
b24gdmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY09iamVjdCA9IGFzT2JqOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTY0Niw3ICsxNjQ1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbCA9IHRoaXNPYmplY3QtPmdldChl
eGVjLCBmdW5jSWRlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGFzRnVu
Y09iaiA9IHZhbC50b09iamVjdChleGVjKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFzRnVuY09iai0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhc0Z1bmNPYmotPm1ldGhvZFRhYmxlKCkt
PmdldENhbGxEYXRhKGFzRnVuY09iaiwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNPYmplY3QgPSBhc0Z1bmNPYmo7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkLT5tX2lzQ29ubmVjdCkKQEAgLTE3MzAsMTEgKzE3MjksNiBAQCBFbmNvZGVkSlNWYWx1ZSBR
dFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1DYWxsVHlwZSBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRh
KQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxU
eXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsOwpA
QCAtMTg1OCw3ICsxODUyLDggQEAgaW50IFF0Q29ubmVjdGlvbk9iamVjdDo6cXRfbWV0YWNhbGwo
UU1ldGFPYmplY3Q6OkNhbGwgX2MsIGludCBfaWQsIHZvaWQgKipfYSkKIHN0YXRpYyBib29sIGlz
SmF2YVNjcmlwdEZ1bmN0aW9uKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICByZXR1cm4gdG9KUyhvYmplY3QpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2Fs
bERhdGEpID09IENhbGxUeXBlSlM7CisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOworICAgIHJldHVybiBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNP
YmplY3QsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZUpTOwogfQogCiB2b2lkIFF0Q29ubmVjdGlvbk9i
amVjdDo6ZXhlY3V0ZSh2b2lkKiogYXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCmluZGV4IDlhMjc2MjllNmRmY2I1YTA2OTM1OGRhZjI4OWMzYWI5MDE1YjQ0MGMuLjBiZWI2
NTMyOWIwM2FiMjczZmNlMTFkZjlkMjhlNTMxNDliZTgxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaApAQCAtMTY5LDYgKzE2OSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAg
IAorICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsICBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAg
IH0KIAogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZU1ldGFNZXRob2REYXRhKiBkX2Z1bmMoKSBj
b25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1lTWV0YU1ldGhvZERhdGEqPihk
X3B0cik7fQpAQCAtMTc3LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgUXRSdW50aW1lTWV0YU1l
dGhvZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1JlZlB0
cjxRdEluc3RhbmNlPiwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJv
b2wgYWxsb3dQcml2YXRlKTsKIAotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0
dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bChFeGVjU3RhdGUqIGV4ZWMpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC0yMDIsNiArMjA4LDEzIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAK
KyAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCAgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9
CisKIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSogZF9mdW5j
KCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2REYXRhKj4oZF9wdHIpO30KIApAQCAtMjA5LDcgKzIyMiw2IEBAIHByaXZhdGU6CiAgICAgUXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRl
eCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKTsKIAotICAgIHZpcnR1YWwgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqIGV4ZWMpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGxl
bmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAwZTU1YzE2NGNiNGQ3MmVi
NTczNjliYjk2ZWY4ZTEyN2UzMGE3ZTU4Li4wN2I0MTdkNGM5MjQ2MjE2ODZmYTM0MmJjNTZmY2Ux
NjMzMjBiY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAg
LTEyMywxMSArMTIzLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotQ2FsbFR5cGUgUnVudGltZU1ldGhvZDo6Z2V0Q2FsbERhdGFWaXJ0
dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywg
Y2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBSdW50aW1lTWV0aG9kOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbFJ1bnRpbWVNZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5o
CmluZGV4IDM1NGFjZjg4NmEwYzMyZWQ5ZDc2MGI1MjdlZmU1YTQwZTdkOTFmMTIuLmYwNzRmNTgx
MjE2NjIwM2ZjMTkyNzg3NTE0MWZjMDY1MDFlNmYzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5oCkBAIC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICBSdW50aW1l
TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZExpc3Qm
KTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
LSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAg
IHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggZGYxMWZl
YjZjYTk4ZWFjOTIyYThhMGYzNmMzYjA3OWQzZGM1Y2Y1ZS4uNzMzNzliZjc2Mzk0YmQ0YzhkZmU2
ZjFkOGQwODVhNWI3YjU2NTU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwCkBAIC0yNTksMTEgKzI1OSw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIFJ1bnRpbWVPYmplY3Q6OmdldENh
bGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxE
YXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgUnVudGltZU9i
amVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggMWFjMjFhZDQ4ZjI4MzdjOTYw
MDhhZTM1MDgxZmMwYzAzOTNhNjFhMy4uOTMzNGM1OTU5OTliN2I5MjlkMzQ2Yzg4ODQ3NmUyMzUz
M2ZkY2MwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTUwLDcg
KzUwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNT
dGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NzVhM2UyMDIxNDUzYjM5OGQyNTNjM2M5ODk5MWQ3MTRmZTE5NWU1Mi4uZTk5OGQ3ZjU5MmIyNDU4
ZjM5MDgwMTc2N2Q3MTVkZDgxOWMwNTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDExLTA5LTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYWxsIGdldENhbGxE
YXRhVmlydHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNpdGVzIAorICAgICAg
ICB3aXRoIGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuICBBbHNvIGhhZCB0
byBhZGQgQ2xhc3NJbmZvIAorICAgICAgICBzdHJ1Y3RzIHRvIHNvbWUgb2YgdGhlIGNsYXNzZXMg
dGhhdCBvdmVycm9kZSBnZXRDYWxsRGF0YSBidXQgZGlkbid0IAorICAgICAgICBwcm92aWRlIHRo
ZWlyIG93biBDbGFzc0luZm8gc3RydWN0dXJlLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgorCiAyMDExLTA5LTI4ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQVNTRVJUIGlmIFdl
YlZpZXcncyBVSURlbGVnYXRlIGRvZXMgbm90IGltcGxlbWVudCB3ZWJWaWV3OnJ1bk9wZW5QYW5l
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDNhMDNhYTRkYWExNDY1MGZjM2Yw
Y2Y5ZDM5MGI5YmYzYWNkYjJmOTEuLjJlYTFhOThhNjI2MDk1NjhmMzZhMjU0ZTUxMGQyYWY0YTRm
NDVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTk0Myw3ICs5NDMsNyBA
QCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCh1aW50MzJf
dCBvYmplY3RJRCwgZGF0YV90IGFyZ3VtZQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZyYW1lLT5z
Y3JpcHQoKS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsgICAgCiAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPmdldENhbGxEYXRhVmlydHVh
bChjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU1YTkw
MWJiMGI2Y2I4ZmQ2ZGYyYThhMjY0ZTIxZjQ1ODMyYWNjMzQuLmRiOGI5YjJiOWI0ZDgzZjg2OTY5
MDI3MWRjZGEwZWVlNTY2NzliZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0w
OS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwg
bWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBl
eHBsaWNpdCBsb29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLiAgQWxzbyBoYWQgdG8gYWRkIENsYXNz
SW5mbyAKKyAgICAgICAgc3RydWN0cyB0byBzb21lIG9mIHRoZSBjbGFzc2VzIHRoYXQgb3ZlcnJv
ZGUgZ2V0Q2FsbERhdGEgYnV0IGRpZG4ndCAKKyAgICAgICAgcHJvdmlkZSB0aGVpciBvd24gQ2xh
c3NJbmZvIHN0cnVjdHVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oOgorCiAyMDExLTA5LTMwICBRaSBaaGFuZyAgPHFpLjIuemhhbmdAbm9raWEuY29tPgog
CiAgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
QXBwQ2FjaGVNYXhpbXVtU2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCmluZGV4IGZhODhmZTVlMGM4ZTAx
NTRmYzU2YWIxMWE4ODNhYjZiZGUzMDg5YjEuLmQzZDEwMGE4NDk1ZGQwYzkzMmUzY2I4MmZlZmUz
N2Q1ZTcwNGI1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKQEAgLTc3LDExICs3Nyw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogfQogCi1DYWxsVHlwZSBKU05Q
TWV0aG9kOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJl
dHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTTlBNZXRo
b2Q6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsTWV0aG9kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKaW5kZXggYThm
YjYyN2Y1Zjc3MDk0YjU3Zjk5NjUyYjg1M2NhYjFjZmRmYzRlMC4uZmYwOTYxYzM4MTE2MTA0MWM5
ODllYjZlOTc1NzVjNmY5YTYwYmU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCkBAIC02Miw3ICs2Miw2IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEpTQzo6
Q2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKEpTQzo6Q2FsbERhdGEmKTsKICAgICBzdGF0aWMg
SlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2FsbERhdGEmKTsK
ICAgICAKICAgICBOUElkZW50aWZpZXIgbV9ucElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
aW5kZXggYWU5YjllODQ1YTJjMTJmMDA5ZmRhNjdiYmY4NTUwOGI3NGMzZDFkMC4uNGFmZjk2YjZh
MDU4ZmNkZDc0Nzc5YTZmOTQyNzU1MDMwNmVjMTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAt
MjE3LDExICsyMTcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
TlBKU09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
dGF0aWNfY2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KS0+Y2FsbE9iamVjdChleGVjKSk7CiB9CiAK
LUNhbGxUeXBlIEpTTlBPYmplY3Q6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERh
dGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogSlND
OjpDYWxsVHlwZSBKU05QT2JqZWN0OjpnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCogY2VsbCwgSlND
OjpDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4IDI2NGE2MzVj
MDE1ZjQ5NjE4NzI2Njc4ZmIxYjNmZTcxM2VmYjlmMzUuLjlhYWEyZDRiOTk5ZGYzNzNlMjBlYzAx
OGVmN2RkYmYyNWFiMThjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApAQCAtNzksNyArNzksNiBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBKU0M6OkNhbGxU
eXBlIGdldENhbGxEYXRhVmlydHVhbChKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpTQzo6
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAg
dmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVj
dERhdGEmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110059</attachid>
            <date>2011-10-06 16:43:26 -0700</date>
            <delta_ts>2011-10-06 17:24:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69186-20111006164325.patch</filename>
            <type>text/plain</type>
            <size>82590</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCBmYzA3NGZlNTFjNGE3MWQ0NjM0MWRkODcx
NGQwNTNhNzg0ZDAwOTM2Li5hZDAyZjE5ZTZjZTJmNGE0NDk0NmNlYWU0ZTBlNWVlNjA3YzE4Mzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
Y3BwCkBAIC03OCwxMSArNzgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrRnVuY3Rpb246
OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCByZXN1bHQpKTsKIH0KIAotQ2FsbFR5cGUgSlNDYWxsYmFja0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAppbmRleCA3MjQ5NGRjY2NhODBkM2MwOWZiMWIwODAyOGIzMWI4M2Ey
NTJhNGY4Li42YzFiMTBlZjM0NmVlNDg3MzRhMzBjYzkzM2MxMjc4NGExYTBjNzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTU5LDcg
KzU5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHZhbHVlT2ZDYWxsYmFjayhK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBDYWxsVHlw
ZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGZlYjdkOTdjOWU0MGY3ZDMxNTQzZTA3MzBi
MjMxOTMwMGVkMWUwNTcuLmQwNGFjMDQyMmVmZDAyZDlhNWY4NmYxZmQ2ZTE4NTdiODUxZjFkNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0x
OTQsNyArMTk0LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZp
cnR1YWwoQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggZGIzODM2YjZmYTRlMTZk
NjM2ZDA2MjFhMjNmMWMzOTc1ZmQyZjNiYi4uODhlZGZlMTkzOTZiNDU0OGJlYjJkNGE2NjIzMzdh
NmFhZDUyNjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3MiwxMiArMzcyLDYgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgSlNWYWwKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUNhbGxUeXBlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0
YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCi10ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgogQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpn
ZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBm
YTY4MmQ4ZmEyZTkwMDhjMjY4ODIwZmJlODQyOWUxZTAzNjFiOWI0Li40Y2M2NmE0ZGIzMjU0NTI2
NTQ1NmJlZDE4YTE1NTdkZWYxMWNkYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtNDE2LDcgKzQxNiw4IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2
YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmlu
CiBib29sIEpTT2JqZWN0SXNGdW5jdGlvbihKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVj
dCkKIHsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICByZXR1cm4gdG9KUyhvYmplY3QpLT5n
ZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKKyAgICBKU0NlbGwq
IGNlbGwgPSB0b0pTKG9iamVjdCk7CisgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7CiB9CiAKIEpTVmFsdWVS
ZWYgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBv
YmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC00MzUs
NyArNDM2LDcgQEAgSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICAgICAgYXJnTGlzdC5hcHBl
bmQodG9KUyhleGVjLCBhcmd1bWVudHNbaV0pKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNPYmplY3QtPmdldENhbGxEYXRhVmlydHVhbChjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0Q2FsbERhdGEoanNPYmplY3QsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGJjYTJhMjY5ZGRkZTg1MTM1ZjY2MTMxZDY2NmMwMjk3ODJlYTkxNi4uMDgyZjRmZDM0YmNk
N2JjNWU4Y2ExZTFhZmJlOGUzODBmYTJjODU4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTA1IEBACiAyMDExLTEwLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQg
YWxsIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNp
dGVzIAorICAgICAgICB3aXRoIGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUu
CisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoK
KyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAqIEFQ
SS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rpb24pOgorICAgICAg
ICAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWY6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorCisgICAgICAgIE1vdmVkIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiB0byBF
cnJvci5oIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gaW5jbHVkZSAKKyAgICAgICAgdGhlIGNsYXNz
IGRlZmluaXRpb24gaW4gSlNHbG9iYWxPYmplY3QuY3BwLgorICAgICAgICAqIHJ1bnRpbWUvRXJy
b3IuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb246OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChK
U0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRocm93VHlwZUVycm9y
KToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpnZXRDYWxsRGF0
YSk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorCisgICAgICAgIFRvIGFsbG93IHN1YmNsYXNz
ZXMgb2YgSW50ZXJuYWxGdW5jdGlvbiAoZS5nLiBRdFJ1bnRpbWVNZXRob2QpIHRvIG5vdCBoYXZl
IAorICAgICAgICB0byBkZWNsYXJlIHRoZWlyIG93biBDbGFzc0luZm8gaWYgdGhleSBkb24ndCBv
dmVycmlkZSBnZXRDYWxsRGF0YSwgcHJvdmlkZWQgCisgICAgICAgIGFuIGltcGxlbWVudGF0aW9u
IHRoYXQgY2FsbHMgQVNTRVJUX05PVF9SRUFDSEVEIGlmIGNhbGxlZCwgcHJvdmlkaW5nIHJvdWdo
bHkgdGhlIHNhbWUgCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXMgb2YgdGhlIHB1cmUgdmlydHVh
bCBtZXRob2QgSW50ZXJuYWxGdW5jdGlvbiB1c2VkIHRvIGhhdmUuCisgICAgICAgIEFsc28gbWFk
ZSB0aGlzIG5ldyBpbXBsZW1lbnRhdGlvbiBwcm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZSBm
b3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICBBbHNvIGFkZGVkIGFuIEFTU0VSVCBpbiBJbnRl
cm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbiB0byBtYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciAK
KyAgICAgICAgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQgcHJvdmlkZXMgdGhlaXIgb3duIGltcGxl
bWVudGF0aW9uIG9mIGdldENhbGxEYXRhLiAgVGhpcyAKKyAgICAgICAganVzdCBtYWtlcyBleGVj
dXRpb24gZmFpbCBlYXJsaWVyIGluIGEgcGxhY2Ugd2hlcmUgdGhlIHNvdXJjZSBvZiB0aGUgZXJy
b3IgaXMgCisgICAgICAgIGVhc3kgdG8gdHJhY2UuICBUaGVzZSBBU1NFUlRzIGFyZSBiZXR0ZXIg
dGhhbiBwdXR0aW5nIGEgbnVsbCBpbiB0aGUgTWV0aG9kVGFibGUgYmVjYXVzZQorICAgICAgICB0
aGV5IGFwcGVhciBtdWNoIG1vcmUgaW50ZW50aW9uYWwgdG8gYW55Ym9keSB3aG8gZmFpbHMgdG8g
cHJvdmlkZSB0aGVpciBvd24gCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9yIHdobyB0cmllcyB0
byBleHBsaWNpdGx5IGNhbGwgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEuCisgICAgICAg
ICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxG
dW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9u
OjpnZXRDYWxsRGF0YSk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKworICAgICAgICBBZGRlZCBhIGdsb2JhbCBzdHJ1Y3R1cmUgdG8gSlNHbG9i
YWxPYmplY3QgZm9yIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiB0byBlbmFibGUgCisgICAg
ICAgIGl0IHRvIGJlIHJldXNlZCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBTdHJ1Y3R1cmUg
ZXZlcnkgdGltZSB3ZSBpbnN0YW50aWF0ZSBpdC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdp
Zmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAoSlND
OjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmpl
Y3RUeXBlKToKKyAgICAgICAgKEpTQzo6anNJc0Z1bmN0aW9uVHlwZSk6CisgICAgICAgICogcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmZ1bmN0
aW9uR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OmdldENh
bGxEYXRhKToKKworMjAxMS0xMC0wNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCiAgICAgICAgIFNub3cgTGVvcGFyZCBidWlsZCBmaXgKIAogICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
aW5kZXggNjY4NGIyMmVmYTI0ZTJlYTFiMWRhZDc5Y2FjYjU1OGRiZDlhY2Q3MS4uMWQyODJlYmUz
ZGEzMTAyZGYyMmE5NTJiZGM1NmY0YTBmNTBmZDQzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yNjAsNyArMjYwLDYgQEAgX19aTjNKU0M2SlNDZWxsMTFn
ZXRDYWxsRGF0YUVQUzBfUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDNkpTQ2VsbDE0ZGVsZXRlUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzZKU0NlbGwx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk4zSlNDNkpTQ2VsbDE2Z2V0Q29u
c3RydWN0RGF0YUVSTlNfMTNDb25zdHJ1Y3REYXRhRQotX19aTjNKU0M2SlNDZWxsMThnZXRDYWxs
RGF0YVZpcnR1YWxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDNkpTQ2VsbDE4Z2V0T3duUHJvcGVy
dHlTbG90RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xv
dEUKIF9fWk4zSlNDNkpTQ2VsbDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpS
TlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzZKU0NlbGwzcHV0RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXgg
NjYwNjg1ZTcyYTExZWFiNzcwYjdjMzg2MzlkNTViNDgzZTAwYjE0Zi4uZTY1YzJkYmMwYjBlN2I5
NDgxOWQ3NjRjYjU0MGJmOTE3Yjk1NjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5k
ZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTE5MCw3ICsxOTAsNiBAQCBFWFBPUlRT
CiAgICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRp
ZmllckAyQEFBSUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUlB
QVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQFdURkBAQUFJQUFQQVZKU0NlbGxAMkBAWgog
ICAgID9nZXRDYWxsRGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENh
bGxEYXRhQDJAQFoKLSAgICA/Z2V0Q2FsbERhdGFWaXJ0dWFsQEpTQ2VsbEBKU0NAQFVBRT9BVzRD
YWxsVHlwZUAyQEFBVENhbGxEYXRhQDJAQFoKICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxA
SlNDQEBVQUU/QVc0Q29uc3RydWN0VHlwZUAyQEFBVENvbnN0cnVjdERhdGFAMkBAWgogICAgID9n
ZXRPYmplY3RASlNDZWxsQEpTQ0BAUUFFUEFWSlNPYmplY3RAMkBYWgogICAgID9nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JASlNHbG9iYWxPYmplY3RASlNDQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZWI3NzQ2MzYy
MmQ0ODM3YzQwMzZjNjAzNjRlYmM5OWUyMTdmNWM3ZC4uZTAzNzA3MDc4MjI0MTk1NjhhNDk1ODM5
ZWZkODljYWI0M2Q2YmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yODI5LDcgKzI4MjksNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSog
cmVnaXN0ZXJGaQogICAgICAgICAgICAgICAgICAgICBpZiAoR2V0dGVyU2V0dGVyKiBnZXR0ZXJT
ZXR0ZXIgPSBhc0dldHRlclNldHRlcihwcm90b09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNl
dCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogZ2V0dGVy
ID0gZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXR0ZXItPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2Fs
bERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXNP
YmplY3QoYmFzZUNlbGwpLCBBcmdMaXN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7CkBAIC0yOTY0LDcgKzI5NjQsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmls
ZSogcmVnaXN0ZXJGaQogICAgICAgICAgICAgICAgIGlmIChHZXR0ZXJTZXR0ZXIqIGdldHRlclNl
dHRlciA9IGFzR2V0dGVyU2V0dGVyKGJhc2VPYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQp
LmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogZ2V0dGVyID0gZ2V0
dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRD
YWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICAgICAgICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZ2V0dGVyLCBjYWxs
RGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJh
bWUsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlT2JqZWN0LCBBcmdMaXN0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwpAQCAtMzA3Miw3ICsz
MDcyLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKGJhc2VPYmplY3Qt
PmdldERpcmVjdE9mZnNldChvZmZzZXQpLmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPmdldHRlcigpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRDYWxsRGF0YVZp
cnR1YWwoY2FsbERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxE
YXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwo
Y2FsbEZyYW1lLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZVZhbHVlLCBBcmdMaXN0
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggNGVjNDMz
MDZjNzhlMTNiYzMzYWIxOWM5NDBkZDE2MDYwYTJmZmZlZC4uYTkzMGY1ODJlMDlkYmFmNzFjNzUx
YjI1YzVjNGU3NWE3ZDBhOTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKQEAgLTE3NTIsNyArMTc1Miw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1Zh
bHVlLCBvcF9nZXRfYnlfaWRfZ2V0dGVyX3N0dWIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNPYmplY3QqIGdldHRlciA9IGFzT2JqZWN0KGdl
dHRlclNldHRlci0+Z2V0dGVyKCkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShn
ZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBn
ZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpzT2JqZWN0KCks
IEFyZ0xpc3QoKSk7CiAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVyblRvVGhyb3dUcmFtcG9saW5lKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgc3RhY2tG
cmFtZS5hcmdzWzJdLnJldHVybkFkZHJlc3MoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CkBAIC0y
MTUzLDcgKzIxNTMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9qaXRD
b21waWxlKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIEFTU0VSVChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCktPmdldENhbGxEYXRhVmly
dHVhbChjYWxsRGF0YSkgPT0gQ2FsbFR5cGVKUyk7CisgICAgQVNTRVJUKHN0YWNrRnJhbWUuY2Fs
bEZyYW1lLT5jYWxsZWUoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoc3RhY2tGcmFtZS5j
YWxsRnJhbWUtPmNhbGxlZSgpLCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVKUyk7CiAjZW5kaWYKICAg
ICAKICAgICByZXR1cm4gaml0Q29tcGlsZUZvcihzdGFja0ZyYW1lLCBDb2RlRm9yQ2FsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDQ1MzhjYjg0Mzk0ODQzNWJmYzZkN2ZiZjY5Y2RiNGFmNWM0ZDQ4YjkuLjNiYjEzMzgy
NjM2NTNmNTRiY2UzMTFhNmU5OGIwNGM1MGMyNWEyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC0xMDksMTEgKzEwOSw2
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBhcmdzKSk7CiB9CiAKLUNhbGxUeXBlIEFycmF5Q29u
c3RydWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAg
cmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgQXJyYXlD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewog
ICAgIC8vIGVxdWl2YWxlbnQgdG8gJ25ldyBBcnJheSguLi4uKScKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAppbmRleCBjNDZkY2IyMzYzMmRh
YjRmYzdiODY2ZjlhN2MwNzcwM2UzNjFlMDI2Li5mNjRiOWI2YzQ3YWRiMzY3YWM2YzM4OTIzNWM2
NjI5MmEzZmU4ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwCmluZGV4IDdjYmRlYjM2OGU2ZTdmZTI2NzdhZGVjMGU2Y2Y1MTBlZjMyNjExMjAuLmYy
YTYyZDdhZGUzMDlkNzBlNDBmYmU5ZTcxYzQxOTM4MjkzYmFjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtNzAs
MTEgKzcwLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJvb2xl
YW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7CiB9CiAKLUNh
bGxUeXBlIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBj
YWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQot
CiBDYWxsVHlwZSBCb29sZWFuQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsQm9v
bGVhbkNvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuQ29uc3RydWN0b3IuaAppbmRleCBhOTg5YzMwN2U3ZjQ1Y2RmMGQ2M2U4NmVjOThlMjAw
ZjI0OTNjYmNmLi4wZTBhM2UxNDMyN2U1NzM1YzAwZjAyODAwNTUxNWZiY2M4Mzk5MGZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
aApAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYp
OwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcAppbmRleCAzZWExNjM3ZGJkNTFjZmIxOGVmMGM3MGRmODUyODNjOGYzOWIw
OTRjLi5lMzdlNmYxMWQ2NjdiYTM3YTFmNmI1N2FhNzhlMmRiYjc4YmQ5YzYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTE3
NiwxMSArMTc2LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERh
dGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCBkYXRlLCAiICIsIHRpbWUpKTsKIH0KIAotQ2FsbFR5cGUgRGF0
ZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewot
ICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIERh
dGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQog
ewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxEYXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAppbmRleCAwNmRjOTRhOGI3
YjBjMzRjZjFkMDlhZDI0ODI0YTMyNzVmOWQ0YjA2Li40MWJlOTM1NDQzZWMwODExNmRmMzc0ZDQz
MGMwM2Y4ZDEyYmM5OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaApAQCAtNTIsNyArNTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cml2YXRlOgogICAgICAgICBEYXRlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29u
c3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVh
bChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwZWQ3MDc1ODkzZDE2MjRjNTBlM2E0
ZDNlNzdlMjg4OWI1ZWFiNDIyLi40YTFlMTQ4MjA1NWQ5YWNkMjc3ZTU0NTYxYjM3YmYyMTY5MTZk
NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKQEAgLTE2NSw3MSArMTY2LDE0IEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhF
cnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOwogfQogCi1jbGFzcyBTdHJpY3RNb2RlVHlwZUVy
cm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci1wcml2YXRlOgotICAgIFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAgICAgICAsIG1fbWVz
c2FnZShtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKLQotICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQotICAgIHsKLSAg
ICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2Nh
dGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7
Ci0gICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwotICAgICAg
ICByZXR1cm4gZnVuY3Rpb247Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykK
LSAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgfQotICAgIAotICAgIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQotICAgIHsKLSAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RUaHJvd1R5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwotICAg
IH0KLSAgICAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVh
bChDYWxsRGF0YSYgY2FsbERhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gZ2V0Q2FsbERhdGEo
dGhpcywgY2FsbERhdGEpOwotICAgIH0KLQotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCi0gICAgewotICAgICAgICBjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Ci0K
LSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkg
Ci0gICAgeyAKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOyAKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVVN0cmluZyBtX21lc3NhZ2U7
Ci19OwotCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbik7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pIH07CiAKIEpTVmFsdWUgY3JlYXRlVHlw
ZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIHJldHVybiBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIHJldHVy
biBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+c3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKCksIG1l
c3NhZ2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCmluZGV4IGMwZjlkMzIwOThiMTY2NmFkZjM5YmRiNDBkM2Y4NGJmMTAwZjdkOGMu
LmMzNDBlNmMyMzk4NTc2YTE4NTI4NWVjZjZhOWY1NzZhOTI2Y2UxNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9o
CiAjZGVmaW5lIEVycm9yX2gKIAorI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogCkBAIC03Myw2ICs3NCw1OSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTVmFsdWUgY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKTsKICAgICAKKyAgICBjbGFz
cyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKQorICAgICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQorICAgICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworCisgICAgICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24q
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChh
bGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNz
YWdlKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIp
OworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgICAgICB9CisgICAgCisgICAgICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQ29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0VGhyb3dU
eXBlRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0
aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorICAgICAgICB7
CisgICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJy
b3I7CisgICAgICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgICAgICB7IAorICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2lu
Zm8pOyAKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVVN0cmluZyBtX21lc3Nh
Z2U7CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFcnJvcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDdhMDAyYmExMzM3YjAyZmE5YzMzMDMzMWFkZWQwMzQ5MDJhOGE1ZTAuLjBiM2JhOTFm
NTUzMTczMDZmZjEyNTVmZWYyYjc0ZDlmNTA5ZTk4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC02NiwxMSArNjYsNiBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3Rh
bmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KIAotQ2FsbFR5
cGUgRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0
YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxs
VHlwZSBFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEVycm9yQ29uc3Ry
dWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmgKaW5kZXggYjdkODgxYjNjMjM3NGIyOTFmZmRjYWI5MzdjYmU3ZGQ2ODNiN2ZlNC4uMzFm
ZDNiNjNjMjU5ZmZjZDhiN2Q3OTdiNjQ1MjJkMmU2NzhhNWMxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaApAQCAtNTIsNyArNTIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBFcnJvckNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAppbmRleCA3Njc4MjI0NjZmYTcxNDkyZDc3OTcxODkxNzQwYmI3NTgyMmU3MmMwLi43N2Y0NzA1
NGZiMmRiMWI4Njk3MmFjMjVjMzE4ZDI5YzYzZDk2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzEsMTEg
KzcxLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9u
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKIH0KIAotQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1
cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiAvLyBFQ01BIDE1LjMuMSBUaGUg
RnVuY3Rpb24gQ29uc3RydWN0b3IgQ2FsbGVkIGFzIGEgRnVuY3Rpb24KIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaAppbmRleCAyMmE2MDE2Yjc4NTNiZDE2ODI5ZTY1NTE3NjdkZjMxMGEwNjhlZTgxLi44
ZmI5MGIwYTRkN2EyYzEyNjFjYjY3MGE1ZTkzNjA0ZWI3YjJlOWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC00OSw3
ICs0OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFs
IENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
aW5kZXggYzAyZTY3NWU0ZmM2NTc0YjkyMDg0OTJkMmFiM2JhN2U0ODdlODRmYi4uYjgzMWQ1ZGMw
MGMwNTFjMTEzMWEzMTU1MWE0YTU1ZjU0OWE2MmU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9u
UHJvdG90eXBlKTsKIAorY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RnVuY3Rpb25Qcm90b3R5cGUpIH07CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmND
YWxsKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Qcm90b0Z1bmNCaW5kKEV4ZWNTdGF0ZSopOwogCi1jb25zdCBDbGFzc0luZm8gRnVuY3Rp
b25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvblByb3RvdHlwZSkgfTsKLQogRnVuY3Rpb25Qcm90
b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKIHsKQEAgLTcyLDExICs3Miw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqKQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBlIEZ1bmN0aW9u
UHJvdG90eXBlOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAg
IHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIC8vIEVDTUEgMTUuMy40
CiBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmgKaW5kZXggN2MxOTYzMjIyZmVkMDAyZDA2MWIxMzBhYjY1OTAzMGYw
ZTc1MzIyYy4uNDVlMDkzM2UxNzMwNzcxOTRkNTJhYzA0NDFlYjc2ZWU0ODc2YTZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBA
IC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
RnVuY3Rpb25Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAg
dmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcAppbmRleCAxN2M3MjY1Yzc4MTdiZDg3NmVlZjhmOTEzZjA3YzkxYzVhMjBhZDc3Li4xNzE0
MTYzNzY3MTM5YjYwM2RjNDY2ZGUzNWRiOTY4OWIzN2I5YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNTAsNiArNTAs
NyBAQCB2b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllcgogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAgQVNTRVJU
KG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rpb246OnNfaW5mby5t
ZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7CiAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNO
dWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogfQogCkBAIC02OCw2ICs2OSwxMiBAQCBjb25zdCBVU3RyaW5nIEludGVybmFsRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gVVN0cmluZygp
OwogfQogCitDYWxsVHlwZSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbGxU
eXBlTm9uZTsKK30KKwogY29uc3QgVVN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVk
RGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGNvbnN0IFVTdHJpbmcgZXhwbGlj
aXROYW1lID0gZGlzcGxheU5hbWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggOWNhNTlmYjc5MDNmNDc5NzkwNTg1ZDA4
MTNlNjA5MTkzZmQwZDY2Yi4uOGUyMTc4ZTNmNjU5NzhhOWMxYWVhZTlhNDU1ZjYyOWJmMTRjYWYw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaApAQCAtNTYsOSArNTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwo
Q2FsbERhdGEmKSA9IDA7CisgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwogCisgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHZ0
YWJsZUFuY2hvcigpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCmluZGV4IDc5YTAxNDQ3NGVkMDAxNDc1MDE5YjBhOTgwODcyNTY3ODFiNzNiNjIuLjdk
ZWVlZTYzN2U5M2YyODdhYzkwMmIwM2U5YjQzMGVlNjAxMDMwODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtNTQsMTEgKzU0LDYgQEAgY29uc3QgSlNPYmpl
Y3QqIEpTQ2VsbDo6Z2V0T2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gaXNPYmplY3QoKSA/IHN0
YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcykgOiAwOwogfQogCi1DYWxsVHlwZSBKU0Nl
bGw6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJu
IGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgSlNDZWxsOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpCiB7CiAgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggY2NjMWU5OTBlOGI4YmVm
NGM1OWI4ODFiYTViZWJmMjk2ZmM0OGJlZi4uZGIyOTMxZmZkNWMyOWNiOTk0MWQxODIxMmQyN2U2
Y2ZmMmIzNmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTcz
LDcgKzczLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3Qo
KTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRP
YmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAg
ICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwogCkBAIC0xMzUsNyArMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwotCisgICAgCiAg
ICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywg
c3RydWN0dXJlKQogICAgIHsKQEAgLTIyOCwxMyArMjI3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRPYmplY3QoKSA6IDA7CiAgICAg
fQogCi0gICAgaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFsdWUgdmFsdWUsIENhbGxE
YXRhJiBjYWxsRGF0YSkKLSAgICB7Ci0gICAgICAgIENhbGxUeXBlIHJlc3VsdCA9IHZhbHVlLmlz
Q2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkgOiBD
YWxsVHlwZU5vbmU7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQ2FsbFR5cGVOb25lIHx8IHZh
bHVlLmlzVmFsaWRDYWxsZWUoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAg
ICAgaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU1ZhbHVlIHZhbHVlLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogICAgIHsKICAgICAgICAgQ29uc3RydWN0VHlw
ZSByZXN1bHQgPSB2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5nZXRDb25zdHJ1Y3RE
YXRhKGNvbnN0cnVjdERhdGEpIDogQ29uc3RydWN0VHlwZU5vbmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGZiZWRkZWQ4MWMyOTI4YWI1ZTBm
MjU0ZmQxM2UwMTc1NDcwMzkxM2MuLjYyMDkwMmQ2ZmZiNGI1NGYyMzRkMTQxMGVjNjkzNDE4MGU0
NjQxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CkBAIC0xNjQsMTEgKzE2NCw2IEBAIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKIH0KIAotQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0
Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2Fs
bERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBKU0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDkxYzNjY2ZkOTUyNGMyYzlj
ZDM1MDg1M2I2MDY1MmJiMmUxMGZhYWIuLmU1ZmE3YTMxMDMxNmE1NzlkY2YxM2VkNjNlZmI5NWJl
YTBkYjUzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
QEAgLTEwOSw3ICsxMDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gbmF0aXZlQ29uc3RydWN0b3IoKTsKIAogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgICAgIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IG9mZnNldE9mU2NvcGVDaGFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzE2OTFjM2M0NGNhODYwY2IxOGFm
NjE4MGU5N2NiNGQ0MjllODdmNC4uODczOTMyZTNjZWJmYzIzYzlkMjhmNjQ4NDZjMTM3Yjg4NmZj
MDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJF
cnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKQEAgLTE5
MSw2ICsxOTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtLCAwLCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwogICAgIG1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9zdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1
bmN0aW9uID0gMDsKICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBtX2Z1
bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywgJmNhbGxG
dW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwpAQCAtMzU5LDYgKzM2MSw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwog
CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheSkgewogICAgICAgICAvLyBPdXRz
aWRlIHRoZSBleGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUg
dG9ybiBvZmYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCAxNTE5YzM2NzEzNzU4OGQxNWRkY2JlMDJjYjc1ODhmMzk3MTdkZWQ0Li4wZmI0
MjFiNWFlYWYxMDFhYzYzMzUxZjFjYzg4YzFhZjQwYmVhYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTExOSw2ICsxMTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBT
dHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaW5nT2JqZWN0
U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlOwogCiAgICAgICAgIERlYnVnZ2VyKiBtX2Rl
YnVnZ2VyOwogCkBAIC0yMzYsNiArMjM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNp
emVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9m
ZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVj
dHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSog
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGY0ZThiOGUxMGM5NzM1OTY2MDM3NTE3MDRmZjJjZjM4
YTFmOWMyYzQuLmQ0ZGNhNjFhNjFiYmFjMDE5MjZjNTkzZWE3MzRjODM2MjNiMmU1NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
TG9jYWw8VW5rbm93bj4mIHJlcGxhY2VyLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9yZXBsYWNlckNhbGxUeXBlID0gbV9yZXBsYWNlci5hc09iamVjdCgpLT5nZXRDYWxs
RGF0YVZpcnR1YWwobV9yZXBsYWNlckNhbGxEYXRhKTsKKyAgICBtX3JlcGxhY2VyQ2FsbFR5cGUg
PSBtX3JlcGxhY2VyLmFzT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fcmVw
bGFjZXIuYXNPYmplY3QoKS5nZXQoKSwgbV9yZXBsYWNlckNhbGxEYXRhKTsKIH0KIAogTG9jYWw8
VW5rbm93bj4gU3RyaW5naWZpZXI6OnN0cmluZ2lmeShIYW5kbGU8VW5rbm93bj4gdmFsdWUpCkBA
IC0zMzYsNyArMzM2LDcgQEAgaW5saW5lIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU1Zh
bHVlIHZhbHVlLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkMKIAogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdCh0b0pTT05GdW5jdGlvbik7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPmdldENhbGxEYXRhVmlydHVhbChj
YWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIApAQCAtNDAwLDcgKzQwMCw3IEBAIFN0
cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVk
VmFsdWUoVVN0cmluZ0J1aWxkZXImCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZh
bHVlKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChvYmplY3QtPmdldENhbGxE
YXRhVmlydHVhbChjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgaWYgKG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVO
b25lKSB7CiAgICAgICAgIGlmIChob2xkZXItPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKSB7
CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ2lmeVN1Y2NlZWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCA0YmE2ZjhhNmVhMGYwZmUwYTQ3MDQ3ZmJiZWQ0M2E5MGNkMjQ4Njg3Li5h
MGFmNzMwNWI0MDNhNzlhZGY2ODg0OGYyNzgwMzAwYTUyMjNjNmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBzZXR0ZXJGdW5jLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOwor
ICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyRnVuYy0+bWV0aG9kVGFi
bGUoKS0+Z2V0Q2FsbERhdGEoc2V0dGVyRnVuYywgY2FsbERhdGEpOwogICAgICAgICAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQo
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAz
MDk2MWQ2YWZiNjIyMTI0NDNlMjRmMWQyMDQ2NWRjNjVhY2E5YjdmLi44ZDI2NTViNzc0Y2I0OWQz
ZTRlNmI3ZWI1YTIyZThiYTUwYWVlM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTQwNyw2ICs0MDcsMTMgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlKTsKIH0KIAoraW5s
aW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBDYWxsVHlwZSByZXN1bHQgPSB2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YSh2YWx1ZS5hc0NlbGwoKSwgY2FsbERhdGEp
IDogQ2FsbFR5cGVOb25lOworICAgIEFTU0VSVChyZXN1bHQgPT0gQ2FsbFR5cGVOb25lIHx8IHZh
bHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogaW5saW5lIFN0
cnVjdHVyZSogY3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsK
ICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjJlNmJjY2Y3MTA4
M2ZmMjRmM2FkNTU5NjhkZjlmOWJjOWI1OTlkZS4uMjdiZTU0MTMxMzJiNTMzZmQ1Mzc0YzM3YWI0
M2NlNjUxMGMzYjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTY5LDExICs2OSw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQogCi1DYWxsVHlw
ZSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNh
bGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0K
IENhbGxUeXBlIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA2N2Y1MjhkMGFlNzJlM2Y5
YjEzNjE3MGIzMzZlMjg0NWVkYmE4YTczLi41YmQ5ZTYwZjg0YTFlZWJjNjY0YmJiYmNlZjZlODZl
NTMxOGYwNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC02OSw3ICs2OSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxs
RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmNhMDIyYjE0ZjkwNzVjOWUyMzIyNDNhMTM0ODQwNjMw
NzQyYzA5OC4uNzM4MDlkOTI4YTI0NjIxOTE5Y2I3MzEwYWRjOGNiMTgwNWZkZmU1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cApAQCAtMTI3LDExICsxMjcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpOwogfQogCi1DYWxsVHlwZSBOdW1iZXJDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1
cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBOdW1iZXJDb25z
dHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAg
IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxOdW1iZXJDb25zdHJ1Y3RvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCmluZGV4
IDhhZWE2OTA3YTMyNmViYTA1MzVlZjMxYWEyNGRiMGEwNmU3ZWNkZTIuLjliOTEwMGUzMWIxMGQ5
MmZjNTE1OTM4NDdlYTBhNDQyZDRhN2M3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaApAQCAtNTgsNyArNTgsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAxYTM5
YzE4OWRjN2JjMjc2NTVlNzk4OTg0MzYzMTQ3OTQxMzRhNTNlLi5hNzQzMGZlZGFkYzE2MWQ3Y2Y0
YjQ2MzUwNTQzMTYzMzMwNTcyMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMjYsMTEgKzEyNiw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3Qo
ZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCks
IGFyZ3MpKTsKIH0KIAotQ2FsbFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhVmly
dHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMs
IGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjYWxsT2JqZWN0Q29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBkZGYzY2FmNGM0MTFjMmJhODBh
ODYyZGZlMDcxYTJkN2RhMzAwOTU3Li41NDc1NzNjMTIyZmNjNjQ0ZWVhYjZmZmU1MmI0N2MyZWRh
NzMyMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmgKQEAgLTU1LDcgKzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwCmluZGV4IDUyZjRlOWQ2NThmYzRiZjhlZDU2YjdhY2UxOWMxYzhkY2JiMGVk
MmYuLmJmZmQ5ZmZlMWI1MTAzMDhhNDI1ZDJiNWFlMTFhNDRiZDIwZmNkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC03NCw3ICs3NCw4IEBA
IEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgdikKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKGNhbGxGcmFtZSwgInVuZGVmaW5lZCIpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEp
ICE9IENhbGxUeXBlTm9uZSkKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYp
OworICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3Qs
IGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9uIik7CiAgICAgfQogICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAib2JqZWN0Iik7CkBAIC05Miw3ICs5Myw4IEBAIGJv
b2wganNJc09iamVjdFR5cGUoSlNWYWx1ZSB2KQogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIGlm
IChhc09iamVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5v
bmUpCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKKyAgICAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0g
Q2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEwMiw3ICsxMDQsOCBAQCBib29sIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1
ZSB2KQogewogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgICAgIGlmIChhc09iamVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRh
KSAhPSBDYWxsVHlwZU5vbmUpCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2
KTsKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0
LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuY3BwCmluZGV4IDFhODZlZTMzN2M0ZGQwYjFkM2FkZjQ2Yjk2YWU4MWNm
MGZkMmFkYmQuLmVkYWJkN2E2ZWRlZmI5ZTYzODU3Yjc3Y2E2ZGU3NDQ1ZTgzYTA5YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcApAQCAtMzMs
NyArMzMsNyBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CiAKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fZGF0YS5nZXR0ZXJG
dW5jLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gbV9kYXRhLmdldHRlckZ1bmMtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fZGF0YS5n
ZXR0ZXJGdW5jLCBjYWxsRGF0YSk7CiAgICAgCiAgICAgLy8gT25seSBvYmplY3RzIGNhbiBoYXZl
IGFjY2Vzc29yIHByb3BlcnRpZXMuCiAgICAgLy8gSWYgdGhlIGJhc2UgaXMgV2ViQ29yZSdzIGds
b2JhbCBvYmplY3QgdGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGQwZWE5YTEwZGRlMjJjZWRkZDdjODJhMWNmYmU2MGQ3NWRjNjczMDguLjcxYjUwYzlmM2I3
OWZiYzljNDJkNGIwNmNlNTI5NGMxYzI4ZDI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1NywxMSArMzU3LDYg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dFJlZ0V4cChleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxP
YmplY3QoKSwgYXJncykpOwogfQogCi1DYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERh
dGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxSZWdFeHBDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4IGRlZTQ4NDQ1MWQ1
OGY5ZjM0MzFkZWZiOWU4NWVkNTUyMWRjZDMyYjIuLjgyYTZlZWE2MWE4M2E2N2RiZmEwNWUyOGZi
YzQzNWI4ODQ1ZWZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuaApAQCAtOTgsNyArOTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFW
aXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgICAgIE93blB0cjxSZWdFeHBDb25zdHJ1Y3RvclBy
aXZhdGU+IGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggYzEzN2NjYjFkNzNhMDc1ZGU2ODYzYWRiYmRhNDMyNTYwNGUz
NzM1ZS4uNDNjYTcwMWJhNWQxZDIxMjUxZmRhZTIzNTMzMDk0Mjc2YmQ5MDA0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApA
QCAtMTA5LDExICsxMDksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykp
KTsKIH0KIAotQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxE
YXRhKTsKLX0KLQogQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsU3RyaW5nQ29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAppbmRleCA3MDBkZWFiNWY3ZWM4ODU3YjRmMzU2MmIx
MjQzZGQxMGE5ZTIzMTM1Li45YzE0YjkzOWZkZDE4MGM0Yzk1NWI2ODE2MjE5YjYzODdlMDUzNmEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmgKQEAgLTUyLDcgKzUyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cmluZ0Nv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RyaW5nUHJvdG90eXBlKik7CiAgICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICAg
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCmluZGV4IGNkMTkxZGM5ZjExNGMwMDNiNmJlZjBjYjkzYjBmYzVmYzA0YTgy
NjguLjI0Yzg3OGFjZDZiY2IzMmIxZjVjMTFhZjYxMTNiYWQ5M2ZlNjJjNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC00OSw4ICs0OSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwogICAgIGNsYXNzIFNsb3RWaXNp
dG9yOwogCi0gICAgc3RydWN0IENsYXNzSW5mbzsKLQogICAgIGVudW0gRW51bWVyYXRpb25Nb2Rl
IHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKICAgICAgICAgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcwpAQCAtMzA1LDcgKzMwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhT
dHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0OwogICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+
b2Zmc2V0IDogbm90Rm91bmQ7CiAgICAgfQotCisgICAgCiAgICAgaW5saW5lIGJvb2wgSlNDZWxs
Ojppc09iamVjdCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlz
T2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCA1MmVkMTJhZTY5N2NjY2JlNjY0
ZDI5NTkxNzM5NGM0ZWExOGMyMmQyLi4xZmFkOTJmMzgwYmQ1ZmM4N2RmZTJlNWViOWU5MzczYzQ0
YzM0NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0x
MC0wNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwg
bWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBl
eHBsaWNpdCBsb29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLgorCisgICAgICAgICogSlNWYWx1ZVdy
YXBwZXIuY3BwOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9u
KToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1w
Lmg6CisKIDIwMTEtMTAtMDUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBleHBsaWNpdCBKU0dsb2JhbFRoaXMgdHlwZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IDI3NjgzYmYwODZlOTk4ZjY0MGNk
ZWUwODJiY2Q4NTgyNDJiNDM2ODYuLmRjN2VlM2Y5YjM5ODdiZmIxNTMzNTI5NzFlNGVjMTMwMGQx
ODlhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcApAQCAtMTY0
LDcgKzE2NCw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENhbGxGdW5j
dGlvbih2b2lkICpkYXRhLCBKU09iamVjdFJlZiB0aGlzT2JqCiAgICAgICAgIH0KIAogICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmpWYWx1
ZS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBvYmpWYWx1ZS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqVmFsdWUsIGNhbGxE
YXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICBKU1ZhbHVlICByZXN1bHRWYWx1ZSA9IGNhbGwoZXhlYywgb2Jq
VmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwga3NqVGhpc09iaiwgbGlzdEFyZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4IDYzMjU5OTRmMWUxY2Y5YzIwOTBm
ZDgyZjZhMDIzYzk1YjQwMTJkMmEuLjVmYmI1MGU3MThiNjYyYzcwOTRlNGU3MDRhMGNlZmRjN2U1
ZTczZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTQ2LDEx
ICs0Niw2IEBAIFVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCkKICAgICAgICAgZkpTVXNl
ck9iamVjdC0+UmVsZWFzZSgpOwogfQogCi1DYWxsVHlwZSBVc2VyT2JqZWN0SW1wOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJ
bXAqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0ph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCAyZDU2ZDRhMDlkNzY2ZDc0N2VjNzU1
MzU5ZDIxMDU1NTAxZmExMjhlLi5jODkyNzJiYWJhZGNkNGU5MWI1MDYyNWFjMjJlMzlkYzZjMmZi
YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTQ5LDcgKzQ5LDYg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGZiZjVjODkzYTg2NDU4NmQ2ZmU1MjlmZTY3YjBjNjQ4NDgyNmJiZWEuLmY4NDI1
MmFjZDg5NGEwM2ZhY2FkYjhlYjUxYmMwNmQzOTc1ZWZkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAxMS0xMC0wNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChP
T1BTISkKKworICAgICAgICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcyBh
bmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBleHBsaWNpdCBs
b29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxl
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVP
YmplY3RHZXRDYWxsRGF0YSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
OgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6aXNKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9y
dW50aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0Lmg6CisKIDIwMTEtMTAtMDUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBleHBsaWNpdCBKU0dsb2JhbFRoaXMgdHlwZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggM2VmYzQyYzBmMzRjNDQ5NzQ1YjcxMDE0YWU3Mjc4MzMyN2MyZmQw
Ni4uMjA5YWUzNjU1ZGU1NDZmOWVjZWJhNmY0ZjY5OWY4NzYyOWQ1OThjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTE2ODEsNyArMTY4MSw2IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9y
aWVudGF0aW9uQ2hhbmdlRXZlbnRFaQogI2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKQogX19a
TjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERh
dGFFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9i
YWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldENh
bGxEYXRhVmlydHVhbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVz
Y3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKQEAgLTE2OTEsNyArMTY5
MCw2IEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQTlNf
NkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNK
U0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGZpbmlzaENyZWF0aW9uRVBOU18xNEpTR2xvYmFs
T2JqZWN0RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNmdldENvbnN0cnVjdERh
dGFFUk5TXzEzQ29uc3RydWN0RGF0YUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MThnZXRDYWxsRGF0YVZpcnR1YWxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAppbmRleCAwYjI3MDA4MDdkYjFjMTdkOTRmZTZm
ZDlhZDE3ZGRkMjQ0ODBmYzBkLi5hODhiZDY0ZGM2MTEyMTdhODQxNjk4NzFjMWNmNDNlYTk0Yzlj
MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNr
KE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBib29sKiByYWlzZWRFCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwg
Y2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAg
Y2FsbFR5cGUgPSBjYWxsYmFjaygpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAg
ICAgICBjYWxsVHlwZSA9IGNhbGxiYWNrKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNh
bGxiYWNrKCksIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9u
ZSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIGZ1bmN0aW9uID0gY2Fs
bGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCAwNjJiYmEwZjc5ZmFlNTMzMDU5Y2UxOWQ5OWI1YWNi
OGNlM2RlZDBhLi45MzA5OTk3NDdjYTFlMmFmMTI1ODBjODU3OWJmOWExODc3NTM0ZjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAg
IGNhbGxUeXBlID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRh
KTsKKyAgICAgICAgY2FsbFR5cGUgPSBtX2N1c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShtX2N1c3RvbVJlc29sdmVyLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGFjdHVh
bCBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTC4KICAgICAgICAgICAgIG1fZ2xvYmFsT2JqZWN0
LT5pbXBsKCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZl
IGEgbG9va3VwTmFtZXNwYWNlVVJJIG1ldGhvZC4iLCAwLCBTdHJpbmcoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKaW5kZXggYTc0MjEwYTcyOGI5
YjdlYWIyOTNmZWEwNWVjNjg4OWI3NjFkYjFiZC4uNzZhNWQ3MTdiY2NlNWExNDUxMTllZjYwZDY2
M2IyMTgxN2MwZTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
cnJvckhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRD
YWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5j
dGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwog
CiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewogICAgICAgICBSZWZQdHI8SlNF
cnJvckhhbmRsZXI+IHByb3RlY3RlZGN0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBkYTUyMDAzZjY5NjQ0YTYyZGEwMWNj
NWQ1ZDZhYTc4NWMxZmE2NzcxLi5hOTc5ZTA4ZjMyMjYzNDZiMTMyOWNhNjA1MzkxNTI0MmFmNmJh
NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEp
OwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgaGFuZGxlRXZl
bnRGdW5jdGlvbiA9IEpTVmFsdWUoKTsKLSAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5n
ZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICBjYWxsVHlwZSA9IGpzRnVuY3Rp
b24tPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICB9CiAKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CmluZGV4IDcwZWI2ZTE3NWVmMzk4MTRjNmU4YWJjYjIwZDUzN2FmZjM1ZGZjNzQuLmRmN2I0MmM3
MGY4ZjMyOGQ5ZDA3ZDVmMDI1NmU2Mzc2OTlhZTQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC05
OSwxMSArOTksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRN
TEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBlIEpTSFRNTEFsbENvbGxlY3Rpb246Omdl
dENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENh
bGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxIVE1MQWxsQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggODBkNTk0ZWY1ODg5NGM1NmRjMTdkYjg0MzU3MGNiZGJhMTdmNDdhNS4uMzBlMTU3
ODEzN2NjY2QyNjAxYmI0OTQ5MWY5YjEzZjczMWY5MjY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAg
LTQ4LDExICs0OCw2IEBAIGJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0CiAgICAgcmV0dXJuIHJ1bnRp
bWVPYmplY3RDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7
CiB9CiAKLUNhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxE
YXRhKTsKLX0KLQogQ2FsbFR5cGUgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmpl
Y3RHZXRDYWxsRGF0YShzdGF0aWNfY2FzdDxKU0hUTUxBcHBsZXRFbGVtZW50Kj4oY2VsbCksIGNh
bGxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bWJlZEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDVjNGI3MGExYTEyYTI2ZGFjZjQxYTA2OGQ0YjU1
MmJhYWVmZTY1ZGUuLjViNWM0MTEyYjZkNjg0OTExZTgyMDhiY2YzNWZlYTU5YTA1YTI1ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVt
ZW50Q3VzdG9tLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkK
ICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCB0aGlzLCBzbG90KTsKIH0KIAotQ2FsbFR5cGUgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRD
YWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxs
RGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTSFRNTEVtYmVkRWxlbWVudDo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgcmV0
dXJuIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0YShzdGF0aWNfY2FzdDxKU0hUTUxFbWJlZEVsZW1l
bnQqPihjZWxsKSwgY2FsbERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3YjM5MGUzNWQ2NTRl
NTc3YzcwOTQ0ZTZiODZlNmM4NTdmMDg4ZTQzLi5hZmJlZTBlYmI5MzlmYWVmMGQ3Mzk5ZGQ5Mzhk
MjA2ZjMxZjNkN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgYm9vbCBK
U0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnQKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKIH0KIAotQ2FsbFR5cGUgSlNIVE1M
T2JqZWN0RWxlbWVudDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsK
LSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBK
U0hUTUxPYmplY3RFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEdldENhbGxEYXRhKHN0YXRpY19j
YXN0PEpTSFRNTE9iamVjdEVsZW1lbnQqPihjZWxsKSwgY2FsbERhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCmluZGV4IDAzMWJjMjEyZDYxYzM1MTYzZmQzNGYxZGQzNDBiMzA0ZWNlMmUxNjkuLjhjMmMx
M2U3YmExMTY5M2M1MDZmMGEwOTRlZmZlMTFjNjRlMjdkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uID0g
Z2xvYmFsT2JqZWN0LT5ldmFsRnVuY3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGV2YWxGdW5jdGlvbi0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGV2YWxGdW5jdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Z2V0Q2FsbERhdGEoZXZhbEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDE0N2JjMzg2ZTIz
YmE5NzA5MTMwNGYyMDM1ZmVlODY3MzgxMzA1N2UuLmEzM2E1Zjg1M2M2OTgwMzI5NzM0ZjA0OTNk
OTA1Y2YzYjZkNTBiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIENhbGxU
eXBlIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBDYWxs
RGF0YSYgY2FsbERhdGEpCiAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5T
Y3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoZWxlbWVudCkpIHsKICAgICAgICAgQ2FsbERh
dGEgc2NyaXB0T2JqZWN0Q2FsbERhdGE7CiAgICAgICAgIAotICAgICAgICBpZiAoc2NyaXB0T2Jq
ZWN0LT5nZXRDYWxsRGF0YVZpcnR1YWwoc2NyaXB0T2JqZWN0Q2FsbERhdGEpID09IENhbGxUeXBl
Tm9uZSkKKyAgICAgICAgaWYgKHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERh
dGEoc2NyaXB0T2JqZWN0LCBzY3JpcHRPYmplY3RDYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKIAogICAgICAgICBjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjYWxsUGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxYzg3NjBmMmQ1M2U2NGY4NzU5NjYy
ZmMwMjUwOTkxNzVmZGFkYzkyLi5lZDViYWY1OTQ3ZGIxMGEwOWYwMGMwMjIxOTA3NDUxMTBmMzgw
NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtODE1LDcgKzgxNSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNo
RXZlbnRIYW5kbGVyU2NvcGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikg
Y29uc3Q7XG5cbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1
c2hFdmVudEhhbmRsZXJTY29wZSJ9OwogCiAgICAgIyBDdXN0b20gY2FsbCBmdW5jdGlvbnMKLSAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxs
RGF0YVZpcnR1YWwoSlNDOjpDYWxsRGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn07CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2Fs
bERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
Q2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJvcGVydHkgZnVuY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggYzFhZGViM2UwOGMzZDFhNGRh
MzNiMjAyMjQ1MTRmYzQzMjZjMWIxZC4uMDllYzEwYTdiMmRiM2QzNTgxNTJkZjMzMjRmYTYwZmZm
NzZkMDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAg
LTEyNiw3ICsxMjYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2Y3ZjIyZThhN2Q1YWU5
NzlkNGZkMWQ5NzliMDk2YWI3MmFhNDkyOS4uZWQyODRmMjNjYzgzOGMyMzI2MzM5YWEyOWI0MjI1
MTEwNGRlN2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjU1LDExICsyNTUsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIE9iamNGYWxsYmFja09iamVjdElt
cDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4g
Z2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQog
ewogICAgIE9iamNGYWxsYmFja09iamVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE9i
amNGYWxsYmFja09iamVjdEltcCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuY3BwCmluZGV4IGQ5NjVlOTRlM2QzMTRlZjg3ODRjMGFmOWE5MmEzYjU5ZGE5MWY2MjMu
LmZkMDZhMTNlZjQ5MTEyMTI4ODhmMDVhYjNmNjQ5MjRhYmIwNzAyOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTE0ODgsMTEgKzE0ODgsNiBAQCBFbmNvZGVk
SlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1DYWxsVHlwZSBRdFJ1
bnRpbWVNZXRhTWV0aG9kOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQot
ewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBl
IFF0UnVudGltZU1ldGFNZXRob2Q6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxs
RGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsOwpAQCAtMTYyNCw3
ICsxNjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y2Fs
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID09IDEpIHsKICAgICAgICAgICAgICAgICBmdW5jT2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCku
dG9PYmplY3QoZXhlYyk7CiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
ICAgICAgICAgICAgaWYgKGZ1bmNPYmplY3QtPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkg
PT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENhbGxEYXRhKGZ1bmNPYmplY3QsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5v
bmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGQtPm1faXNDb25uZWN0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlF0TWV0YU1ldGhvZC5jb25uZWN0OiB0YXJnZXQgaXMgbm90IGEgZnVuY3Rpb24iKSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTE2MzcsNyArMTYzMiw3IEBAIEVuY29kZWRK
U1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGFjdHVhbCBmdW5jdGlvbiB0byBjYWxsCiAg
ICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICphc09iaiA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFzT2JqLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEp
ICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXNPYmotPm1ldGhv
ZFRhYmxlKCktPmdldENhbGxEYXRhKGFzT2JqLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB2ZXJzaW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jT2JqZWN0ID0gYXNPYmo7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xNjUwLDcgKzE2NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIGZ1bmNJZGVudCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogYXNGdW5jT2JqID0gdmFsLnRvT2JqZWN0KGV4
ZWMpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXNGdW5jT2JqLT5nZXRDYWxsRGF0
YVZpcnR1YWwoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGFzRnVuY09iai0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoYXNGdW5jT2Jq
LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY09iamVjdCA9IGFzRnVuY09iajsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQtPm1faXNDb25uZWN0KQpAQCAt
MTczNCwxMSArMTcyOSw2IEBAIEVuY29kZWRKU1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6Omdl
dENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENh
bGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAg
IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGw7CkBAIC0xODYyLDcgKzE4NTIsOCBAQCBp
bnQgUXRDb25uZWN0aW9uT2JqZWN0OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBfYywg
aW50IF9pZCwgdm9pZCAqKl9hKQogc3RhdGljIGJvb2wgaXNKYXZhU2NyaXB0RnVuY3Rpb24oSlNP
YmplY3RSZWYgb2JqZWN0KQogewogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIHJldHVybiB0
b0pTKG9iamVjdCktPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkgPT0gQ2FsbFR5cGVKUzsK
KyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgcmV0dXJuIGpzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShqc09iamVjdCwgY2FsbERhdGEpID09IENh
bGxUeXBlSlM7CiB9CiAKIHZvaWQgUXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQqKiBh
cmd2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggYWVjMTFjYTZkODE1
YTIzOWVhYmUwNzg3NDZiMWQ5YmI5YmMyZDE1NC4uMzZjZDA3ZmRmMDNmMjM3OTcyMzU0MGZiOWZi
Zjc4MmM1NTdhNjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0x
NjksNiArMTY5LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
ID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgCisgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTE3OSw3ICsxODYsNiBAQCBwcml2YXRlOgogICAgIFF0
UnVudGltZU1ldGFNZXRob2QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYg
c2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSk7CiAKLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKiBleGVjKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpAQCAtMjA2
LDYgKzIxMiwxMyBAQCBwdWJsaWM6CiAgCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKKyAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCAgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsK
KyAgICB9CisKIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSog
ZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2REYXRhKj4oZF9wdHIpO30KIApAQCAtMjEzLDcgKzIyNiw2IEBAIHByaXZhdGU6CiAg
ICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25z
dCBJZGVudGlmaWVyJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGlu
dCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKTsKIAotICAgIHZpcnR1YWwgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqIGV4ZWMpOwogICAgIHN0YXRpYyBKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAwZTU1YzE2NGNi
NGQ3MmViNTczNjliYjk2ZWY4ZTEyN2UzMGE3ZTU4Li4wN2I0MTdkNGM5MjQ2MjE2ODZmYTM0MmJj
NTZmY2UxNjMzMjBiY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5j
cHAKQEAgLTEyMywxMSArMTIzLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIAotQ2FsbFR5cGUgUnVudGltZU1ldGhvZDo6Z2V0Q2FsbERh
dGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEo
dGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBSdW50aW1lTWV0aG9kOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbFJ1bnRpbWVNZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5oCmluZGV4IDM1NGFjZjg4NmEwYzMyZWQ5ZDc2MGI1MjdlZmU1YTQwZTdkOTFmMTIuLmYw
NzRmNTgxMjE2NjIwM2ZjMTkyNzg3NTE0MWZjMDY1MDFlNmYzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oCkBAIC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICBS
dW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhv
ZExpc3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElk
ZW50aWZpZXImKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVG
bGFnczsKLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYp
OwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXgg
ZGYxMWZlYjZjYTk4ZWFjOTIyYThhMGYzNmMzYjA3OWQzZGM1Y2Y1ZS4uNzMzNzliZjc2Mzk0YmQ0
YzhkZmU2ZjFkOGQwODVhNWI3YjU2NTU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCkBAIC0yNTksMTEgKzI1OSw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIFJ1bnRpbWVPYmplY3Q6
OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdl
dENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgUnVudGltZU9iamVjdDo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgUnVu
dGltZU9iamVjdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggMWFjMjFhZDQ4ZjI4
MzdjOTYwMDhhZTM1MDgxZmMwYzAzOTNhNjFhMy4uOTMzNGM1OTU5OTliN2I5MjlkMzQ2Yzg4ODQ3
NmUyMzUzM2ZkY2MwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAg
LTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgdmlydHVhbCBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggYTVmMDZlOWEyNmZjOTg3YzIwMjUwZWRlNTVhNmU1ZmNmZDVkNmMyNC4uYjU3MGRhNTg3
Yjg2Y2UwZjBjM2JlZDU1YTRjNTBlNGY0OTFhZWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTEwLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYWxsIGdl
dENhbGxEYXRhVmlydHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNpdGVzIAor
ICAgICAgICB3aXRoIGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCisKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVs
dCk6CisKIDIwMTEtMTAtMDMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhbiBvcHRpb24gdG8gc3VwcHJlc3MgcmVuZGVyaW5nIHVudGlsIHRoZSBkb2N1bWVu
dCdzIGxvYWQgZXZlbnQgZmlyZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXgg
MWZmNmMxNDc2NGNkNzE5OGE2NjI2M2ZlNjQwOGQ2OWFlNDU5NGVhMC4uODBhZDE5Mzg3NzEyYWYy
NWY4Mjc5MDcwOTE4OGMwOTZjYmM4NTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQpAQCAtOTQ0LDcgKzk0NCw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpp
bnZva2VEZWZhdWx0KHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lCiAgICAgRXhlY1N0
YXRlKiBleGVjID0gZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkt
Pmdsb2JhbEV4ZWMoKTsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOyAg
ICAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVj
dC0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSk7CiAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNmY0N2EyZGJiMWJjMmY3NGMwNDMyYTBkMmQ1ZmQzY2RhMDY1NTk3Mi4u
M2MxM2E4NjI3N2ExY2RiZWU2OGQ4Y2Q3N2JiMjI1ZWExYjkxNGQxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDExLTEwLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYWxs
IGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNpdGVz
IAorICAgICAgICB3aXRoIGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKwogMjAxMS0xMC0w
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQWRkIGVzdGltYXRlZC1wcm9ncmVzcyBwcm9wZXJ0eSB0byBXZWJLaXRXZWJMb2FkZXJD
bGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QTWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBmYTg4ZmU1ZTBjOGUwMTU0ZmM1NmFiMTFhODgz
YWI2YmRlMzA4OWIxLi5kM2QxMDBhODQ5NWRkMGM5MzJlM2NiODJmZWZlMzdkNWU3MDRiNWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuY3BwCkBAIC03NywxMSArNzcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKIH0KIAotQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERh
dGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBKU05QTWV0aG9kOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbE1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCmluZGV4IGE4ZmI2MjdmNWY3NzA5NGI1
N2Y5OTY1MmI4NTNjYWIxY2ZkZmM0ZTAuLmZmMDk2MWMzODExNjEwNDFjOTg5ZWI2ZTk3NTc1YzZm
OWE2MGJlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QTWV0aG9kLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaApAQCAtNjIsNyArNjIsNiBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgJnNfaW5mbyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBKU0M6OkNhbGxUeXBlIGdldENh
bGxEYXRhVmlydHVhbChKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAgCiAgICAgTlBJ
ZGVudGlmaWVyIG1fbnBJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGFlOWI5ZTg0
NWEyYzEyZjAwOWZkYTY3YmJmODU1MDhiNzRjM2QxZDAuLjRhZmY5NmI2YTA1OGZjZGQ3NDc3OWE2
Zjk0Mjc1NTAzMDZlYzExZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTIxNywxMSArMjE3LDYg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5QSlNPYmplY3QoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RhdGljX2Nhc3Q8SlNO
UE9iamVjdCo+KG9iamVjdCktPmNhbGxPYmplY3QoZXhlYykpOwogfQogCi1DYWxsVHlwZSBKU05Q
T2JqZWN0OjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJl
dHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIEpTQzo6Q2FsbFR5cGUgSlNO
UE9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6Q2FsbERhdGEmIGNh
bGxEYXRhKQogewogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU05Q
T2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCAyNjRhNjM1YzAxNWY0OTYxODcyNjY3
OGZiMWIzZmU3MTNlZmI5ZjM1Li45YWFhMmQ0Yjk5OWRmMzczZTIwZWMwMThlZjdkZGJmMjVhYjE4
YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTc5LDcgKzc5LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0
YVZpcnR1YWwoSlNDOjpDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENh
bGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpOwogICAgIHZpcnR1YWwgSlNDOjpD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110065</attachid>
            <date>2011-10-06 17:24:51 -0700</date>
            <delta_ts>2011-10-10 12:37:17 -0700</delta_ts>
            <desc>Fix qt</desc>
            <filename>bug-69186-20111006172451.patch</filename>
            <type>text/plain</type>
            <size>82635</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCBmYzA3NGZlNTFjNGE3MWQ0NjM0MWRkODcx
NGQwNTNhNzg0ZDAwOTM2Li5hZDAyZjE5ZTZjZTJmNGE0NDk0NmNlYWU0ZTBlNWVlNjA3YzE4Mzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
Y3BwCkBAIC03OCwxMSArNzgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrRnVuY3Rpb246
OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCByZXN1bHQpKTsKIH0KIAotQ2FsbFR5cGUgSlNDYWxsYmFja0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAppbmRleCA3MjQ5NGRjY2NhODBkM2MwOWZiMWIwODAyOGIzMWI4M2Ey
NTJhNGY4Li42YzFiMTBlZjM0NmVlNDg3MzRhMzBjYzkzM2MxMjc4NGExYTBjNzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTU5LDcg
KzU5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHZhbHVlT2ZDYWxsYmFjayhK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBDYWxsVHlw
ZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGZlYjdkOTdjOWU0MGY3ZDMxNTQzZTA3MzBi
MjMxOTMwMGVkMWUwNTcuLmQwNGFjMDQyMmVmZDAyZDlhNWY4NmYxZmQ2ZTE4NTdiODUxZjFkNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0x
OTQsNyArMTk0LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZp
cnR1YWwoQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggZGIzODM2YjZmYTRlMTZk
NjM2ZDA2MjFhMjNmMWMzOTc1ZmQyZjNiYi4uODhlZGZlMTkzOTZiNDU0OGJlYjJkNGE2NjIzMzdh
NmFhZDUyNjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3MiwxMiArMzcyLDYgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgSlNWYWwKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLUNhbGxUeXBlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0
YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCi10ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgogQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpn
ZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBm
YTY4MmQ4ZmEyZTkwMDhjMjY4ODIwZmJlODQyOWUxZTAzNjFiOWI0Li40Y2M2NmE0ZGIzMjU0NTI2
NTQ1NmJlZDE4YTE1NTdkZWYxMWNkYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtNDE2LDcgKzQxNiw4IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2
YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmlu
CiBib29sIEpTT2JqZWN0SXNGdW5jdGlvbihKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVj
dCkKIHsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICByZXR1cm4gdG9KUyhvYmplY3QpLT5n
ZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKKyAgICBKU0NlbGwq
IGNlbGwgPSB0b0pTKG9iamVjdCk7CisgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7CiB9CiAKIEpTVmFsdWVS
ZWYgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBv
YmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC00MzUs
NyArNDM2LDcgQEAgSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICAgICAgYXJnTGlzdC5hcHBl
bmQodG9KUyhleGVjLCBhcmd1bWVudHNbaV0pKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNPYmplY3QtPmdldENhbGxEYXRhVmlydHVhbChjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0Q2FsbERhdGEoanNPYmplY3QsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGJjYTJhMjY5ZGRkZTg1MTM1ZjY2MTMxZDY2NmMwMjk3ODJlYTkxNi4uMDgyZjRmZDM0YmNk
N2JjNWU4Y2ExZTFhZmJlOGUzODBmYTJjODU4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTA1IEBACiAyMDExLTEwLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQg
YWxsIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNp
dGVzIAorICAgICAgICB3aXRoIGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUu
CisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoK
KyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAqIEFQ
SS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rpb24pOgorICAgICAg
ICAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWY6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oOgorCisgICAgICAgIE1vdmVkIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiB0byBF
cnJvci5oIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gaW5jbHVkZSAKKyAgICAgICAgdGhlIGNsYXNz
IGRlZmluaXRpb24gaW4gSlNHbG9iYWxPYmplY3QuY3BwLgorICAgICAgICAqIHJ1bnRpbWUvRXJy
b3IuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb246OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChK
U0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRocm93VHlwZUVycm9y
KToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpnZXRDYWxsRGF0
YSk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorCisgICAgICAgIFRvIGFsbG93IHN1YmNsYXNz
ZXMgb2YgSW50ZXJuYWxGdW5jdGlvbiAoZS5nLiBRdFJ1bnRpbWVNZXRob2QpIHRvIG5vdCBoYXZl
IAorICAgICAgICB0byBkZWNsYXJlIHRoZWlyIG93biBDbGFzc0luZm8gaWYgdGhleSBkb24ndCBv
dmVycmlkZSBnZXRDYWxsRGF0YSwgcHJvdmlkZWQgCisgICAgICAgIGFuIGltcGxlbWVudGF0aW9u
IHRoYXQgY2FsbHMgQVNTRVJUX05PVF9SRUFDSEVEIGlmIGNhbGxlZCwgcHJvdmlkaW5nIHJvdWdo
bHkgdGhlIHNhbWUgCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXMgb2YgdGhlIHB1cmUgdmlydHVh
bCBtZXRob2QgSW50ZXJuYWxGdW5jdGlvbiB1c2VkIHRvIGhhdmUuCisgICAgICAgIEFsc28gbWFk
ZSB0aGlzIG5ldyBpbXBsZW1lbnRhdGlvbiBwcm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZSBm
b3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICBBbHNvIGFkZGVkIGFuIEFTU0VSVCBpbiBJbnRl
cm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbiB0byBtYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciAK
KyAgICAgICAgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQgcHJvdmlkZXMgdGhlaXIgb3duIGltcGxl
bWVudGF0aW9uIG9mIGdldENhbGxEYXRhLiAgVGhpcyAKKyAgICAgICAganVzdCBtYWtlcyBleGVj
dXRpb24gZmFpbCBlYXJsaWVyIGluIGEgcGxhY2Ugd2hlcmUgdGhlIHNvdXJjZSBvZiB0aGUgZXJy
b3IgaXMgCisgICAgICAgIGVhc3kgdG8gdHJhY2UuICBUaGVzZSBBU1NFUlRzIGFyZSBiZXR0ZXIg
dGhhbiBwdXR0aW5nIGEgbnVsbCBpbiB0aGUgTWV0aG9kVGFibGUgYmVjYXVzZQorICAgICAgICB0
aGV5IGFwcGVhciBtdWNoIG1vcmUgaW50ZW50aW9uYWwgdG8gYW55Ym9keSB3aG8gZmFpbHMgdG8g
cHJvdmlkZSB0aGVpciBvd24gCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9yIHdobyB0cmllcyB0
byBleHBsaWNpdGx5IGNhbGwgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEuCisgICAgICAg
ICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxG
dW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9u
OjpnZXRDYWxsRGF0YSk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKworICAgICAgICBBZGRlZCBhIGdsb2JhbCBzdHJ1Y3R1cmUgdG8gSlNHbG9i
YWxPYmplY3QgZm9yIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiB0byBlbmFibGUgCisgICAg
ICAgIGl0IHRvIGJlIHJldXNlZCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBTdHJ1Y3R1cmUg
ZXZlcnkgdGltZSB3ZSBpbnN0YW50aWF0ZSBpdC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdp
Zmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAoSlND
OjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmpl
Y3RUeXBlKToKKyAgICAgICAgKEpTQzo6anNJc0Z1bmN0aW9uVHlwZSk6CisgICAgICAgICogcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmZ1bmN0
aW9uR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OmdldENh
bGxEYXRhKToKKworMjAxMS0xMC0wNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCiAgICAgICAgIFNub3cgTGVvcGFyZCBidWlsZCBmaXgKIAogICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
aW5kZXggNjY4NGIyMmVmYTI0ZTJlYTFiMWRhZDc5Y2FjYjU1OGRiZDlhY2Q3MS4uMWQyODJlYmUz
ZGEzMTAyZGYyMmE5NTJiZGM1NmY0YTBmNTBmZDQzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yNjAsNyArMjYwLDYgQEAgX19aTjNKU0M2SlNDZWxsMTFn
ZXRDYWxsRGF0YUVQUzBfUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDNkpTQ2VsbDE0ZGVsZXRlUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzZKU0NlbGwx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk4zSlNDNkpTQ2VsbDE2Z2V0Q29u
c3RydWN0RGF0YUVSTlNfMTNDb25zdHJ1Y3REYXRhRQotX19aTjNKU0M2SlNDZWxsMThnZXRDYWxs
RGF0YVZpcnR1YWxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDNkpTQ2VsbDE4Z2V0T3duUHJvcGVy
dHlTbG90RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xv
dEUKIF9fWk4zSlNDNkpTQ2VsbDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpS
TlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzZKU0NlbGwzcHV0RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXgg
NjYwNjg1ZTcyYTExZWFiNzcwYjdjMzg2MzlkNTViNDgzZTAwYjE0Zi4uZTY1YzJkYmMwYjBlN2I5
NDgxOWQ3NjRjYjU0MGJmOTE3Yjk1NjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5k
ZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTE5MCw3ICsxOTAsNiBAQCBFWFBPUlRT
CiAgICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRp
ZmllckAyQEFBSUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUlB
QVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQFdURkBAQUFJQUFQQVZKU0NlbGxAMkBAWgog
ICAgID9nZXRDYWxsRGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENh
bGxEYXRhQDJAQFoKLSAgICA/Z2V0Q2FsbERhdGFWaXJ0dWFsQEpTQ2VsbEBKU0NAQFVBRT9BVzRD
YWxsVHlwZUAyQEFBVENhbGxEYXRhQDJAQFoKICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxA
SlNDQEBVQUU/QVc0Q29uc3RydWN0VHlwZUAyQEFBVENvbnN0cnVjdERhdGFAMkBAWgogICAgID9n
ZXRPYmplY3RASlNDZWxsQEpTQ0BAUUFFUEFWSlNPYmplY3RAMkBYWgogICAgID9nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JASlNHbG9iYWxPYmplY3RASlNDQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZWI3NzQ2MzYy
MmQ0ODM3YzQwMzZjNjAzNjRlYmM5OWUyMTdmNWM3ZC4uZTAzNzA3MDc4MjI0MTk1NjhhNDk1ODM5
ZWZkODljYWI0M2Q2YmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yODI5LDcgKzI4MjksNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSog
cmVnaXN0ZXJGaQogICAgICAgICAgICAgICAgICAgICBpZiAoR2V0dGVyU2V0dGVyKiBnZXR0ZXJT
ZXR0ZXIgPSBhc0dldHRlclNldHRlcihwcm90b09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNl
dCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogZ2V0dGVy
ID0gZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXR0ZXItPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2Fs
bERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXNP
YmplY3QoYmFzZUNlbGwpLCBBcmdMaXN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7CkBAIC0yOTY0LDcgKzI5NjQsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmls
ZSogcmVnaXN0ZXJGaQogICAgICAgICAgICAgICAgIGlmIChHZXR0ZXJTZXR0ZXIqIGdldHRlclNl
dHRlciA9IGFzR2V0dGVyU2V0dGVyKGJhc2VPYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQp
LmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogZ2V0dGVyID0gZ2V0
dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRD
YWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICAgICAgICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZ2V0dGVyLCBjYWxs
RGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJh
bWUsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlT2JqZWN0LCBBcmdMaXN0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwpAQCAtMzA3Miw3ICsz
MDcyLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKGJhc2VPYmplY3Qt
PmdldERpcmVjdE9mZnNldChvZmZzZXQpLmFzQ2VsbCgpKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPmdldHRlcigpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRDYWxsRGF0YVZp
cnR1YWwoY2FsbERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxE
YXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwo
Y2FsbEZyYW1lLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZVZhbHVlLCBBcmdMaXN0
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggNGVjNDMz
MDZjNzhlMTNiYzMzYWIxOWM5NDBkZDE2MDYwYTJmZmZlZC4uYTkzMGY1ODJlMDlkYmFmNzFjNzUx
YjI1YzVjNGU3NWE3ZDBhOTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKQEAgLTE3NTIsNyArMTc1Miw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1Zh
bHVlLCBvcF9nZXRfYnlfaWRfZ2V0dGVyX3N0dWIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNPYmplY3QqIGdldHRlciA9IGFzT2JqZWN0KGdl
dHRlclNldHRlci0+Z2V0dGVyKCkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShn
ZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBn
ZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpzT2JqZWN0KCks
IEFyZ0xpc3QoKSk7CiAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVyblRvVGhyb3dUcmFtcG9saW5lKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgc3RhY2tG
cmFtZS5hcmdzWzJdLnJldHVybkFkZHJlc3MoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CkBAIC0y
MTUzLDcgKzIxNTMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9qaXRD
b21waWxlKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIEFTU0VSVChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCktPmdldENhbGxEYXRhVmly
dHVhbChjYWxsRGF0YSkgPT0gQ2FsbFR5cGVKUyk7CisgICAgQVNTRVJUKHN0YWNrRnJhbWUuY2Fs
bEZyYW1lLT5jYWxsZWUoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoc3RhY2tGcmFtZS5j
YWxsRnJhbWUtPmNhbGxlZSgpLCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVKUyk7CiAjZW5kaWYKICAg
ICAKICAgICByZXR1cm4gaml0Q29tcGlsZUZvcihzdGFja0ZyYW1lLCBDb2RlRm9yQ2FsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDQ1MzhjYjg0Mzk0ODQzNWJmYzZkN2ZiZjY5Y2RiNGFmNWM0ZDQ4YjkuLjNiYjEzMzgy
NjM2NTNmNTRiY2UzMTFhNmU5OGIwNGM1MGMyNWEyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC0xMDksMTEgKzEwOSw2
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBhcmdzKSk7CiB9CiAKLUNhbGxUeXBlIEFycmF5Q29u
c3RydWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAg
cmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgQXJyYXlD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewog
ICAgIC8vIGVxdWl2YWxlbnQgdG8gJ25ldyBBcnJheSguLi4uKScKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAppbmRleCBjNDZkY2IyMzYzMmRh
YjRmYzdiODY2ZjlhN2MwNzcwM2UzNjFlMDI2Li5mNjRiOWI2YzQ3YWRiMzY3YWM2YzM4OTIzNWM2
NjI5MmEzZmU4ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwCmluZGV4IDdjYmRlYjM2OGU2ZTdmZTI2NzdhZGVjMGU2Y2Y1MTBlZjMyNjExMjAuLmYy
YTYyZDdhZGUzMDlkNzBlNDBmYmU5ZTcxYzQxOTM4MjkzYmFjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtNzAs
MTEgKzcwLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJvb2xl
YW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7CiB9CiAKLUNh
bGxUeXBlIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBj
YWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQot
CiBDYWxsVHlwZSBCb29sZWFuQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsQm9v
bGVhbkNvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuQ29uc3RydWN0b3IuaAppbmRleCBhOTg5YzMwN2U3ZjQ1Y2RmMGQ2M2U4NmVjOThlMjAw
ZjI0OTNjYmNmLi4wZTBhM2UxNDMyN2U1NzM1YzAwZjAyODAwNTUxNWZiY2M4Mzk5MGZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
aApAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYp
OwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcAppbmRleCAzZWExNjM3ZGJkNTFjZmIxOGVmMGM3MGRmODUyODNjOGYzOWIw
OTRjLi5lMzdlNmYxMWQ2NjdiYTM3YTFmNmI1N2FhNzhlMmRiYjc4YmQ5YzYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTE3
NiwxMSArMTc2LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbERh
dGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCBkYXRlLCAiICIsIHRpbWUpKTsKIH0KIAotQ2FsbFR5cGUgRGF0
ZUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewot
ICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIERh
dGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQog
ewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxEYXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAppbmRleCAwNmRjOTRhOGI3
YjBjMzRjZjFkMDlhZDI0ODI0YTMyNzVmOWQ0YjA2Li40MWJlOTM1NDQzZWMwODExNmRmMzc0ZDQz
MGMwM2Y4ZDEyYmM5OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaApAQCAtNTIsNyArNTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cml2YXRlOgogICAgICAgICBEYXRlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29u
c3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVh
bChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwZWQ3MDc1ODkzZDE2MjRjNTBlM2E0
ZDNlNzdlMjg4OWI1ZWFiNDIyLi40YTFlMTQ4MjA1NWQ5YWNkMjc3ZTU0NTYxYjM3YmYyMTY5MTZk
NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKQEAgLTE2NSw3MSArMTY2LDE0IEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhF
cnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOwogfQogCi1jbGFzcyBTdHJpY3RNb2RlVHlwZUVy
cm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci1wcml2YXRlOgotICAgIFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAgICAgICAsIG1fbWVz
c2FnZShtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKLQotICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQotICAgIHsKLSAg
ICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2Nh
dGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7
Ci0gICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwotICAgICAg
ICByZXR1cm4gZnVuY3Rpb247Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykK
LSAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgfQotICAgIAotICAgIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQotICAgIHsKLSAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RUaHJvd1R5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwotICAg
IH0KLSAgICAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVh
bChDYWxsRGF0YSYgY2FsbERhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gZ2V0Q2FsbERhdGEo
dGhpcywgY2FsbERhdGEpOwotICAgIH0KLQotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCi0gICAgewotICAgICAgICBjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Ci0K
LSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkg
Ci0gICAgeyAKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOyAKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVVN0cmluZyBtX21lc3NhZ2U7
Ci19OwotCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbik7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pIH07CiAKIEpTVmFsdWUgY3JlYXRlVHlw
ZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIHJldHVybiBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIHJldHVy
biBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+c3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKCksIG1l
c3NhZ2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCmluZGV4IGMwZjlkMzIwOThiMTY2NmFkZjM5YmRiNDBkM2Y4NGJmMTAwZjdkOGMu
LmMzNDBlNmMyMzk4NTc2YTE4NTI4NWVjZjZhOWY1NzZhOTI2Y2UxNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9o
CiAjZGVmaW5lIEVycm9yX2gKIAorI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogCkBAIC03Myw2ICs3NCw1OSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTVmFsdWUgY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKTsKICAgICAKKyAgICBjbGFz
cyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKQorICAgICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQorICAgICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworCisgICAgICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24q
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChh
bGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNz
YWdlKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIp
OworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgICAgICB9CisgICAgCisgICAgICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQ29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0VGhyb3dU
eXBlRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0
aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorICAgICAgICB7
CisgICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJy
b3I7CisgICAgICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgICAgICB7IAorICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2lu
Zm8pOyAKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVVN0cmluZyBtX21lc3Nh
Z2U7CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFcnJvcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDdhMDAyYmExMzM3YjAyZmE5YzMzMDMzMWFkZWQwMzQ5MDJhOGE1ZTAuLjBiM2JhOTFm
NTUzMTczMDZmZjEyNTVmZWYyYjc0ZDlmNTA5ZTk4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC02NiwxMSArNjYsNiBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3Rh
bmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KIAotQ2FsbFR5
cGUgRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0
YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxs
VHlwZSBFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEVycm9yQ29uc3Ry
dWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmgKaW5kZXggYjdkODgxYjNjMjM3NGIyOTFmZmRjYWI5MzdjYmU3ZGQ2ODNiN2ZlNC4uMzFm
ZDNiNjNjMjU5ZmZjZDhiN2Q3OTdiNjQ1MjJkMmU2NzhhNWMxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaApAQCAtNTIsNyArNTIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBFcnJvckNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAppbmRleCA3Njc4MjI0NjZmYTcxNDkyZDc3OTcxODkxNzQwYmI3NTgyMmU3MmMwLi43N2Y0NzA1
NGZiMmRiMWI4Njk3MmFjMjVjMzE4ZDI5YzYzZDk2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzEsMTEg
KzcxLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9u
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKIH0KIAotQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1
cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiAvLyBFQ01BIDE1LjMuMSBUaGUg
RnVuY3Rpb24gQ29uc3RydWN0b3IgQ2FsbGVkIGFzIGEgRnVuY3Rpb24KIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaAppbmRleCAyMmE2MDE2Yjc4NTNiZDE2ODI5ZTY1NTE3NjdkZjMxMGEwNjhlZTgxLi44
ZmI5MGIwYTRkN2EyYzEyNjFjYjY3MGE1ZTkzNjA0ZWI3YjJlOWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC00OSw3
ICs0OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFs
IENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
aW5kZXggYzAyZTY3NWU0ZmM2NTc0YjkyMDg0OTJkMmFiM2JhN2U0ODdlODRmYi4uYjgzMWQ1ZGMw
MGMwNTFjMTEzMWEzMTU1MWE0YTU1ZjU0OWE2MmU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9u
UHJvdG90eXBlKTsKIAorY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RnVuY3Rpb25Qcm90b3R5cGUpIH07CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmND
YWxsKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Qcm90b0Z1bmNCaW5kKEV4ZWNTdGF0ZSopOwogCi1jb25zdCBDbGFzc0luZm8gRnVuY3Rp
b25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvblByb3RvdHlwZSkgfTsKLQogRnVuY3Rpb25Qcm90
b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKIHsKQEAgLTcyLDExICs3Miw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqKQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBlIEZ1bmN0aW9u
UHJvdG90eXBlOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAg
IHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIC8vIEVDTUEgMTUuMy40
CiBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmgKaW5kZXggN2MxOTYzMjIyZmVkMDAyZDA2MWIxMzBhYjY1OTAzMGYw
ZTc1MzIyYy4uNDVlMDkzM2UxNzMwNzcxOTRkNTJhYzA0NDFlYjc2ZWU0ODc2YTZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBA
IC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
RnVuY3Rpb25Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAg
dmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcAppbmRleCAxN2M3MjY1Yzc4MTdiZDg3NmVlZjhmOTEzZjA3YzkxYzVhMjBhZDc3Li4xNzE0
MTYzNzY3MTM5YjYwM2RjNDY2ZGUzNWRiOTY4OWIzN2I5YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNTAsNiArNTAs
NyBAQCB2b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllcgogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAgQVNTRVJU
KG1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rpb246OnNfaW5mby5t
ZXRob2RUYWJsZS5nZXRDYWxsRGF0YSk7CiAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNO
dWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogfQogCkBAIC02OCw2ICs2OSwxMiBAQCBjb25zdCBVU3RyaW5nIEludGVybmFsRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gVVN0cmluZygp
OwogfQogCitDYWxsVHlwZSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbGxU
eXBlTm9uZTsKK30KKwogY29uc3QgVVN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVk
RGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGNvbnN0IFVTdHJpbmcgZXhwbGlj
aXROYW1lID0gZGlzcGxheU5hbWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggOWNhNTlmYjc5MDNmNDc5NzkwNTg1ZDA4
MTNlNjA5MTkzZmQwZDY2Yi4uOGUyMTc4ZTNmNjU5NzhhOWMxYWVhZTlhNDU1ZjYyOWJmMTRjYWYw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaApAQCAtNTYsOSArNTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwo
Q2FsbERhdGEmKSA9IDA7CisgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwogCisgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHZ0
YWJsZUFuY2hvcigpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCmluZGV4IDc5YTAxNDQ3NGVkMDAxNDc1MDE5YjBhOTgwODcyNTY3ODFiNzNiNjIuLjdk
ZWVlZTYzN2U5M2YyODdhYzkwMmIwM2U5YjQzMGVlNjAxMDMwODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtNTQsMTEgKzU0LDYgQEAgY29uc3QgSlNPYmpl
Y3QqIEpTQ2VsbDo6Z2V0T2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gaXNPYmplY3QoKSA/IHN0
YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcykgOiAwOwogfQogCi1DYWxsVHlwZSBKU0Nl
bGw6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJu
IGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgSlNDZWxsOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpCiB7CiAgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggY2NjMWU5OTBlOGI4YmVm
NGM1OWI4ODFiYTViZWJmMjk2ZmM0OGJlZi4uZGIyOTMxZmZkNWMyOWNiOTk0MWQxODIxMmQyN2U2
Y2ZmMmIzNmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTcz
LDcgKzczLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3Qo
KTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRP
YmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAg
ICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwogCkBAIC0xMzUsNyArMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwotCisgICAgCiAg
ICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywg
c3RydWN0dXJlKQogICAgIHsKQEAgLTIyOCwxMyArMjI3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRPYmplY3QoKSA6IDA7CiAgICAg
fQogCi0gICAgaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFsdWUgdmFsdWUsIENhbGxE
YXRhJiBjYWxsRGF0YSkKLSAgICB7Ci0gICAgICAgIENhbGxUeXBlIHJlc3VsdCA9IHZhbHVlLmlz
Q2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkgOiBD
YWxsVHlwZU5vbmU7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQ2FsbFR5cGVOb25lIHx8IHZh
bHVlLmlzVmFsaWRDYWxsZWUoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAg
ICAgaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU1ZhbHVlIHZhbHVlLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogICAgIHsKICAgICAgICAgQ29uc3RydWN0VHlw
ZSByZXN1bHQgPSB2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5nZXRDb25zdHJ1Y3RE
YXRhKGNvbnN0cnVjdERhdGEpIDogQ29uc3RydWN0VHlwZU5vbmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGZiZWRkZWQ4MWMyOTI4YWI1ZTBm
MjU0ZmQxM2UwMTc1NDcwMzkxM2MuLjYyMDkwMmQ2ZmZiNGI1NGYyMzRkMTQxMGVjNjkzNDE4MGU0
NjQxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CkBAIC0xNjQsMTEgKzE2NCw2IEBAIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKIH0KIAotQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0
Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2Fs
bERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBKU0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDkxYzNjY2ZkOTUyNGMyYzlj
ZDM1MDg1M2I2MDY1MmJiMmUxMGZhYWIuLmU1ZmE3YTMxMDMxNmE1NzlkY2YxM2VkNjNlZmI5NWJl
YTBkYjUzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
QEAgLTEwOSw3ICsxMDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmF0aXZlRnVuY3Rp
b24gbmF0aXZlQ29uc3RydWN0b3IoKTsKIAogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgICAgIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IG9mZnNldE9mU2NvcGVDaGFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzE2OTFjM2M0NGNhODYwY2IxOGFm
NjE4MGU5N2NiNGQ0MjllODdmNC4uODczOTMyZTNjZWJmYzIzYzlkMjhmNjQ4NDZjMTM3Yjg4NmZj
MDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJF
cnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKQEAgLTE5
MSw2ICsxOTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtLCAwLCBtX2Z1bmN0aW9uTmFtZU9mZnNldCkpOwogICAgIG1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9zdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1
bmN0aW9uID0gMDsKICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBtX2Z1
bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywgJmNhbGxG
dW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwpAQCAtMzU5LDYgKzM2MSw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3Qt
Pm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmdGhpc09iamVjdC0+bV9zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwog
CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmVnaXN0ZXJBcnJheSkgewogICAgICAgICAvLyBPdXRz
aWRlIHRoZSBleGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUg
dG9ybiBvZmYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCAxNTE5YzM2NzEzNzU4OGQxNWRkY2JlMDJjYjc1ODhmMzk3MTdkZWQ0Li4wZmI0
MjFiNWFlYWYxMDFhYzYzMzUxZjFjYzg4YzFhZjQwYmVhYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTExOSw2ICsxMTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBT
dHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaW5nT2JqZWN0
U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlOwogCiAgICAgICAgIERlYnVnZ2VyKiBtX2Rl
YnVnZ2VyOwogCkBAIC0yMzYsNiArMjM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNp
emVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9m
ZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVj
dHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSog
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGY0ZThiOGUxMGM5NzM1OTY2MDM3NTE3MDRmZjJjZjM4
YTFmOWMyYzQuLmQ0ZGNhNjFhNjFiYmFjMDE5MjZjNTkzZWE3MzRjODM2MjNiMmU1NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
TG9jYWw8VW5rbm93bj4mIHJlcGxhY2VyLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9yZXBsYWNlckNhbGxUeXBlID0gbV9yZXBsYWNlci5hc09iamVjdCgpLT5nZXRDYWxs
RGF0YVZpcnR1YWwobV9yZXBsYWNlckNhbGxEYXRhKTsKKyAgICBtX3JlcGxhY2VyQ2FsbFR5cGUg
PSBtX3JlcGxhY2VyLmFzT2JqZWN0KCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fcmVw
bGFjZXIuYXNPYmplY3QoKS5nZXQoKSwgbV9yZXBsYWNlckNhbGxEYXRhKTsKIH0KIAogTG9jYWw8
VW5rbm93bj4gU3RyaW5naWZpZXI6OnN0cmluZ2lmeShIYW5kbGU8VW5rbm93bj4gdmFsdWUpCkBA
IC0zMzYsNyArMzM2LDcgQEAgaW5saW5lIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU1Zh
bHVlIHZhbHVlLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkMKIAogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdCh0b0pTT05GdW5jdGlvbik7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPmdldENhbGxEYXRhVmlydHVhbChj
YWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIApAQCAtNDAwLDcgKzQwMCw3IEBAIFN0
cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVk
VmFsdWUoVVN0cmluZ0J1aWxkZXImCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZh
bHVlKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIGlmIChvYmplY3QtPmdldENhbGxE
YXRhVmlydHVhbChjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgaWYgKG9iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVO
b25lKSB7CiAgICAgICAgIGlmIChob2xkZXItPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKSB7
CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ2lmeVN1Y2NlZWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCA0YmE2ZjhhNmVhMGYwZmUwYTQ3MDQ3ZmJiZWQ0M2E5MGNkMjQ4Njg3Li5h
MGFmNzMwNWI0MDNhNzlhZGY2ODg0OGYyNzgwMzAwYTUyMjNjNmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBzZXR0ZXJGdW5jLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOwor
ICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyRnVuYy0+bWV0aG9kVGFi
bGUoKS0+Z2V0Q2FsbERhdGEoc2V0dGVyRnVuYywgY2FsbERhdGEpOwogICAgICAgICAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQo
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAz
MDk2MWQ2YWZiNjIyMTI0NDNlMjRmMWQyMDQ2NWRjNjVhY2E5YjdmLi44ZDI2NTViNzc0Y2I0OWQz
ZTRlNmI3ZWI1YTIyZThiYTUwYWVlM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTQwNyw2ICs0MDcsMTMgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlKTsKIH0KIAoraW5s
aW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBDYWxsVHlwZSByZXN1bHQgPSB2YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YSh2YWx1ZS5hc0NlbGwoKSwgY2FsbERhdGEp
IDogQ2FsbFR5cGVOb25lOworICAgIEFTU0VSVChyZXN1bHQgPT0gQ2FsbFR5cGVOb25lIHx8IHZh
bHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogaW5saW5lIFN0
cnVjdHVyZSogY3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsK
ICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjJlNmJjY2Y3MTA4
M2ZmMjRmM2FkNTU5NjhkZjlmOWJjOWI1OTlkZS4uMjdiZTU0MTMxMzJiNTMzZmQ1Mzc0YzM3YWI0
M2NlNjUxMGMzYjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTY5LDExICs2OSw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSkpOwogfQogCi1DYWxsVHlw
ZSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNh
bGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0K
IENhbGxUeXBlIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA2N2Y1MjhkMGFlNzJlM2Y5
YjEzNjE3MGIzMzZlMjg0NWVkYmE4YTczLi41YmQ5ZTYwZjg0YTFlZWJjNjY0YmJiYmNlZjZlODZl
NTMxOGYwNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC02OSw3ICs2OSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxs
RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmNhMDIyYjE0ZjkwNzVjOWUyMzIyNDNhMTM0ODQwNjMw
NzQyYzA5OC4uNzM4MDlkOTI4YTI0NjIxOTE5Y2I3MzEwYWRjOGNiMTgwNWZkZmU1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cApAQCAtMTI3LDExICsxMjcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpOwogfQogCi1DYWxsVHlwZSBOdW1iZXJDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1
cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBOdW1iZXJDb25z
dHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAg
IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxOdW1iZXJDb25zdHJ1Y3RvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCmluZGV4
IDhhZWE2OTA3YTMyNmViYTA1MzVlZjMxYWEyNGRiMGEwNmU3ZWNkZTIuLjliOTEwMGUzMWIxMGQ5
MmZjNTE1OTM4NDdlYTBhNDQyZDRhN2M3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaApAQCAtNTgsNyArNTgsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAxYTM5
YzE4OWRjN2JjMjc2NTVlNzk4OTg0MzYzMTQ3OTQxMzRhNTNlLi5hNzQzMGZlZGFkYzE2MWQ3Y2Y0
YjQ2MzUwNTQzMTYzMzMwNTcyMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMjYsMTEgKzEyNiw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3Qo
ZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCks
IGFyZ3MpKTsKIH0KIAotQ2FsbFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhVmly
dHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMs
IGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjYWxsT2JqZWN0Q29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBkZGYzY2FmNGM0MTFjMmJhODBh
ODYyZGZlMDcxYTJkN2RhMzAwOTU3Li41NDc1NzNjMTIyZmNjNjQ0ZWVhYjZmZmU1MmI0N2MyZWRh
NzMyMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmgKQEAgLTU1LDcgKzU1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwCmluZGV4IDUyZjRlOWQ2NThmYzRiZjhlZDU2YjdhY2UxOWMxYzhkY2JiMGVk
MmYuLmJmZmQ5ZmZlMWI1MTAzMDhhNDI1ZDJiNWFlMTFhNDRiZDIwZmNkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC03NCw3ICs3NCw4IEBA
IEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgdikKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKGNhbGxGcmFtZSwgInVuZGVmaW5lZCIpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEp
ICE9IENhbGxUeXBlTm9uZSkKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYp
OworICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3Qs
IGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKGNhbGxGcmFtZSwgImZ1bmN0aW9uIik7CiAgICAgfQogICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoY2FsbEZyYW1lLCAib2JqZWN0Iik7CkBAIC05Miw3ICs5Myw4IEBAIGJv
b2wganNJc09iamVjdFR5cGUoSlNWYWx1ZSB2KQogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgIGlm
IChhc09iamVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5v
bmUpCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKKyAgICAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0g
Q2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEwMiw3ICsxMDQsOCBAQCBib29sIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1
ZSB2KQogewogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgICAgIGlmIChhc09iamVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRh
KSAhPSBDYWxsVHlwZU5vbmUpCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2
KTsKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0
LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuY3BwCmluZGV4IDFhODZlZTMzN2M0ZGQwYjFkM2FkZjQ2Yjk2YWU4MWNm
MGZkMmFkYmQuLmVkYWJkN2E2ZWRlZmI5ZTYzODU3Yjc3Y2E2ZGU3NDQ1ZTgzYTA5YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcApAQCAtMzMs
NyArMzMsNyBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CiAKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fZGF0YS5nZXR0ZXJG
dW5jLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gbV9kYXRhLmdldHRlckZ1bmMtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fZGF0YS5n
ZXR0ZXJGdW5jLCBjYWxsRGF0YSk7CiAgICAgCiAgICAgLy8gT25seSBvYmplY3RzIGNhbiBoYXZl
IGFjY2Vzc29yIHByb3BlcnRpZXMuCiAgICAgLy8gSWYgdGhlIGJhc2UgaXMgV2ViQ29yZSdzIGds
b2JhbCBvYmplY3QgdGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGQwZWE5YTEwZGRlMjJjZWRkZDdjODJhMWNmYmU2MGQ3NWRjNjczMDguLjcxYjUwYzlmM2I3
OWZiYzljNDJkNGIwNmNlNTI5NGMxYzI4ZDI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1NywxMSArMzU3LDYg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJlZ0V4cENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dFJlZ0V4cChleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxP
YmplY3QoKSwgYXJncykpOwogfQogCi1DYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERh
dGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxSZWdFeHBDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4IGRlZTQ4NDQ1MWQ1
OGY5ZjM0MzFkZWZiOWU4NWVkNTUyMWRjZDMyYjIuLjgyYTZlZWE2MWE4M2E2N2RiZmEwNWUyOGZi
YzQzNWI4ODQ1ZWZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuaApAQCAtOTgsNyArOTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFW
aXJ0dWFsKENhbGxEYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgICAgIE93blB0cjxSZWdFeHBDb25zdHJ1Y3RvclBy
aXZhdGU+IGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggYzEzN2NjYjFkNzNhMDc1ZGU2ODYzYWRiYmRhNDMyNTYwNGUz
NzM1ZS4uNDNjYTcwMWJhNWQxZDIxMjUxZmRhZTIzNTMzMDk0Mjc2YmQ5MDA0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcApA
QCAtMTA5LDExICsxMDksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykp
KTsKIH0KIAotQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxE
YXRhKTsKLX0KLQogQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsU3RyaW5nQ29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAppbmRleCA3MDBkZWFiNWY3ZWM4ODU3YjRmMzU2MmIx
MjQzZGQxMGE5ZTIzMTM1Li45YzE0YjkzOWZkZDE4MGM0Yzk1NWI2ODE2MjE5YjYzODdlMDUzNmEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmgKQEAgLTUyLDcgKzUyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cmluZ0Nv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RyaW5nUHJvdG90eXBlKik7CiAgICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKLSAgICAg
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCmluZGV4IGNkMTkxZGM5ZjExNGMwMDNiNmJlZjBjYjkzYjBmYzVmYzA0YTgy
NjguLjI0Yzg3OGFjZDZiY2IzMmIxZjVjMTFhZjYxMTNiYWQ5M2ZlNjJjNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC00OSw4ICs0OSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwogICAgIGNsYXNzIFNsb3RWaXNp
dG9yOwogCi0gICAgc3RydWN0IENsYXNzSW5mbzsKLQogICAgIGVudW0gRW51bWVyYXRpb25Nb2Rl
IHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKICAgICAgICAgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcwpAQCAtMzA1LDcgKzMwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhT
dHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0OwogICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+
b2Zmc2V0IDogbm90Rm91bmQ7CiAgICAgfQotCisgICAgCiAgICAgaW5saW5lIGJvb2wgSlNDZWxs
Ojppc09iamVjdCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlz
T2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCA1MmVkMTJhZTY5N2NjY2JlNjY0
ZDI5NTkxNzM5NGM0ZWExOGMyMmQyLi4xZmFkOTJmMzgwYmQ1ZmM4N2RmZTJlNWViOWU5MzczYzQ0
YzM0NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0x
MC0wNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwg
bWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBl
eHBsaWNpdCBsb29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLgorCisgICAgICAgICogSlNWYWx1ZVdy
YXBwZXIuY3BwOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9u
KToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1w
Lmg6CisKIDIwMTEtMTAtMDUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBleHBsaWNpdCBKU0dsb2JhbFRoaXMgdHlwZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IDI3NjgzYmYwODZlOTk4ZjY0MGNk
ZWUwODJiY2Q4NTgyNDJiNDM2ODYuLmRjN2VlM2Y5YjM5ODdiZmIxNTMzNTI5NzFlNGVjMTMwMGQx
ODlhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcApAQCAtMTY0
LDcgKzE2NCw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENhbGxGdW5j
dGlvbih2b2lkICpkYXRhLCBKU09iamVjdFJlZiB0aGlzT2JqCiAgICAgICAgIH0KIAogICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmpWYWx1
ZS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBvYmpWYWx1ZS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqVmFsdWUsIGNhbGxE
YXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICBKU1ZhbHVlICByZXN1bHRWYWx1ZSA9IGNhbGwoZXhlYywgb2Jq
VmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwga3NqVGhpc09iaiwgbGlzdEFyZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4IDYzMjU5OTRmMWUxY2Y5YzIwOTBm
ZDgyZjZhMDIzYzk1YjQwMTJkMmEuLjVmYmI1MGU3MThiNjYyYzcwOTRlNGU3MDRhMGNlZmRjN2U1
ZTczZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTQ2LDEx
ICs0Niw2IEBAIFVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCkKICAgICAgICAgZkpTVXNl
ck9iamVjdC0+UmVsZWFzZSgpOwogfQogCi1DYWxsVHlwZSBVc2VyT2JqZWN0SW1wOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJ
bXAqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0ph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCAyZDU2ZDRhMDlkNzY2ZDc0N2VjNzU1
MzU5ZDIxMDU1NTAxZmExMjhlLi5jODkyNzJiYWJhZGNkNGU5MWI1MDYyNWFjMjJlMzlkYzZjMmZi
YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTQ5LDcgKzQ5LDYg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGZiZjVjODkzYTg2NDU4NmQ2ZmU1MjlmZTY3YjBjNjQ4NDgyNmJiZWEuLmY4NDI1
MmFjZDg5NGEwM2ZhY2FkYjhlYjUxYmMwNmQzOTc1ZWZkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAxMS0xMC0wNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChP
T1BTISkKKworICAgICAgICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcyBh
bmQgcmVwbGFjZWQgdGhlaXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBleHBsaWNpdCBs
b29rdXAgaW4gdGhlIE1ldGhvZFRhYmxlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxl
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJ1bnRpbWVP
YmplY3RHZXRDYWxsRGF0YSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
OgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6aXNKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9y
dW50aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lQ29ubmVj
dGlvbk1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0Lmg6CisKIDIwMTEtMTAtMDUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBleHBsaWNpdCBKU0dsb2JhbFRoaXMgdHlwZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggM2VmYzQyYzBmMzRjNDQ5NzQ1YjcxMDE0YWU3Mjc4MzMyN2MyZmQw
Ni4uMjA5YWUzNjU1ZGU1NDZmOWVjZWJhNmY0ZjY5OWY4NzYyOWQ1OThjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTE2ODEsNyArMTY4MSw2IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9y
aWVudGF0aW9uQ2hhbmdlRXZlbnRFaQogI2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKQogX19a
TjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERh
dGFFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNoQ3JlYXRpb25FUk5TXzEySlNHbG9i
YWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldENh
bGxEYXRhVmlydHVhbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVz
Y3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKQEAgLTE2OTEsNyArMTY5
MCw2IEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQTlNf
NkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNK
U0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGZpbmlzaENyZWF0aW9uRVBOU18xNEpTR2xvYmFs
T2JqZWN0RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNmdldENvbnN0cnVjdERh
dGFFUk5TXzEzQ29uc3RydWN0RGF0YUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MThnZXRDYWxsRGF0YVZpcnR1YWxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAppbmRleCAwYjI3MDA4MDdkYjFjMTdkOTRmZTZm
ZDlhZDE3ZGRkMjQ0ODBmYzBkLi5hODhiZDY0ZGM2MTEyMTdhODQxNjk4NzFjMWNmNDNlYTk0Yzlj
MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNr
KE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBib29sKiByYWlzZWRFCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwg
Y2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAg
Y2FsbFR5cGUgPSBjYWxsYmFjaygpLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAg
ICAgICBjYWxsVHlwZSA9IGNhbGxiYWNrKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNh
bGxiYWNrKCksIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9u
ZSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIGZ1bmN0aW9uID0gY2Fs
bGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCAwNjJiYmEwZjc5ZmFlNTMzMDU5Y2UxOWQ5OWI1YWNi
OGNlM2RlZDBhLi45MzA5OTk3NDdjYTFlMmFmMTI1ODBjODU3OWJmOWExODc3NTM0ZjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAg
IGNhbGxUeXBlID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRh
KTsKKyAgICAgICAgY2FsbFR5cGUgPSBtX2N1c3RvbVJlc29sdmVyLT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShtX2N1c3RvbVJlc29sdmVyLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGFjdHVh
bCBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTC4KICAgICAgICAgICAgIG1fZ2xvYmFsT2JqZWN0
LT5pbXBsKCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZl
IGEgbG9va3VwTmFtZXNwYWNlVVJJIG1ldGhvZC4iLCAwLCBTdHJpbmcoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKaW5kZXggYTc0MjEwYTcyOGI5
YjdlYWIyOTNmZWEwNWVjNjg4OWI3NjFkYjFiZC4uNzZhNWQ3MTdiY2NlNWExNDUxMTllZjYwZDY2
M2IyMTgxN2MwZTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
cnJvckhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRD
YWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5j
dGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwog
CiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewogICAgICAgICBSZWZQdHI8SlNF
cnJvckhhbmRsZXI+IHByb3RlY3RlZGN0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBkYTUyMDAzZjY5NjQ0YTYyZGEwMWNj
NWQ1ZDZhYTc4NWMxZmE2NzcxLi5hOTc5ZTA4ZjMyMjYzNDZiMTMyOWNhNjA1MzkxNTI0MmFmNmJh
NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEp
OwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgaGFuZGxlRXZl
bnRGdW5jdGlvbiA9IEpTVmFsdWUoKTsKLSAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5n
ZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICBjYWxsVHlwZSA9IGpzRnVuY3Rp
b24tPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICB9CiAKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CmluZGV4IDcwZWI2ZTE3NWVmMzk4MTRjNmU4YWJjYjIwZDUzN2FmZjM1ZGZjNzQuLmRmN2I0MmM3
MGY4ZjMyOGQ5ZDA3ZDVmMDI1NmU2Mzc2OTlhZTQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC05
OSwxMSArOTksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRN
TEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBlIEpTSFRNTEFsbENvbGxlY3Rpb246Omdl
dENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENh
bGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxIVE1MQWxsQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggODBkNTk0ZWY1ODg5NGM1NmRjMTdkYjg0MzU3MGNiZGJhMTdmNDdhNS4uMzBlMTU3
ODEzN2NjY2QyNjAxYmI0OTQ5MWY5YjEzZjczMWY5MjY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAg
LTQ4LDExICs0OCw2IEBAIGJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0CiAgICAgcmV0dXJuIHJ1bnRp
bWVPYmplY3RDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCk7
CiB9CiAKLUNhbGxUeXBlIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxE
YXRhKTsKLX0KLQogQ2FsbFR5cGUgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgcmV0dXJuIHJ1bnRpbWVPYmpl
Y3RHZXRDYWxsRGF0YShzdGF0aWNfY2FzdDxKU0hUTUxBcHBsZXRFbGVtZW50Kj4oY2VsbCksIGNh
bGxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bWJlZEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDVjNGI3MGExYTEyYTI2ZGFjZjQxYTA2OGQ0YjU1
MmJhYWVmZTY1ZGUuLjViNWM0MTEyYjZkNjg0OTExZTgyMDhiY2YzNWZlYTU5YTA1YTI1ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVt
ZW50Q3VzdG9tLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkK
ICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCB0aGlzLCBzbG90KTsKIH0KIAotQ2FsbFR5cGUgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRD
YWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxs
RGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTSFRNTEVtYmVkRWxlbWVudDo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgcmV0
dXJuIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0YShzdGF0aWNfY2FzdDxKU0hUTUxFbWJlZEVsZW1l
bnQqPihjZWxsKSwgY2FsbERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3YjM5MGUzNWQ2NTRl
NTc3YzcwOTQ0ZTZiODZlNmM4NTdmMDg4ZTQzLi5hZmJlZTBlYmI5MzlmYWVmMGQ3Mzk5ZGQ5Mzhk
MjA2ZjMxZjNkN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgYm9vbCBK
U0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnQKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKIH0KIAotQ2FsbFR5cGUgSlNIVE1M
T2JqZWN0RWxlbWVudDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsK
LSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBK
U0hUTUxPYmplY3RFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEdldENhbGxEYXRhKHN0YXRpY19j
YXN0PEpTSFRNTE9iamVjdEVsZW1lbnQqPihjZWxsKSwgY2FsbERhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCmluZGV4IDAzMWJjMjEyZDYxYzM1MTYzZmQzNGYxZGQzNDBiMzA0ZWNlMmUxNjkuLjhjMmMx
M2U3YmExMTY5M2M1MDZmMGEwOTRlZmZlMTFjNjRlMjdkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uID0g
Z2xvYmFsT2JqZWN0LT5ldmFsRnVuY3Rpb24oKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGV2YWxGdW5jdGlvbi0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGV2YWxGdW5jdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Z2V0Q2FsbERhdGEoZXZhbEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDE0N2JjMzg2ZTIz
YmE5NzA5MTMwNGYyMDM1ZmVlODY3MzgxMzA1N2UuLmEzM2E1Zjg1M2M2OTgwMzI5NzM0ZjA0OTNk
OTA1Y2YzYjZkNTBiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIENhbGxU
eXBlIHJ1bnRpbWVPYmplY3RHZXRDYWxsRGF0YShKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBDYWxs
RGF0YSYgY2FsbERhdGEpCiAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5T
Y3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoZWxlbWVudCkpIHsKICAgICAgICAgQ2FsbERh
dGEgc2NyaXB0T2JqZWN0Q2FsbERhdGE7CiAgICAgICAgIAotICAgICAgICBpZiAoc2NyaXB0T2Jq
ZWN0LT5nZXRDYWxsRGF0YVZpcnR1YWwoc2NyaXB0T2JqZWN0Q2FsbERhdGEpID09IENhbGxUeXBl
Tm9uZSkKKyAgICAgICAgaWYgKHNjcmlwdE9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERh
dGEoc2NyaXB0T2JqZWN0LCBzY3JpcHRPYmplY3RDYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKIAogICAgICAgICBjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjYWxsUGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxYzg3NjBmMmQ1M2U2NGY4NzU5NjYy
ZmMwMjUwOTkxNzVmZGFkYzkyLi5lZDViYWY1OTQ3ZGIxMGEwOWYwMGMwMjIxOTA3NDUxMTBmMzgw
NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtODE1LDcgKzgxNSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBwdXNo
RXZlbnRIYW5kbGVyU2NvcGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKikg
Y29uc3Q7XG5cbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1
c2hFdmVudEhhbmRsZXJTY29wZSJ9OwogCiAgICAgIyBDdXN0b20gY2FsbCBmdW5jdGlvbnMKLSAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxs
RGF0YVZpcnR1YWwoSlNDOjpDYWxsRGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn07CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q2Fs
bERhdGEmKTtcblxuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
Q2FsbCJ9OwogCiAgICAgIyBDdXN0b20gZGVsZXRlUHJvcGVydHkgZnVuY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggYzFhZGViM2UwOGMzZDFhNGRh
MzNiMjAyMjQ1MTRmYzQzMjZjMWIxZC4uMDllYzEwYTdiMmRiM2QzNTgxNTJkZjMzMjRmYTYwZmZm
NzZkMDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAg
LTEyNiw3ICsxMjYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggY2Y3ZjIyZThhN2Q1YWU5
NzlkNGZkMWQ5NzliMDk2YWI3MmFhNDkyOS4uZWQyODRmMjNjYzgzOGMyMzI2MzM5YWEyOWI0MjI1
MTEwNGRlN2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjU1LDExICsyNTUsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIE9iamNGYWxsYmFja09iamVjdElt
cDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4g
Z2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQog
ewogICAgIE9iamNGYWxsYmFja09iamVjdEltcCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE9i
amNGYWxsYmFja09iamVjdEltcCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuY3BwCmluZGV4IGQ5NjVlOTRlM2QzMTRlZjg3ODRjMGFmOWE5MmEzYjU5ZGE5MWY2MjMu
LmZkMDZhMTNlZjQ5MTEyMTI4ODhmMDVhYjNmNjQ5MjRhYmIwNzAyOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTE0ODgsMTEgKzE0ODgsNiBAQCBFbmNvZGVk
SlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1DYWxsVHlwZSBRdFJ1
bnRpbWVNZXRhTWV0aG9kOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQot
ewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBl
IFF0UnVudGltZU1ldGFNZXRob2Q6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxs
RGF0YSkKIHsKICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsOwpAQCAtMTYyNCw3
ICsxNjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y2Fs
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID09IDEpIHsKICAgICAgICAgICAgICAgICBmdW5jT2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCku
dG9PYmplY3QoZXhlYyk7CiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
ICAgICAgICAgICAgaWYgKGZ1bmNPYmplY3QtPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkg
PT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENhbGxEYXRhKGZ1bmNPYmplY3QsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5v
bmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGQtPm1faXNDb25uZWN0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlF0TWV0YU1ldGhvZC5jb25uZWN0OiB0YXJnZXQgaXMgbm90IGEgZnVuY3Rpb24iKSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTE2MzcsNyArMTYzMiw3IEBAIEVuY29kZWRK
U1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGFjdHVhbCBmdW5jdGlvbiB0byBjYWxsCiAg
ICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICphc09iaiA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFzT2JqLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEp
ICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXNPYmotPm1ldGhv
ZFRhYmxlKCktPmdldENhbGxEYXRhKGFzT2JqLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB2ZXJzaW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jT2JqZWN0ID0gYXNPYmo7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xNjUwLDcgKzE2NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIGZ1bmNJZGVudCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogYXNGdW5jT2JqID0gdmFsLnRvT2JqZWN0KGV4
ZWMpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXNGdW5jT2JqLT5nZXRDYWxsRGF0
YVZpcnR1YWwoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGFzRnVuY09iai0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoYXNGdW5jT2Jq
LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY09iamVjdCA9IGFzRnVuY09iajsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQtPm1faXNDb25uZWN0KQpAQCAt
MTczNCwxMSArMTcyOSw2IEBAIEVuY29kZWRKU1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6Omdl
dENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENh
bGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAg
IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGw7CkBAIC0xODYyLDcgKzE4NTIsOCBAQCBp
bnQgUXRDb25uZWN0aW9uT2JqZWN0OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBfYywg
aW50IF9pZCwgdm9pZCAqKl9hKQogc3RhdGljIGJvb2wgaXNKYXZhU2NyaXB0RnVuY3Rpb24oSlNP
YmplY3RSZWYgb2JqZWN0KQogewogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIHJldHVybiB0
b0pTKG9iamVjdCktPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkgPT0gQ2FsbFR5cGVKUzsK
KyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgcmV0dXJuIGpzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShqc09iamVjdCwgY2FsbERhdGEpID09IENh
bGxUeXBlSlM7CiB9CiAKIHZvaWQgUXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQqKiBh
cmd2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggYWVjMTFjYTZkODE1
YTIzOWVhYmUwNzg3NDZiMWQ5YmI5YmMyZDE1NC4uY2VmNWEzMjk1NWFjYzlmMjdlYzAwODg5MjU0
NDU5Zjk0Y2IyOTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0x
NjksOSArMTY5LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
ID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci0KKyAgICAKICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCAgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAg
ICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVy
cHJldF9jYXN0PFF0UnVudGltZU1ldGFNZXRob2REYXRhKj4oZF9wdHIpO30KIApAQCAtMTc5LDcg
KzE4NCw2IEBAIHByaXZhdGU6CiAgICAgUXRSdW50aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiwgaW50
IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKTsK
IAotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbChFeGVjU3RhdGUqIGV4ZWMp
OwogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7CkBAIC0yMDYsNiArMjEwLDExIEBAIHB1YmxpYzoKICAKICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCAgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSogZF9mdW5jKCkgY29u
c3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRh
Kj4oZF9wdHIpO30KIApAQCAtMjEzLDcgKzIyMiw2IEBAIHByaXZhdGU6CiAgICAgUXRSdW50aW1l
Q29ubmVjdGlvbk1ldGhvZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29u
c3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKTsKIAotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbChFeGVjU3RhdGUqIGV4ZWMpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAwZTU1YzE2NGNiNGQ3MmViNTczNjli
Yjk2ZWY4ZTEyN2UzMGE3ZTU4Li4wN2I0MTdkNGM5MjQ2MjE2ODZmYTM0MmJjNTZmY2UxNjMzMjBi
Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTEyMywx
MSArMTIzLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRp
bWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAotQ2FsbFR5cGUgUnVudGltZU1ldGhvZDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENh
bGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERh
dGEpOwotfQotCiBDYWxsVHlwZSBSdW50aW1lTWV0aG9kOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2Fs
bFJ1bnRpbWVNZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCmluZGV4
IDM1NGFjZjg4NmEwYzMyZWQ5ZDc2MGI1MjdlZmU1YTQwZTdkOTFmMTIuLmYwNzRmNTgxMjE2NjIw
M2ZjMTkyNzg3NTE0MWZjMDY1MDFlNmYzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5oCkBAIC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICBSdW50aW1lTWV0aG9k
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZExpc3QmKTsKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImKTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKLSAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggZGYxMWZlYjZjYTk4
ZWFjOTIyYThhMGYzNmMzYjA3OWQzZGM1Y2Y1ZS4uNzMzNzliZjc2Mzk0YmQ0YzhkZmU2ZjFkOGQw
ODVhNWI3YjU2NTU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
CkBAIC0yNTksMTEgKzI1OSw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIFJ1bnRpbWVPYmplY3Q6OmdldENhbGxEYXRh
VmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRo
aXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgUnVudGltZU9iamVjdCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggMWFjMjFhZDQ4ZjI4MzdjOTYwMDhhZTM1
MDgxZmMwYzAzOTNhNjFhMy4uOTMzNGM1OTU5OTliN2I5MjlkMzQ2Yzg4ODQ3NmUyMzUzM2ZkY2Mw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTUwLDcgKzUwLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYTVmMDZl
OWEyNmZjOTg3YzIwMjUwZWRlNTVhNmU1ZmNmZDVkNmMyNC4uYjU3MGRhNTg3Yjg2Y2UwZjBjM2Jl
ZDU1YTRjNTBlNGY0OTFhZWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDExLTEwLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYWxsIGdldENhbGxEYXRhVmly
dHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNpdGVzIAorICAgICAgICB3aXRo
IGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCisKKyAgICAgICAgKiBQbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCk6CisKIDIwMTEt
MTAtMDMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBv
cHRpb24gdG8gc3VwcHJlc3MgcmVuZGVyaW5nIHVudGlsIHRoZSBkb2N1bWVudCdzIGxvYWQgZXZl
bnQgZmlyZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMWZmNmMxNDc2NGNk
NzE5OGE2NjI2M2ZlNjQwOGQ2OWFlNDU5NGVhMC4uODBhZDE5Mzg3NzEyYWYyNWY4Mjc5MDcwOTE4
OGMwOTZjYmM4NTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtOTQ0LDcg
Kzk0NCw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2VEZWZhdWx0
KHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lCiAgICAgRXhlY1N0YXRlKiBleGVjID0g
ZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSktPmdsb2JhbEV4ZWMo
KTsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOyAgICAKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+Z2V0Q2FsbERh
dGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNmY0N2EyZGJiMWJjMmY3NGMwNDMyYTBkMmQ1ZmQzY2RhMDY1NTk3Mi4uM2MxM2E4NjI3N2Ex
Y2RiZWU2OGQ4Y2Q3N2JiMjI1ZWExYjkxNGQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDExLTEwLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYWxsIGdldENhbGxEYXRh
VmlydHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNpdGVzIAorICAgICAgICB3
aXRoIGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKwogMjAxMS0xMC0wNiAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIGVz
dGltYXRlZC1wcm9ncmVzcyBwcm9wZXJ0eSB0byBXZWJLaXRXZWJMb2FkZXJDbGllbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0
aG9kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmNwcAppbmRleCBmYTg4ZmU1ZTBjOGUwMTU0ZmM1NmFiMTFhODgzYWI2YmRlMzA4OWIx
Li5kM2QxMDBhODQ5NWRkMGM5MzJlM2NiODJmZWZlMzdkNWU3MDRiNWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuY3BwCkBAIC03NywxMSArNzcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKIH0KIAotQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGFWaXJ0dWFs
KENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2Fs
bERhdGEpOwotfQotCiBDYWxsVHlwZSBKU05QTWV0aG9kOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2Fs
bE1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QTWV0aG9kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE1ldGhvZC5oCmluZGV4IGE4ZmI2MjdmNWY3NzA5NGI1N2Y5OTY1MmI4NTNj
YWIxY2ZkZmM0ZTAuLmZmMDk2MWMzODExNjEwNDFjOTg5ZWI2ZTk3NTc1YzZmOWE2MGJlNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuaApAQCAtNjIsNyArNjIsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5m
byk7CiAgICAgfQogCi0gICAgdmlydHVhbCBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhVmlydHVh
bChKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAgCiAgICAgTlBJZGVudGlmaWVyIG1f
bnBJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGFlOWI5ZTg0NWEyYzEyZjAwOWZk
YTY3YmJmODU1MDhiNzRjM2QxZDAuLjRhZmY5NmI2YTA1OGZjZGQ3NDc3OWE2Zjk0Mjc1NTAzMDZl
YzExZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTIxNywxMSArMjE3LDYgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE5QSlNPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RhdGljX2Nhc3Q8SlNOUE9iamVjdCo+KG9i
amVjdCktPmNhbGxPYmplY3QoZXhlYykpOwogfQogCi1DYWxsVHlwZSBKU05QT2JqZWN0OjpnZXRD
YWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxs
RGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIEpTQzo6Q2FsbFR5cGUgSlNOUE9iamVjdDo6Z2V0
Q2FsbERhdGEoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhKQogewog
ICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU05QT2JqZWN0Kj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuaAppbmRleCAyNjRhNjM1YzAxNWY0OTYxODcyNjY3OGZiMWIzZmU3MTNl
ZmI5ZjM1Li45YWFhMmQ0Yjk5OWRmMzczZTIwZWMwMThlZjdkZGJmMjVhYjE4YzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKQEAgLTc5LDcgKzc5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoSlND
OjpDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6
SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpOwogICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110381</attachid>
            <date>2011-10-10 12:37:21 -0700</date>
            <delta_ts>2011-10-10 15:31:10 -0700</delta_ts>
            <desc>Fixing qt</desc>
            <filename>bug-69186-20111010123724.patch</filename>
            <type>text/plain</type>
            <size>84818</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcwNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCBmYzA3NGZlNTFjNGE3MWQ0NjM0MWRkODcx
NGQwNTNhNzg0ZDAwOTM2Li5hZDAyZjE5ZTZjZTJmNGE0NDk0NmNlYWU0ZTBlNWVlNjA3YzE4Mzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
Y3BwCkBAIC03OCwxMSArNzgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrRnVuY3Rpb246
OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCByZXN1bHQpKTsKIH0KIAotQ2FsbFR5cGUgSlNDYWxsYmFja0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAppbmRleCA3MjQ5NGRjY2NhODBkM2MwOWZiMWIwODAyOGIzMWI4M2Ey
NTJhNGY4Li42YzFiMTBlZjM0NmVlNDg3MzRhMzBjYzkzM2MxMjc4NGExYTBjNzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTU5LDcg
KzU5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHZhbHVlT2ZDYWxsYmFjayhK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBDYWxsVHlw
ZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDU3MTMzN2FlYjY4OTMwOTgyYTczMTU4YzQy
YjZjYjJlNDg2MTg4ZjYuLmE1NjAzNWI5YTRkMzNlMjkxYjU2MGE1NjcxNmMzMDJhYWViYTgzNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0x
OTgsNyArMTk4LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICB2aXJ0dWFsIENh
bGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApp
bmRleCAyM2QxYThjMjg4MmY4ZGFkZTZhYTZkZWIzYjdiNmYxNTM4NGRlYzkwLi44ZWUwNjA2Mjdl
YjQ2YmFhMjZkYWFkZTBkYzQyMTc5ZTdkZDVhY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzk5LDEyICsz
OTksNiBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aGFzSW5zdGFuY2UoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50PgotQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYWxsRGF0YVZpcnR1
YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBj
YWxsRGF0YSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBDYWxsVHlwZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNh
bGxEYXRhKQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCmluZGV4IGZhNjgyZDhmYTJlOTAwOGMyNjg4MjBmYmU4NDI5ZTFlMDM2MWI5
YjQuLjRjYzY2YTRkYjMyNTQ1MjY1NDU2YmVkMThhMTU1N2RlZjExY2RiZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC00MTYsNyArNDE2LDggQEAgYm9v
bCBKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvYmplY3QsIEpTU3RyaW4KIGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJl
ZiwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIHJl
dHVybiB0b0pTKG9iamVjdCktPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkgIT0gQ2FsbFR5
cGVOb25lOworICAgIEpTQ2VsbCogY2VsbCA9IHRvSlMob2JqZWN0KTsKKyAgICByZXR1cm4gY2Vs
bC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2VsbCwgY2FsbERhdGEpICE9IENhbGxUeXBl
Tm9uZTsKIH0KIAogSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKQEAgLTQzNSw3ICs0MzYsNyBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0Q2FsbEFz
RnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU09iamVjdAog
ICAgICAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGFyZ3VtZW50c1tpXSkpOwogCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc09iamVjdC0+Z2V0
Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGpzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShqc09iamVjdCwgY2FsbERhdGEpOwogICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCAzNjZlNWZlZDBhODMzZmM4MDdhMGNiOGJkODQxMzkwNjc1
MmNhMzI3Li5iNmRjZWFkYTRiZjFlMGVjODI4NjBlMWYzNGZiNWRjZWZkOTVhNWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDUgQEAKKzIwMTEtMTAtMTAgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZ2V0Q2Fs
bERhdGFWaXJ0dWFsIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY5MTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlZCBhbGwgZ2V0Q2FsbERhdGFWaXJ0dWFsIG1ldGhvZHMgYW5kIHJl
cGxhY2VkIHRoZWlyIGNhbGwgc2l0ZXMgCisgICAgICAgIHdpdGggYW4gZXhwbGljaXQgbG9va3Vw
IGluIHRoZSBNZXRob2RUYWJsZS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
Y3BwOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmg6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0
SXNGdW5jdGlvbik6CisgICAgICAgIChKU09iamVjdENhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NU
VUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9C
b29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmg6CisKKyAgICAgICAgTW92ZWQgU3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uIHRvIEVycm9yLmggaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBpbmNsdWRl
IAorICAgICAgICB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpbiBKU0dsb2JhbE9iamVjdC5jcHAuCisg
ICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVR5cGVFcnJv
ckZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNvbnN0cnVjdFRocm93VHlw
ZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
OjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisKKyAgICAg
ICAgVG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBJbnRlcm5hbEZ1bmN0aW9uIChlLmcuIFF0UnVudGlt
ZU1ldGhvZCkgdG8gbm90IGhhdmUgCisgICAgICAgIHRvIGRlY2xhcmUgdGhlaXIgb3duIENsYXNz
SW5mbyBpZiB0aGV5IGRvbid0IG92ZXJyaWRlIGdldENhbGxEYXRhLCBwcm92aWRlZCAKKyAgICAg
ICAgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBjYWxscyBBU1NFUlRfTk9UX1JFQUNIRUQgaWYgY2Fs
bGVkLCBwcm92aWRpbmcgcm91Z2hseSB0aGUgc2FtZSAKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBh
cyBvZiB0aGUgcHVyZSB2aXJ0dWFsIG1ldGhvZCBJbnRlcm5hbEZ1bmN0aW9uIHVzZWQgdG8gaGF2
ZS4KKyAgICAgICAgQWxzbyBtYWRlIHRoaXMgbmV3IGltcGxlbWVudGF0aW9uIHByb3RlY3RlZCBy
YXRoZXIgdGhhbiBwcml2YXRlIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgIEFsc28gYWRk
ZWQgYW4gQVNTRVJUIGluIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uIHRvIG1ha2Ug
c3VyZSB0aGF0IHdoYXRldmVyIAorICAgICAgICBvYmplY3QgaXMgYmVpbmcgY3JlYXRlZCBwcm92
aWRlcyB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gb2YgZ2V0Q2FsbERhdGEuICBUaGlzIAorICAg
ICAgICBqdXN0IG1ha2VzIGV4ZWN1dGlvbiBmYWlsIGVhcmxpZXIgaW4gYSBwbGFjZSB3aGVyZSB0
aGUgc291cmNlIG9mIHRoZSBlcnJvciBpcyAKKyAgICAgICAgZWFzeSB0byB0cmFjZS4gIFRoZXNl
IEFTU0VSVHMgYXJlIGJldHRlciB0aGFuIHB1dHRpbmcgYSBudWxsIGluIHRoZSBNZXRob2RUYWJs
ZSBiZWNhdXNlCisgICAgICAgIHRoZXkgYXBwZWFyIG11Y2ggbW9yZSBpbnRlbnRpb25hbCB0byBh
bnlib2R5IHdobyBmYWlscyB0byBwcm92aWRlIHRoZWlyIG93biAKKyAgICAgICAgaW1wbGVtZW50
YXRpb24gb3Igd2hvIHRyaWVzIHRvIGV4cGxpY2l0bHkgY2FsbCBJbnRlcm5hbEZ1bmN0aW9uOjpn
ZXRDYWxsRGF0YS4KKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorCisgICAgICAgIEFkZGVkIGEgZ2xvYmFs
IHN0cnVjdHVyZSB0byBKU0dsb2JhbE9iamVjdCBmb3IgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0
aW9uIHRvIGVuYWJsZSAKKyAgICAgICAgaXQgdG8gYmUgcmV1c2VkIHJhdGhlciB0aGFuIGNyZWF0
aW5nIGEgbmV3IFN0cnVjdHVyZSBldmVyeSB0aW1lIHdlIGluc3RhbnRpYXRlIGl0LgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6c3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmll
cjo6U3RyaW5naWZpZXIpOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6dG9KU09OKToKKyAg
ICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRh
KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZSk6CisgICAgICAgIChKU0M6OmpzSXNGdW5jdGlvblR5cGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpmdW5jdGlvbkdldHRlcik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorCiAyMDEx
LTEwLTEwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTcwNDUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA4YTMwODg0ZjJiZjI0MWM1NWE2ODFmNjc2ZWZjMzdi
ZDdiZWM2Zjc4Li5mYWE1ZWMyOTU2YmMxY2NjNWIzYTg3ZTdkNTlmYzFjYzZjMjQxMzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTI2MCw3ICsyNjAsNiBA
QCBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVBTMF9STlNfOENhbGxEYXRhRQogX19aTjNK
U0M2SlNDZWxsMTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckUKIF9fWk4zSlNDNkpTQ2VsbDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFagogX19a
TjNKU0M2SlNDZWxsMTZnZXRDb25zdHJ1Y3REYXRhRVJOU18xM0NvbnN0cnVjdERhdGFFCi1fX1pO
M0pTQzZKU0NlbGwxOGdldENhbGxEYXRhVmlydHVhbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0M2
SlNDZWxsMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M2SlNDZWxsMThnZXRPd25Qcm9wZXJ0eVNs
b3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDNkpTQ2VsbDNw
dXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0
UHJvcGVydHlTbG90RQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZgppbmRleCBkNTVjZWIzNzIyNjlkNDE1NzJmMDBkYzdkOTIxZTczNDA4ODg3
NmRkLi43Yzc5N2QzYTM4Yjc2NDM4OTA1ZTExZGIyZWQwZmM5YjQ5ZmZiYmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMTkw
LDcgKzE5MCw2IEBAIEVYUE9SVFMKICAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0ds
b2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAgID9nZXRA
U3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxAV1RGQEBB
QUlBQVBBVkpTQ2VsbEAyQEBaCiAgICAgP2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENh
bGxUeXBlQDJAUEFWMTJAQUFUQ2FsbERhdGFAMkBAWgotICAgID9nZXRDYWxsRGF0YVZpcnR1YWxA
SlNDZWxsQEpTQ0BAVUFFP0FXNENhbGxUeXBlQDJAQUFUQ2FsbERhdGFAMkBAWgogICAgID9nZXRD
b25zdHJ1Y3REYXRhQEpTQ2VsbEBKU0NAQFVBRT9BVzRDb25zdHJ1Y3RUeXBlQDJAQUFUQ29uc3Ry
dWN0RGF0YUAyQEBaCiAgICAgP2dldE9iamVjdEBKU0NlbGxASlNDQEBRQUVQQVZKU09iamVjdEAy
QFhaCiAgICAgP2dldE93blByb3BlcnR5RGVzY3JpcHRvckBKU0dsb2JhbE9iamVjdEBKU0NAQFVB
RV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAy
QEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAppbmRleCBlYjc3NDYzNjIyZDQ4MzdjNDAzNmM2MDM2NGViYzk5ZTIxN2Y1YzdkLi5lMDM3
MDcwNzgyMjQxOTU2OGE0OTU4MzllZmQ4OWNhYjQzZDZiZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTI4MjksNyArMjgy
OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcg
ZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAgICAgICAgICAgIGlmIChH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKHByb3RvT2JqZWN0LT5n
ZXREaXJlY3RPZmZzZXQob2Zmc2V0KS5hc0NlbGwoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPmdldHRlcigpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRh
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5t
ZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIGdldHRlciwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBhc09iamVjdChiYXNlQ2VsbCksIEFyZ0xpc3QoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKQEAgLTI5NjQsNyAr
Mjk2NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZs
YWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAgICAgICAgaWYgKEdl
dHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYmFzZU9iamVjdC0+Z2V0
RGlyZWN0T2Zmc2V0KG9mZnNldCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIEpT
T2JqZWN0KiBnZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPmdldHRlcigpOwogICAgICAgICAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXR0ZXItPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSk7CisgICAgICAgICAg
ICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRD
YWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBjYWxsKGNhbGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2VP
YmplY3QsIEFyZ0xpc3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJ
T04oKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBy
ZXN1bHQ7CkBAIC0zMDcyLDcgKzMwNzIsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gYXNHZXR0
ZXJTZXR0ZXIoYmFzZU9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkuYXNDZWxsKCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGdldHRlciA9IGdldHRlclNl
dHRlci0+Z2V0dGVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXR0ZXItPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRhYmxlKCktPmdldENh
bGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWUgcmVzdWx0ID0gY2FsbChjYWxsRnJhbWUsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBiYXNlVmFsdWUsIEFyZ0xpc3QoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAppbmRleCA0ZWM0MzMwNmM3OGUxM2JjMzNhYjE5Yzk0MGRkMTYwNjBhMmZmZmVkLi5h
OTMwZjU4MmUwOWRiYWY3MWM3NTFiMjVjNWM0ZTc1YTdkMGE5NjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMTc1Miw3ICsxNzUyLDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9nZXR0ZXJfc3R1YikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU09iamVjdCog
Z2V0dGVyID0gYXNPYmplY3QoZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPmdldENhbGxEYXRhVmly
dHVhbChjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRh
YmxlKCktPmdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gY2FsbChjYWxsRnJhbWUsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBzdGFja0ZyYW1l
LmFyZ3NbMV0uanNPYmplY3QoKSwgQXJnTGlzdCgpKTsKICAgICBpZiAoY2FsbEZyYW1lLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuVG9UaHJvd1RyYW1wb2xpbmUoJmNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLCBzdGFja0ZyYW1lLmFyZ3NbMl0ucmV0dXJuQWRkcmVzcygpLCBTVFVCX1JF
VFVSTl9BRERSRVNTKTsKQEAgLTIxNTMsNyArMjE1Myw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQqLCBvcF9jYWxsX2ppdENvbXBpbGUpCiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQVNTRVJUKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxs
ZWUoKS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSA9PSBDYWxsVHlwZUpTKTsKKyAgICBB
U1NFUlQoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNhbGxlZSgpLT5tZXRob2RUYWJsZSgpLT5nZXRD
YWxsRGF0YShzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCksIGNhbGxEYXRhKSA9PSBDYWxs
VHlwZUpTKTsKICNlbmRpZgogICAgIAogICAgIHJldHVybiBqaXRDb21waWxlRm9yKHN0YWNrRnJh
bWUsIENvZGVGb3JDYWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjU2NjIyOTZhMGYyZTZmNjU5ZmIzZjViYmVkZGEx
YTE5ZjFmMGE4Mi4uZjU1NGU0MWE0ZmNhZmY5ZTkwMjkzNjc5NjA5NWJiZmExZWE0ZGMxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHAKQEAgLTExNCwxMSArMTE0LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIGFyZ3MpKTsKIH0K
IAotQ2FsbFR5cGUgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRh
JiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwot
fQotCiBDYWxsVHlwZSBBcnJheUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYgY2FsbERhdGEpCiB7CiAgICAgLy8gZXF1aXZhbGVudCB0byAnbmV3IEFycmF5KC4uLi4p
JwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5o
CmluZGV4IDI4OTkwOTg3ZjcwNzA2ODk0OGQ2ZDE1YTUyODE5ZGI2MGIyNTJiNDcuLjBlYTNlNDJi
Y2QyMTkxM2I2ODM4ZDI2ZWFiMDE1MzFjOTUzODdhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKQEAgLTU4LDcgKzU4LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAK
aW5kZXggZTNkMDI0MmRlMmViYThhOGUzODJmMTIwMjkxY2UyZjMzZmE3NmJiZS4uMWE0MTUyY2Iw
M2Q5YjVkYmRlNzc3MzA3ZDliYTFjNGFhNzk2OWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCkBAIC03NSwxMSArNzUs
NiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQm9vbGVhbkNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihleGVjLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oZXhlYykpKTsKIH0KIAotQ2FsbFR5cGUg
Qm9vbGVhbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRh
KQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxU
eXBlIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNh
bGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxCb29sZWFuQ29u
c3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oCmluZGV4IGIzNjA1MDIwMDU2NGUzNmFkNTNjZDYyMzhkMDNkNGUzNmI3MjNl
MzIuLjhkMTBmMDk4MWVhY2UxZTIyNDEyZGQ4YThjOTQyMDNlMDU1ZDIzOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCkBAIC01
Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCb29sZWFuQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAg
ICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAg
ICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggZjg5YWJhNDUyNWI0ODkxODRmYWZhODZiZWU3NzZlMWQzNzZkY2IwMi4u
ZjQ0MGE2NGJmYTVmNjUzMGNkY2VmNzQyZDkzZGRjY2VhMmFhMTMyMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0xODYsMTEg
KzE4Niw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1lKSk7CiB9CiAKLUNhbGxUeXBlIERhdGVDb25z
dHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICBy
ZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBEYXRlQ29u
c3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAg
ICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsRGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggMGFjMjVkMGNhOWZmYTBl
MzM5ZTY4ZWQ3NWJmNWVhZWFjOWE5ZTVjOS4uZjgzN2Q2NmFhZWQxYzNiYmJlZTM5YjdkMjA2NWNk
Y2VlNDgzYjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmgKQEAgLTUzLDcgKzUzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERh
dGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0
dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAg
ICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwZWQ3MDc1ODkzZDE2MjRjNTBlM2E0ZDNl
NzdlMjg4OWI1ZWFiNDIyLi40YTFlMTQ4MjA1NWQ5YWNkMjc3ZTU0NTYxYjM3YmYyMTY5MTZkNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKQEAgLTE2NSw3MSArMTY2LDE0IEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNT
dGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCAiU3ludGF4IGVycm9yIikpOwogfQogCi1jbGFzcyBTdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci1wcml2YXRlOgotICAgIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAgICAgICAsIG1fbWVzc2Fn
ZShtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKLQotICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24q
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQotICAgIHsKLSAgICAg
ICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVD
ZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7Ci0g
ICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
Pmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwotICAgICAgICBy
ZXR1cm4gZnVuY3Rpb247Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKLSAg
ICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0gICAgfQotICAgIAotICAgIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQot
ICAgIHsKLSAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RU
aHJvd1R5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwotICAgIH0K
LSAgICAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2Fs
bGVlKCkpLT5tX21lc3NhZ2UpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChD
YWxsRGF0YSYgY2FsbERhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhp
cywgY2FsbERhdGEpOwotICAgIH0KLQotICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCi0gICAgewotICAgICAgICBjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBDYWxsVHlw
ZUhvc3Q7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Ci0KLSAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCi0g
ICAgeyAKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOyAKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVVN0cmluZyBtX21lc3NhZ2U7Ci19
OwotCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bik7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pIH07CiAKIEpTVmFsdWUgY3JlYXRlVHlwZUVy
cm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewot
ICAgIHJldHVybiBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIHJldHVybiBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+c3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKCksIG1lc3Nh
Z2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCmluZGV4IGMwZjlkMzIwOThiMTY2NmFkZjM5YmRiNDBkM2Y4NGJmMTAwZjdkOGMuLmMz
NDBlNmMyMzk4NTc2YTE4NTI4NWVjZjZhOWY1NzZhOTI2Y2UxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9oCiAj
ZGVmaW5lIEVycm9yX2gKIAorI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogCkBAIC03Myw2ICs3NCw1OSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIEpTVmFsdWUgY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKTsKICAgICAKKyAgICBjbGFzcyBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Cisg
ICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5n
JiBtZXNzYWdlKQorICAgICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQorICAgICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOworCisgICAgICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICB7CisgICAg
ICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3Ry
aWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdl
KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgICAgICB9CisgICAgCisgICAgICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2Fs
bGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0VGhyb3dUeXBl
RXJyb3I7CisgICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7CisgICAgICAgIH0K
KyAgICAKKyAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
Kj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dUeXBlRXJyb3I7
CisgICAgICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworICAgICAgICB9CisKKyAgICAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisKKyAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgICAgICB7IAorICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8p
OyAKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVVN0cmluZyBtX21lc3NhZ2U7
CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFcnJvcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDdiZDI3OGU4OGIxYjQ3MDk4ODk0ODQ1N2ZhMTdjOTEwMmMzZGY2NjMuLjgxZTQ2ZGQxNDM2
MDA5OTU4OWUyNjc2Y2M2NzA1MDgwNmU0MmI0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC03MSwxMSArNzEsNiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNl
OjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KIAotQ2FsbFR5cGUg
RXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkK
LXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlw
ZSBFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEVycm9yQ29uc3RydWN0
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmgKaW5kZXggYmRhZjMxZDNlMjk4Y2JjMTFlNzIwY2RiZWE0ZDA4ZmJiOTU0ODE0NC4uYjliOWQz
NzUwMTE1MGZiYjQwNzg1ZWVjY2E5ZTU3Njg0MDc2YTQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaApAQCAtNTMsNyArNTMsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENh
bGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDk2ZTM4ZGRiMjE3OGM0Nzk3MDA4M2VlY2IwOTU0ZDRkYTRiZmYzNjEuLmMzZWRhMDk5
MjI0YjA2NDBhZTRkZWM2ZTM0YmY2NGI2OTc5YzYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03NiwxMSAr
NzYsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKSwgYXJncykpOwogfQogCi1DYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVy
biBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIC8vIEVDTUEgMTUuMy4xIFRoZSBG
dW5jdGlvbiBDb25zdHJ1Y3RvciBDYWxsZWQgYXMgYSBGdW5jdGlvbgogQ2FsbFR5cGUgRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCmluZGV4IGJlNGFiNmFlOTIyZjU0Nzc3ZGFkOTAyYTdiODRlZWMxMjkxYTc0MGUuLmU4
OGE5ZGMyYTYyYWI0MDZmMzdkOWEzOWY1ZGZlMTJhYjE3MmQxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTUwLDcg
KzUwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAg
ICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAg
ICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCmluZGV4IGMwMmU2NzVlNGZjNjU3NGI5MjA4NDkyZDJhYjNiYTdlNDg3ZTg0
ZmIuLmI4MzFkNWRjMDBjMDUxYzExMzFhMzE1NTFhNGE1NWY1NDlhNjJlOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAg
LTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChGdW5jdGlvblByb3RvdHlwZSk7CiAKK2NvbnN0IENsYXNzSW5mbyBGdW5jdGlvblByb3Rv
dHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9OworCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBs
eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJvdG9GdW5jQ2FsbChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jQmluZChFeGVjU3RhdGUqKTsKIAotY29uc3QgQ2xh
c3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Qcm90b3R5cGUpIH07Ci0K
IEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CkBAIC03MiwxMSArNzIsNiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRl
KikKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1DYWxs
VHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxs
RGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiAv
LyBFQ01BIDE1LjMuNAogQ2FsbFR5cGUgRnVuY3Rpb25Qcm90b3R5cGU6OmdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCmluZGV4IDdjMTk2MzIyMmZlZDAwMmQwNjFi
MTMwYWI2NTkwMzBmMGU3NTMyMmMuLjQ1ZTA5MzNlMTczMDc3MTk0ZDUyYWMwNDQxZWI3NmVlNDg3
NmE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuaApAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRh
Jik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMTdjNzI2NWM3ODE3YmQ4NzZlZWY4ZjkxM2YwN2M5MWM1
YTIwYWQ3Ny4uMTcxNDE2Mzc2NzEzOWI2MDNkYzQ2NmRlMzVkYjk2ODliMzdiOWIzYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAK
QEAgLTUwLDYgKzUwLDcgQEAgdm9pZCBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OworICAgIEFTU0VSVChtZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YSAhPSBJbnRlcm5hbEZ1bmN0
aW9uOjpzX2luZm8ubWV0aG9kVGFibGUuZ2V0Q2FsbERhdGEpOwogICAgIHB1dERpcmVjdChnbG9i
YWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxE
YXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIApAQCAtNjgsNiArNjksMTIgQEAgY29uc3QgVVN0cmlu
ZyBJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIFVTdHJpbmcoKTsKIH0KIAorQ2FsbFR5cGUgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBDYWxsVHlwZU5vbmU7Cit9CisKIGNvbnN0IFVTdHJpbmcgSW50ZXJuYWxGdW5jdGlv
bjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBjb25zdCBV
U3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRpc3BsYXlOYW1lKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDljYTU5ZmI3OTAz
ZjQ3OTc5MDU4NWQwODEzZTYwOTE5M2ZkMGQ2NmIuLjhlMjE3OGUzZjY1OTc4YTljMWFlYWU5YTQ1
NWY2MjliZjE0Y2FmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTU2LDkgKzU2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGFWaXJ0dWFsKENhbGxEYXRhJikgPSAwOworICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAorICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAzZDYyN2UxZmVkZjQ1MDU5ZTJiZGI0YjFmM2RiZTdi
NjY3N2I0OWY3Li44OTczZGMzMDA0NGZiZmY3OGYwZjA2MzYyMzhiOWY4YmUzOWU5NzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTU0LDExICs1NCw2IEBA
IGNvbnN0IEpTT2JqZWN0KiBKU0NlbGw6OmdldE9iamVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGlz
T2JqZWN0KCkgPyBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpIDogMDsKIH0KIAot
Q2FsbFR5cGUgSlNDZWxsOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQot
ewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBl
IEpTQ2VsbDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKQogewogICAgIHJldHVybiBD
YWxsVHlwZU5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDcy
ZjU1YTFiMWYwODNiNGI1NGQzNDhhYjRmNTAzNzAyOWJmMzM0YWYuLjIzZjBmZDVjMGZhZjc1NDlm
ZTc2MDhlMGU0ZWIwZjUzZjMyMDZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCkBAIC03Myw3ICs3Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVj
dCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICBjb25zdCBK
U09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAg
ICAgICAKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERh
dGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENv
bnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CkBAIC0xNDMsNyArMTQyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cnVjdHVyZTsKICAgICB9OwotCisgICAgCiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogbV9z
dHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQogICAgIHsKQEAgLTIzNiwxMyAr
MjM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2Vs
bCgpLT5nZXRPYmplY3QoKSA6IDA7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0YSkKLSAgICB7Ci0gICAgICAg
IENhbGxUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPmdldENh
bGxEYXRhVmlydHVhbChjYWxsRGF0YSkgOiBDYWxsVHlwZU5vbmU7Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHQgPT0gQ2FsbFR5cGVOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAgaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQog
ICAgIHsKICAgICAgICAgQ29uc3RydWN0VHlwZSByZXN1bHQgPSB2YWx1ZS5pc0NlbGwoKSA/IHZh
bHVlLmFzQ2VsbCgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdERhdGEpIDogQ29uc3RydWN0
VHlwZU5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDYyZmRmNGY5YjA1YTU0ZWY2N2YxYzdmNDhiMmNlMjI0NGU5MTE5NDYuLjQ5MzMzMDQ2
Y2Q3OWI4OTg1ZGQ3NWZjYWZlNWIxNmNhN2U0M2NhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xNjQsMTEgKzE2NCw2IEBAIHZvaWQgSlNG
dW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKIH0K
IAotQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxs
RGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBD
YWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCmluZGV4IDI0MDlkNGVlODVlODJkN2JmMzNlNzFmYjA1OWI5Y2JiY2JmNzQ0ZjYuLjliOWRh
OWNlOWZhYjc1NDcxZGE4Y2Y5YWMxN2ZmYmMwZDc3M2JjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTExMCw3ICsxMTAsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShD
b25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgICAgICBzdGF0aWMgaW5saW5l
IHNpemVfdCBvZmZzZXRPZlNjb3BlQ2hhaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDZjNjhiMmU4YTA3NTU3OTBkMTA2N2Q0
ODMxMDUzZTk3NGRiM2EzM2UuLjBmZTQzNmRiNzJjZDA2NDBiMzg1ODIwNWZhNDFiOTQwM2U4ZjQw
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJEYXRlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRXJy
b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBAIC0xOTcs
NiArMTk4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSwgMCwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsKICAgICBtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fc3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5j
dGlvbiA9IDA7CiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbiA9IDA7CiAgICAgbV9mdW5j
dGlvblByb3RvdHlwZS0+YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKGV4ZWMsIHRoaXMsICZjYWxsRnVu
Y3Rpb24sICZhcHBseUZ1bmN0aW9uKTsKQEAgLTM2NSw2ICszNjcsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJnRoaXNPYmplY3QtPm1fc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZ0aGlzT2JqZWN0LT5t
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwg
JnRoaXNPYmplY3QtPm1fc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKTsKIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5tX3JlZ2lzdGVyQXJyYXkpIHsKICAgICAgICAgLy8gT3V0c2lk
ZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRv
cm4gb2ZmLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggODdmMGY0YjEwY2E5Yzc2YjU0MzU2NDlhN2JkMDJmZDI2ZGQ1NDBiYS4uMTE1ZDVj
YjZiZDk1NDgzNzNhYWNlODAxMzhjOGVhZjI2M2EzYTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMTksNiArMTE5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3Ry
dWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0
cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvblN0cnVjdHVyZTsKIAogICAgICAgICBEZWJ1Z2dlciogbV9kZWJ1
Z2dlcjsKIApAQCAtMjM5LDYgKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzaXpl
X3QgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZz
ZXQ7IH0KICAgICAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1
cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBzdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIHJl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAg
U3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Z09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAppbmRleCA2ZWYyMTU2MDBiMDc3OTlmNWMxNDkzMjU4ZTljOWY3MDVk
NTZkZTk4Li5kM2ZjMzU5OTMxZTAxNjkxMDg3NWZjODg5Y2JjZmMyODg1YzNjYzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMjQ1LDcgKzI0
NSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExv
Y2FsPFVua25vd24+JiByZXBsYWNlciwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcmVwbGFjZXJDYWxsVHlwZSA9IG1fcmVwbGFjZXIuYXNPYmplY3QoKS0+Z2V0Q2FsbERh
dGFWaXJ0dWFsKG1fcmVwbGFjZXJDYWxsRGF0YSk7CisgICAgbV9yZXBsYWNlckNhbGxUeXBlID0g
bV9yZXBsYWNlci5hc09iamVjdCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtX3JlcGxh
Y2VyLmFzT2JqZWN0KCkuZ2V0KCksIG1fcmVwbGFjZXJDYWxsRGF0YSk7CiB9CiAKIExvY2FsPFVu
a25vd24+IFN0cmluZ2lmaWVyOjpzdHJpbmdpZnkoSGFuZGxlPFVua25vd24+IHZhbHVlKQpAQCAt
MzM2LDcgKzMzNiw3IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ2lmaWVyOjp0b0pTT04oSlNWYWx1
ZSB2YWx1ZSwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DCiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodG9KU09ORnVuY3Rpb24pOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gb2JqZWN0LT5nZXRDYWxsRGF0YVZpcnR1YWwoY2Fs
bERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTQwMCw3ICs0MDAsNyBAQCBTdHJp
bmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZh
bHVlKFVTdHJpbmdCdWlsZGVyJgogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBpZiAob2JqZWN0LT5nZXRDYWxsRGF0
YVZpcnR1YWwoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkgeworICAgIGlmIChvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9u
ZSkgewogICAgICAgICBpZiAoaG9sZGVyLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkgewog
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm51bGwiKTsKICAgICAgICAgICAgIHJldHVybiBT
dHJpbmdpZnlTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKaW5kZXggZjk0YzE2MmE3Zjg5NmQ4ZGMwYzFiMjY3MmNkOTgwZmMyOGVhNGIyYi4uYWFj
ZWM2ZDQzNzY3MGVhM2ZhMDEwMDNkNzhlYTA3MzNlNDllMGU0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgSlNP
YmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gc2V0dGVyRnVuYy0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAg
ICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlckZ1bmMtPm1ldGhvZFRhYmxl
KCktPmdldENhbGxEYXRhKHNldHRlckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHZh
bHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggYzhm
M2RlOTdhNzI0OWE2ZGY3MDM5MzIyMzFlOGQxODExOWQ5MjJkZi4uM2FkNzBjNTBhYWQ2MWFkMzdm
Y2MyZmE5YjkwNGE3MGIzN2ZmMzNiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC00MTMsNiArNDEzLDEzIEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0
RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICBy
ZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSk7CiB9CiAKK2lubGlu
ZSBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEp
Cit7CisgICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwo
KS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEodmFsdWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6
IENhbGxUeXBlTm9uZTsKKyAgICBBU1NFUlQocmVzdWx0ID09IENhbGxUeXBlTm9uZSB8fCB2YWx1
ZS5pc1ZhbGlkQ2FsbGVlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGlubGluZSBTdHJ1
Y3R1cmUqIGNyZWF0ZUVtcHR5T2JqZWN0U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAg
ICAgcmV0dXJuIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ0M2NjMTg4MTgyNDJl
ZDg2Mjk1NzZlZWY5YzQ4NmM3ZDQ5YmFhMGMuLmU4MTNlZDRiZmM1OWM2ZGNlMmFjZjMyZWE2M2Ix
NDI3MmU4NDJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC03NCwxMSArNzQsNiBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNl
OjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KIAotQ2FsbFR5cGUg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxs
RGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBD
YWxsVHlwZSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggZjMwMWNhYTViMDVkZjBmNDZj
NGJhNzQwNTk5NGJiNmMxMzY5OGQ4Ny4uZDZlNTczZjBjOTkxYTZiYjYyNWVhNzMyNTkxYzI3YjU4
ZTA4MjQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNzAsNyArNzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgICAg
ICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7
CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhVmly
dHVhbChDYWxsRGF0YSYpOwogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTEzMDlhNGNhM2QzODNjNjVmODg4OWU5
YmIzNTIwZDA2YTBmOWYxNC4uM2M2NWU5ZjA4ZmUzZGM0MTJhY2IwM2NhNTZiNGM1MGM3MDE2YjQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcApAQCAtMTM3LDExICsxMzcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAg
OiBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpOwogfQogCi1DYWxsVHlwZSBOdW1i
ZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsK
LSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBO
dW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRh
KQogewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxOdW1iZXJDb25zdHJ1Y3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oCmluZGV4IDQ1N2IxZDI1Y2ZjOGE3NTdmYmI3MTM0YmI1Y2EzNzIyODUwZWY5MzkuLjcwNTZk
ZGY3NWJiOTc1ZTlhMDMwMmVkZjMxMTI3YmZlNmEzZmMxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaApAQCAtNjAsNyArNjAsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGlj
IENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDJkMjE4YTk1MTVmZWFlZTA3MGY2ZmI1ODViOTA4ZTBlNDEyMDkyZDEuLjkwZWRmYTUz
N2M5MmNlNTE2MDc5OTZiYzVjODJhYTU3NWEwMTY0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEzNiwxMSArMTM2
LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdE9iamVjdChleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9i
YWxPYmplY3QoKSwgYXJncykpOwogfQogCi1DYWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2Fs
bERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxPYmplY3RDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDAzYmI1MTNl
M2NlNzIzZTdiYWNhNWZhMjM5MzgwMDJhMDg5YTllOTEuLjIyMjE1OWY1M2E0ZjhmMWI4ZDY1ODJj
YzcwY2IwZmIwZjdmZWM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtNTcsNyArNTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA1MmY0ZTlkNjU4ZmM0YmY4ZWQ1NmI3YWNl
MTljMWM4ZGNiYjBlZDJmLi5iZmZkOWZmZTFiNTEwMzA4YTQyNWQyYjVhZTExYTQ0YmQyMGZjZDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAt
NzQsNyArNzQsOCBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJ1bmRlZmluZWQiKTsKICAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgICAgIGlmIChhc09iamVjdCh2KS0+Z2V0Q2FsbERhdGFWaXJ0
dWFsKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh2KTsKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2Fs
bERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyhjYWxsRnJhbWUsICJmdW5jdGlvbiIpOwogICAgIH0KICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGNhbGxGcmFtZSwgIm9iamVjdCIpOwpAQCAtOTIs
NyArOTMsOCBAQCBib29sIGpzSXNPYmplY3RUeXBlKEpTVmFsdWUgdikKICAgICAgICAgaWYgKGFz
T2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgICAgICBpZiAoYXNPYmplY3QodiktPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSkg
IT0gQ2FsbFR5cGVOb25lKQorICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7
CisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwg
Y2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDIsNyArMTA0LDggQEAgYm9vbCBqc0lzRnVuY3Rp
b25UeXBlKEpTVmFsdWUgdikKIHsKICAgICBpZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBpZiAoYXNPYmplY3QodiktPmdldENhbGxEYXRhVmly
dHVhbChjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQorICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3Qodik7CisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENh
bGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAppbmRleCAxYTg2ZWUzMzdjNGRkMGIxZDNh
ZGY0NmI5NmFlODFjZjBmZDJhZGJkLi5lZGFiZDdhNmVkZWZiOWU2Mzg1N2I3N2NhNmRlNzQ0NWU4
M2EwOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlv
bigpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBt
X2RhdGEuZ2V0dGVyRnVuYy0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IG1fZGF0YS5nZXR0ZXJGdW5jLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxs
RGF0YShtX2RhdGEuZ2V0dGVyRnVuYywgY2FsbERhdGEpOwogICAgIAogICAgIC8vIE9ubHkgb2Jq
ZWN0cyBjYW4gaGF2ZSBhY2Nlc3NvciBwcm9wZXJ0aWVzLgogICAgIC8vIElmIHRoZSBiYXNlIGlz
IFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBzdWJzdGl0dXRlIHRoZSBz
aGVsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcAppbmRleCA1ODY3Njk0YjQwYWNjZGU2MDdjMTdkNTVmN2Q4OGM2MDUxOTIzZTMy
Li40MGQ0OTE0NjQ0Yzk4NjNiYzI0NGMxZDRiMzFkY2JiYWRhMWVjNzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0z
NzIsMTEgKzM3Miw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxS
ZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RSZWdFeHAoZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKIH0KIAotQ2FsbFR5cGUgUmVnRXhwQ29uc3Ry
dWN0b3I6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0
dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2FsbFR5cGUgUmVnRXhwQ29u
c3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAg
ICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUmVnRXhwQ29uc3RydWN0b3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAppbmRl
eCBkOWZkZmNlYWNmNTRlYWU5MTNhYzk1NzkyOGIxNjZmYzlkNzkwM2ZjLi41ZTEzMTc2NGQ0OTI1
YjcwY2IzODY2NzljNzdlNmE0MDJhMzYxYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKQEAgLTEwMiw3ICsxMDIsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBDYWxs
VHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAgICAgICAgT3duUHRyPFJl
Z0V4cENvbnN0cnVjdG9yUHJpdmF0ZT4gZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCAzZWUyMGZhYjA4N2Q5ZGJiZDU0
MjM2MDY0NGVlZjEwNWNkNjViODg4Li5mMzlkZDdhNWFhMDA3OGFjNmZkMjNkODJlN2ViMGJhZGJh
N2Q3OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC0xMTksMTEgKzExOSw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKSkpOwogfQogCi1DYWxsVHlwZSBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2Fs
bERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBTdHJpbmdDb25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxTdHJpbmdDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCmluZGV4IDBlYjBmNjEz
OTUwNGE3MmUwNzk2MTlkMjdlNTdhMDU4YjYyZDRkYjAuLmE3MTkxNDg0ODM5MjlhNjhlZWMzODky
YjNiY2NmODVjNzJlZWYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaApAQCAtNTMsNyArNTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBTdHJpbmdQcm90b3R5cGUq
KTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRD
YWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGY2ZDQ3
ODA4MDRiY2Y5NWU5NTViNzNlN2UwZDA4OWNlZDA5ZjEyN2MuLjBkMmZmYTEwMTVlZGFiMWRlMjU3
OGVlZTMzNGY4MWYxMGFkMTVlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCkBAIC00OSw4ICs0OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogCi0gICAgc3RydWN0IENsYXNz
SW5mbzsKLQogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcywKICAgICAgICAgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcwpAQCAtMzA3
LDcgKzMwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBl
bnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0
OwogICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CiAgICAg
fQotCisgICAgCiAgICAgaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZwppbmRleCAwYjFiNDU2NTEzMTRmMjQ0ZmU0ZWNiZjUyMWY2ZWI3MmVhYzIyZjEwLi5j
ODc3MjMxZjRjMGUwNWYyNDJhMDY5OGU4ZWJkYzlhYzI2NTNmMjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMC0xMCAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1
YWwgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhl
aXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBleHBsaWNpdCBsb29rdXAgaW4gdGhlIE1l
dGhvZFRhYmxlLgorCisgICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgorICAgICAgICAoSlNW
YWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBVc2VyT2JqZWN0
SW1wLmNwcDoKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisKIDIwMTEtMTAtMDggIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3RhdGlj
IHZlcnNpb24gb2YgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvSlNWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IDI3NjgzYmYwODZlOTk4ZjY0MGNkZWUwODJiY2Q4
NTgyNDJiNDM2ODYuLmRjN2VlM2Y5YjM5ODdiZmIxNTMzNTI5NzFlNGVjMTMwMGQxODlhNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENhbGxGdW5jdGlvbih2b2lk
ICpkYXRhLCBKU09iamVjdFJlZiB0aGlzT2JqCiAgICAgICAgIH0KIAogICAgICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmpWYWx1ZS0+Z2V0Q2Fs
bERhdGFWaXJ0dWFsKGNhbGxEYXRhKTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvYmpW
YWx1ZS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqVmFsdWUsIGNhbGxEYXRhKTsKICAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICBKU1ZhbHVlICByZXN1bHRWYWx1ZSA9IGNhbGwoZXhlYywgb2JqVmFsdWUsIGNh
bGxUeXBlLCBjYWxsRGF0YSwga3NqVGhpc09iaiwgbGlzdEFyZ3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4IDdiNjA4OTNhODY4MzJlNzc0OGQ5ZDE2YzM2MDc1
NDdmNGIzOWNhZGMuLjZmOTlhNGM4NDY2YjRhNTU1NmQ5YTcwNTQ2MDZkZGU3YmEzY2U5NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTQ2LDExICs0Niw2IEBA
IFVzZXJPYmplY3RJbXA6On5Vc2VyT2JqZWN0SW1wKCkKICAgICAgICAgZkpTVXNlck9iamVjdC0+
UmVsZWFzZSgpOwogfQogCi1DYWxsVHlwZSBVc2VyT2JqZWN0SW1wOjpnZXRDYWxsRGF0YVZpcnR1
YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0YSh0aGlzLCBj
YWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIFVzZXJPYmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2Vs
bCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIFVzZXJPYmplY3RJbXAqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxVc2VyT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuaAppbmRleCA2ZGM1OTUxMDRmN2U5MmQwYzU0MjBiY2RlYjk1MTQz
YTBlM2FiMGIzLi5hY2UxOTMzNzY2Nzc1MzBlZTJmNjEzOWMxMGQ2YWY3ZTNiNTI1ZGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICB2aXJ0dWFsIENh
bGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDdhNmFkMWMxMzU5MmJkNDQ4NDc1OTYyNDgzN2YwYzBjNjUzMTYxM2YuLmVmNjVhNTZkOGU4ZWU4
NjQxNjBlNDNlOTBlZmEwOTI4NGEzZmZiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAxMS0xMC0xMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAg
UmVtb3ZlZCBhbGwgZ2V0Q2FsbERhdGFWaXJ0dWFsIG1ldGhvZHMgYW5kIHJlcGxhY2VkIHRoZWly
IGNhbGwgc2l0ZXMgCisgICAgICAgIHdpdGggYW4gZXhwbGljaXQgbG9va3VwIGluIHRoZSBNZXRo
b2RUYWJsZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ2FsbGJhY2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRh
OjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6
Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVk
U2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0
SG9zdDo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpydW50aW1lT2JqZWN0R2V0Q2FsbERhdGEp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOjpjYWxsKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmlzSmF2YVNj
cmlwdEZ1bmN0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X29iamVjdC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTEt
MTAtMTAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2Ug
c3RhdGljIGZ1bmN0aW9ucyBpbiBIVE1MU2VsZWN0RWxlbWVudC5jcHAgbWVtYmVyIGZ1bmN0aW9u
cyBvZiBIVE1MU2VsZWN0RWxlbWVudCBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxZGY0
ZDdmZjEyOTUwMGJjN2Y2NzZjMGNiNTE0OGVjOTcyYTA4ZmZhLi40MjRlNDIzY2Q4OTFkZWQ5ZWRk
N2M3NzcwNjNiZGQ0OGM0ZmU5MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTY4MSw3ICsx
NjgxLDYgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjZzZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudEVp
CiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDEx
Z2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKIF9fWk4zSlNDMTNSdW50aW1l
TWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZp
ZXJFCi1fX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4Z2V0Q2FsbERhdGFWaXJ0dWFsRVJOU184Q2Fs
bERhdGFFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlND
MTNSdW50aW1lTWV0aG9kMjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1
bnRpbWVNZXRob2Q2c19pbmZvRQpAQCAtMTY5MSw3ICsxNjkwLDYgQEAgX19aTjNKU0M4QmluZGlu
Z3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxEYXRhRVBOU182SlNDZWxsRVJOU184Q2FsbERhdGFF
CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDE0ZmluaXNoQ3JlYXRpb25FUE5TXzE0SlNHbG9iYWxPYmplY3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDE2Z2V0Q29uc3RydWN0RGF0YUVSTlNfMTNDb25zdHJ1Y3REYXRh
RQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOGdldENhbGxEYXRhVmlydHVhbEVS
TlNfOENhbGxEYXRhRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOGdldE93blBy
b3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0
eVNsb3RFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlO
YW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuY3BwCmluZGV4IDBiMjcwMDgwN2RiMWMxN2Q5NGZlNmZkOWFkMTdkZGQyNDQ4MGZjMGQuLmE4
OGJkNjRkYzYxMTIxN2E4NDE2OTg3MWMxY2Y0M2VhOTRjOWMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soTWFya2VkQXJndW1lbnRCdWZmZXIm
IGFyZ3MsIGJvb2wqIHJhaXNlZEUKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBjYWxsVHlwZSA9IGNhbGxiYWNrKCkt
PmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0YSk7CisgICAgICAgIGNhbGxUeXBlID0gY2FsbGJh
Y2soKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJhY2soKSwgY2FsbERhdGEpOwog
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgZnVuY3Rpb24gPSBjYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmlu
ZGV4IDA2MmJiYTBmNzlmYWU1MzMwNTljZTE5ZDk5YjVhY2I4Y2UzZGVkMGEuLjkzMDk5OTc0N2Nh
MWUyYWYxMjU4MGM4NTc5YmY5YTE4Nzc1MzRmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkko
Y29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgY2FsbFR5cGUgPSBtX2N1c3RvbVJl
c29sdmVyLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgICAgICBjYWxsVHlwZSA9
IG1fY3VzdG9tUmVzb2x2ZXItPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1fY3VzdG9tUmVz
b2x2ZXIsIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYWN0dWFsIGxpbmUgbnVtYmVyIGFuZCBzb3Vy
Y2UgVVJMLgogICAgICAgICAgICAgbV9nbG9iYWxPYmplY3QtPmltcGwoKS0+Y29uc29sZSgpLT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90IGhhdmUgYSBsb29rdXBOYW1lc3BhY2VVUkkg
bWV0aG9kLiIsIDAsIFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXJyb3JIYW5kbGVyLmNwcAppbmRleCBhNzQyMTBhNzI4YjliN2VhYjI5M2ZlYTA1ZWM2ODg5Yjc2
MWRiMWJkLi43NmE1ZDcxN2JjY2U1YTE0NTExOWVmNjBkNjYzYjIxODE3YzBlNmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC03NCw3ICs3
NCw3IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRhVmlydHVhbChjYWxsRGF0
YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7CiAKICAgICBpZiAoY2FsbFR5cGUgIT0g
Q2FsbFR5cGVOb25lKSB7CiAgICAgICAgIFJlZlB0cjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVk
Y3Rvcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCmluZGV4IGRhNTIwMDNmNjk2NDRhNjJkYTAxY2M1ZDVkNmFhNzg1YzFmYTY3NzEuLmE5
NzllMDhmMzIyNjM0NmIxMzI5Y2E2MDUzOTE1MjQyYWY2YmE0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBA
IHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlTm9uZSkgewogICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0gSlNWYWx1ZSgp
OwotICAgICAgICBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRhVmlydHVhbChjYWxs
RGF0YSk7CisgICAgICAgIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0
Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIH0KIAogICAgIGlmIChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNzBlYjZlMTc1ZWYzOTgx
NGM2ZThhYmNiMjBkNTM3YWZmMzVkZmM3NC4uZGY3YjQyYzcwZjhmMzI4ZDlkMDdkNWYwMjU2ZTYz
NzY5OWFlNDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTk5LDExICs5OSw2IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotQ2FsbFR5cGUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxE
YXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEp
OwotfQotCiBDYWxsVHlwZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0g
Y2FsbEhUTUxBbGxDb2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA4MGQ1OTRlZjU4ODk0
YzU2ZGMxN2RiODQzNTcwY2JkYmExN2Y0N2E1Li4zMGUxNTc4MTM3Y2NjZDI2MDFiYjQ5NDkxZjli
MTNmNzMxZjkyNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDgsMTEgKzQ4LDYgQEAgYm9vbCBK
U0hUTUxBcHBsZXRFbGVtZW50OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnQKICAgICByZXR1cm4gcnVudGltZU9iamVjdEN1c3RvbVB1dChleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90KTsKIH0KIAotQ2FsbFR5cGUgSlNIVE1M
QXBwbGV0RWxlbWVudDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsK
LSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBK
U0hUTUxBcHBsZXRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEdldENhbGxEYXRhKHN0YXRpY19j
YXN0PEpTSFRNTEFwcGxldEVsZW1lbnQqPihjZWxsKSwgY2FsbERhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggNWM0YjcwYTFhMTJhMjZkYWNmNDFhMDY4ZDRiNTUyYmFhZWZlNjVkZS4uNWI1YzQxMTJi
NmQ2ODQ5MTFlODIwOGJjZjM1ZmVhNTlhMDVhMjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCkBAIC00OCwx
MSArNDgsNiBAQCBib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eQogICAgIHJldHVybiBydW50aW1lT2Jq
ZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRoaXMsIHNsb3QpOwogfQog
Ci1DYWxsVHlwZSBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0
YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsK
LX0KLQogQ2FsbFR5cGUgSlNIVE1MRW1iZWRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNl
bGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICByZXR1cm4gcnVudGltZU9iamVjdEdldENh
bGxEYXRhKHN0YXRpY19jYXN0PEpTSFRNTEVtYmVkRWxlbWVudCo+KGNlbGwpLCBjYWxsRGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IDdiMzkwZTM1ZDY1NGU1NzdjNzA5NDRlNmI4NmU2Yzg1N2Yw
ODhlNDMuLmFmYmVlMGViYjkzOWZhZWYwZDczOTlkZDkzOGQyMDZmMzFmM2Q3ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRD
dXN0b20uY3BwCkBAIC00OCwxMSArNDgsNiBAQCBib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OnB1
dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydAogICAg
IHJldHVybiBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHRoaXMsIHNsb3QpOwogfQogCi1DYWxsVHlwZSBKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRDYWxs
RGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVybiBnZXRDYWxsRGF0
YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIEpTSFRNTE9iamVjdEVsZW1lbnQ6Omdl
dENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIHJldHVy
biBydW50aW1lT2JqZWN0R2V0Q2FsbERhdGEoc3RhdGljX2Nhc3Q8SlNIVE1MT2JqZWN0RWxlbWVu
dCo+KGNlbGwpLCBjYWxsRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggMDMxYmMyMTJkNjFj
MzUxNjNmZDM0ZjFkZDM0MGIzMDRlY2UyZTE2OS4uOGMyYzEzZTdiYTExNjkzYzUwNmYwYTA5NGVm
ZmUxMWM2NGUyN2RlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtODUsNyArODUsNyBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmV2YWxGdW5j
dGlvbigpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
ZXZhbEZ1bmN0aW9uLT5nZXRDYWxsRGF0YVZpcnR1YWwoY2FsbERhdGEpOworICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZXZhbEZ1bmN0aW9uLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShldmFs
RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAKaW5kZXggMTQ3YmMzODZlMjNiYTk3MDkxMzA0ZjIwMzVmZWU4Njcz
ODEzMDU3ZS4uYTMzYTVmODUzYzY5ODAzMjk3MzRmMDQ5M2Q5MDVjZjNiNmQ1MGJlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgQ2FsbFR5cGUgcnVudGltZU9iamVjdEdldENh
bGxEYXRhKEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICBp
ZiAoSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdEZyb21QbHVnaW5W
aWV3QmFzZShlbGVtZW50KSkgewogICAgICAgICBDYWxsRGF0YSBzY3JpcHRPYmplY3RDYWxsRGF0
YTsKICAgICAgICAgCi0gICAgICAgIGlmIChzY3JpcHRPYmplY3QtPmdldENhbGxEYXRhVmlydHVh
bChzY3JpcHRPYmplY3RDYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQorICAgICAgICBpZiAoc2Ny
aXB0T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzY3JpcHRPYmplY3QsIHNjcmlw
dE9iamVjdENhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gQ2Fs
bFR5cGVOb25lOwogCiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxQbHVn
aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDlkZmQxMmMxOTA5MDFlM2FiNjc1Njg5NmMyMGFiOWUzNjM0OWZhZTkuLjJk
ODEzNDcwYzdjYTE3MzkyZGVmYjIxMWQ2MjUyMTgyZDk2ZjBhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC04MTcsNyAr
ODE3LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2aXJ0dWFsIEpTQzo6U2NvcGVDaGFpbk5vZGUqIHB1c2hFdmVudEhhbmRsZXJTY29wZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6U2NvcGVDaGFpbk5vZGUqKSBjb25zdDtcblxuIikgaWYgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHVzaEV2ZW50SGFuZGxlclNjb3BlIn07
CiAKICAgICAjIEN1c3RvbSBjYWxsIGZ1bmN0aW9ucwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdmlydHVhbCBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhVmlydHVhbChKU0M6OkNhbGxE
YXRhJik7XG5cbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNh
bGwifTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBl
IGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpO1xuXG4iKSBpZiAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn07CiAKICAgICAjIEN1c3Rv
bSBkZWxldGVQcm9wZXJ0eSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaAppbmRleCAyOTRkOTg0ZGRlMGJiOGE1ZjMwNzQwMDZlNTg1NWI2MGNhNDkxZTZl
Li5hOThhOTBlMTk3NTBhZGJmOTM2ZWRiNzY5NzFlMTcxNGE1YWRiNmVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtMTI4LDcgKzEyOCw2IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgdmlydHVhbCB2
b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxE
YXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
Jik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAxNjBmNzhmMTBm
Y2M3MWY4ODAyNGE5MjM0YWUwYTFiZTIzYjJjYjc3Li40Y2ZjMzg0YWU1NTYzZDdkMTgzZTcxZmVk
N2Q2YTAxMWZkMzUyNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCkBAIC0yNjQsMTEgKzI2NCw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJl
dHVybiBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIE9iamNGYWxs
YmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERh
dGEpCiB7CiAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5jcHAKaW5kZXggZmMxYzMxMTA1NjgzYmNjNDg1YTMwMTRlOWVmZTlmN2E2OTA2
ODU4Mi4uYzNhN2EzZDBhNjVkMDU3YTQyZGVmYjQwNGI0MDY3MWY5ODY4NTMxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTQ4OCwxMSArMTQ4OCw2IEBAIEVu
Y29kZWRKU1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUNhbGxUeXBl
IFF0UnVudGltZU1ldGFNZXRob2Q6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0YSYgY2FsbERh
dGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsKLX0KLQogQ2Fs
bFR5cGUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGw7CkBAIC0x
NjMwLDcgKzE2MjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9k
OjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPT0gMSkgewogICAgICAgICAgICAgICAgIGZ1bmNPYmplY3QgPSBleGVjLT5hcmd1bWVu
dCgwKS50b09iamVjdChleGVjKTsKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICAgICAgICAgICAgICBpZiAoZnVuY09iamVjdC0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxE
YXRhKSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnVuY09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZnVuY09iamVjdCwgY2FsbERhdGEpID09IENhbGxU
eXBlTm9uZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZC0+bV9pc0Nvbm5lY3QpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiUXRNZXRhTWV0aG9kLmNvbm5lY3Q6IHRhcmdldCBpcyBub3QgYSBmdW5jdGlv
biIpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTY0Myw3ICsxNjM4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIGZ1bmN0aW9uIHRvIGNh
bGwKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKmFzT2JqID0gZXhlYy0+YXJndW1lbnQo
MSkudG9PYmplY3QoZXhlYyk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXNPYmotPmdldENhbGxEYXRhVmlydHVhbChjYWxs
RGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhc09iai0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoYXNPYmosIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5v
bmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIHZlcnNpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmNPYmplY3QgPSBhc09iajsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE2NTYsNyArMTY1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSB2YWwgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgZnVuY0lkZW50KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBhc0Z1bmNPYmogPSB2YWwudG9PYmpl
Y3QoZXhlYyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhc0Z1bmNPYmotPmdldENh
bGxEYXRhVmlydHVhbChjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYXNGdW5jT2JqLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShhc0Z1
bmNPYmosIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jT2JqZWN0ID0gYXNGdW5jT2JqOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZC0+bV9pc0Nvbm5lY3Qp
CkBAIC0xNzQwLDExICsxNzM1LDYgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotQ2FsbFR5cGUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4g
Z2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7
CiAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbDsKQEAgLTE4NzQsNyArMTg2NCw4
IEBAIGludCBRdENvbm5lY3Rpb25PYmplY3Q6OnF0X21ldGFjYWxsKFFNZXRhT2JqZWN0OjpDYWxs
IF9jLCBpbnQgX2lkLCB2b2lkICoqX2EpCiBzdGF0aWMgYm9vbCBpc0phdmFTY3JpcHRGdW5jdGlv
bihKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgcmV0
dXJuIHRvSlMob2JqZWN0KS0+Z2V0Q2FsbERhdGFWaXJ0dWFsKGNhbGxEYXRhKSA9PSBDYWxsVHlw
ZUpTOworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKKyAgICByZXR1cm4g
anNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGpzT2JqZWN0LCBjYWxsRGF0YSkg
PT0gQ2FsbFR5cGVKUzsKIH0KIAogdm9pZCBRdENvbm5lY3Rpb25PYmplY3Q6OmV4ZWN1dGUodm9p
ZCoqIGFyZ3YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAppbmRleCBmMjc0N2Ix
NmZhYmUwMjJhMDIyNzAxOWM3OTBiZDRmNTgzNTExYzZhLi45ODE5N2Y1OTk4Mjc0NDE5YzEwMmMz
ZTM4NTk2OTQzYjVmYjY2ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgK
QEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUXRSdW50aW1lTWV0YU1l
dGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgUGFz
c1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5
JiBzaWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQogICAgIHsKLSAgICAgICAgU3RydWN0dXJl
KiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFF0UnVu
dGltZU1ldGhvZD4oZXhlYyk7CisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxRdFJ1bnRpbWVNZXRhTWV0aG9kPihleGVj
KTsKICAgICAgICAgUXRSdW50aW1lTWV0YU1ldGhvZCogbWV0aG9kID0gbmV3IChhbGxvY2F0ZUNl
bGw8UXRSdW50aW1lTWV0YU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFF0UnVudGltZU1ldGFNZXRo
b2QoZXhlYywgZG9tU3RydWN0dXJlLCBuYW1lKTsKICAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVh
dGlvbihleGVjLCBuYW1lLCBpbnN0YW5jZSwgaW5kZXgsIHNpZ25hdHVyZSwgYWxsb3dQcml2YXRl
KTsKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKQEAgLTE3MCw5ICsxNzAsMTQgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKLQorICAgIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsICBTdHJ1Y3R1cmVGbGFncyksICZz
X2luZm8pOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZU1ldGFNZXRob2REYXRh
KiBkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRSdW50aW1lTWV0YU1l
dGhvZERhdGEqPihkX3B0cik7fQogCkBAIC0xODAsNyArMTg1LDYgQEAgcHJpdmF0ZToKICAgICBR
dFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkm
IHNpZ25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpOwogCi0gICAgdmlydHVhbCBDYWxsVHlwZSBn
ZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgc3RhdGljIEpTVmFsdWUgbGVu
Z3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTE5
NSw3ICsxOTksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgYm9v
bCBpc0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBpbmRleCwg
Y29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQogICAgIHsKLSAgICAgICAgU3RydWN0dXJlKiBk
b21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFF0UnVudGlt
ZU1ldGhvZD4oZXhlYyk7CisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29y
ZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPihl
eGVjKTsKICAgICAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCogbWV0aG9kID0gbmV3IChh
bGxvY2F0ZUNlbGw8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2QoZXhlYywgZG9tU3RydWN0dXJlLCBuYW1lKTsKICAgICAg
ICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVjLCBuYW1lLCBpc0Nvbm5lY3QsIGluc3RhbmNl
LCBpbmRleCwgc2lnbmF0dXJlKTsKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKQEAgLTIwOCw2ICsy
MTIsMTEgQEAgcHVibGljOgogIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsICBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2REYXRhKiBkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEqPihkX3B0cik7fQogCkBAIC0yMTUsNyArMjI0LDYg
QEAgcHJpdmF0ZToKICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPiwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUpOwogCi0g
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmKTsKICAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEV4ZWNTdGF0ZSogZXhlYyk7CiAg
ICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmlu
ZGV4IDlmZGUzYjJmMWI2MjdiMDdjNmViZDAwZGQ3YWFiMmJjMWMxY2IwZWYuLjU5NTMwYWU3N2Q2
NjM5MzIyYjJiOTg4ZjMwNmM2YTAwYzI2ODg4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcApAQCAtMTI5LDExICsxMjksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1DYWxsVHlwZSBSdW50aW1lTWV0
aG9kOjpnZXRDYWxsRGF0YVZpcnR1YWwoQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJldHVy
biBnZXRDYWxsRGF0YSh0aGlzLCBjYWxsRGF0YSk7Ci19Ci0KIENhbGxUeXBlIFJ1bnRpbWVNZXRo
b2Q6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUnVudGltZU1ldGhvZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmgKaW5kZXggMjllMzY2NDg0NGYxYjYxNWQ2Mzg0ZjEyODJhZDAy
MWEwM2U0MjFmZi4uYzVmNjZhNjJmNjFiODJjZTY5NTc5MzExMDUwMDlhYmNjMTA4MDRjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTYyLDcgKzYyLDYgQEAgcHJv
dGVjdGVkOgogICAgIFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBC
aW5kaW5nczo6TWV0aG9kTGlzdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rp
b246OlN0cnVjdHVyZUZsYWdzOwotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0
dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcAppbmRleCBhODVmOWE5MzU4NDhjMDU0NzBlODNlNDM2Nzg4NjE0MTVhZGVhYmMxLi4x
MzM4Y2Y4NjVjZTRjZjRhYmRlMDZhOTRkYTQyZjc2NDEyNDQ3MTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTI3NiwxMSArMjc2LDYgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotQ2FsbFR5cGUg
UnVudGltZU9iamVjdDo6Z2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsK
LSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhpcywgY2FsbERhdGEpOwotfQotCiBDYWxsVHlwZSBS
dW50aW1lT2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0
YSkKIHsKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVudGlt
ZU9iamVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRl
eCBmNzMzMDRmODdiYWQ2MzM1YTNjNjE2ZGFkNzgzM2YwY2VhMTk1ZjFmLi4wNjZkNzczN2UzMjQ2
NGU1ODYyMTE4NWU2NGE1NzMzZGIxZWVkZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRl
bGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVs
dFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKENhbGxEYXRhJik7CiAgICAgc3RhdGlj
IENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgIHN0YXRp
YyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRiYzMzNTZlMDBjNDhhZWY4YzY4ODA3ZmQ1ZmUwZmY5YjVj
NzI2NjkuLjQ0MjFiN2JlN2JjMDQ4YzU0MTZiOTY0OWY1MTI0MDk0NDhmMDRjODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMC0xMCAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBnZXRDYWxsRGF0YVZpcnR1
YWwgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGFsbCBnZXRDYWxsRGF0YVZpcnR1YWwgbWV0aG9kcyBhbmQgcmVwbGFjZWQgdGhl
aXIgY2FsbCBzaXRlcyAKKyAgICAgICAgd2l0aCBhbiBleHBsaWNpdCBsb29rdXAgaW4gdGhlIE1l
dGhvZFRhYmxlLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6Omludm9rZURlZmF1bHQpOgorCiAyMDExLTEwLTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
OTY5OTYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNjk5MGY3MDZlNWI4YmU5
ZWM3YzMzMzVkYmFhZmY3YTI5ZjU2Zjk3MC4uNjYyNzIwMzcxODk3ZGM5NDg2ZTU0NzAwZjZmZDA2
MTg1OWE3YjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtOTQyLDcgKzk0
Miw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2VEZWZhdWx0KHVp
bnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZnJh
bWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsK
ICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOyAgICAKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+Z2V0Q2FsbERhdGFW
aXJ0dWFsKGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG9iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MTYxNGRlODc3YzAwZjdhMjc0MmMwNWMyN2QwOTQxMWJkYjkzODI0Zi4uYjcxMGNlYzNlZmY0YTIy
M2U2MDFiZGYyZDk3NGQ1YThmMTI5ODE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDExLTEwLTEwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIGdldENhbGxEYXRhVmlydHVhbCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYWxsIGdldENhbGxEYXRhVmly
dHVhbCBtZXRob2RzIGFuZCByZXBsYWNlZCB0aGVpciBjYWxsIHNpdGVzIAorICAgICAgICB3aXRo
IGFuIGV4cGxpY2l0IGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKwogMjAxMS0xMC0xMCAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVpbGQg
d2l0aCBxcmVhbCA9PSBmbG9hdCBvbiBNZWVHbyAxLjIgSGFybWF0dGFuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5j
cHAKaW5kZXggZmE4OGZlNWUwYzhlMDE1NGZjNTZhYjExYTg4M2FiNmJkZTMwODliMS4uZDNkMTAw
YTg0OTVkZDBjOTMyZTNjYjgyZmVmZTM3ZDVlNzA0YjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcApA
QCAtNzcsMTEgKzc3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CiB9CiAKLUNhbGxUeXBlIEpTTlBNZXRob2Q6OmdldENhbGxEYXRhVmlydHVhbChDYWxsRGF0
YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKHRoaXMsIGNhbGxEYXRhKTsK
LX0KLQogQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQogewogICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxNZXRob2Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuaAppbmRleCBhOGZiNjI3ZjVmNzcwOTRiNTdmOTk2NTJiODUzY2FiMWNmZGZj
NGUwLi5mZjA5NjFjMzgxMTYxMDQxYzk4OWViNmU5NzU3NWM2ZjlhNjBiZTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0
aG9kLmgKQEAgLTYyLDcgKzYyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAg
IH0KIAotICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YVZpcnR1YWwoSlNDOjpD
YWxsRGF0YSYpOwogICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlND
ZWxsKiwgSlNDOjpDYWxsRGF0YSYpOwogICAgIAogICAgIE5QSWRlbnRpZmllciBtX25wSWRlbnRp
ZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBlYzEzZTFjY2U5NDVlM2U3MWJhYWUyNjdiYjZm
NTczMGMyODc0NTFiLi41M2Y1ODYwMWMwYTk2NjgxYzg1NDE4YmNkMzRkY2FiNDJlMDBhMWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCkBAIC0yMTcsMTEgKzIxNyw2IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOUEpTT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0YXRpY19jYXN0PEpTTlBPYmplY3QqPihvYmplY3QpLT5j
YWxsT2JqZWN0KGV4ZWMpKTsKIH0KIAotQ2FsbFR5cGUgSlNOUE9iamVjdDo6Z2V0Q2FsbERhdGFW
aXJ0dWFsKENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEodGhp
cywgY2FsbERhdGEpOwotfQotCiBKU0M6OkNhbGxUeXBlIEpTTlBPYmplY3Q6OmdldENhbGxEYXRh
KEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBKU05Q
T2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKaW5kZXggZjNjMjg0M2MyN2Y4OGM4NDk2OWEyZmNmYjk2Mzc0YTIzYTQ4MDMyNi4u
MjNmZmM4ZmM5MjMyZGIzNGFmMDIxM2NmNzNlNzFjYWUyOTc1NjE2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
CkBAIC03OSw3ICs3OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGFWaXJ0dWFsKEpTQzo6Q2FsbERh
dGEmKTsKICAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCos
IEpTQzo6Q2FsbERhdGEmKTsKICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOwogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>