<?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>30328</bug_id>
          
          <creation_ts>2009-10-13 01:51:56 -0700</creation_ts>
          <short_desc>Web Inspector: Migrate profiles to the injected script-based schema.</short_desc>
          <delta_ts>2009-10-15 02:32:26 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>154299</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-10-13 01:51:56 -0700</bug_when>
    <thetext>Continuing Pavel&apos;s efforts on migrating Inspector interaction, I&apos;ve migrated CPU profiles retrieval to use injected script-based schema.

What had been changed:
 - profile trees are encoded into JS objects, without &apos;parent&apos; and &apos;head&apos; references, for further JSONification (see InjectedScript.serializeProfile);
 - on the Inspector&apos;s side, &apos;parent&apos; and &apos;head&apos; properties are restored (see ProfileView._assignParentsInProfile);
 - when populating existing profiles on Inspector re-opening, they are loaded lazily; initially, only profile titles are loaded (see ProfilesPanel._populateProfiles), a full profile is retrieved when opening the view (see ProfileView constructor).

I also discovered that C++ side of profile objects and their C++/JS bridges contain unused methods and props, I will remove in the next change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154302</commentid>
    <comment_count>1</comment_count>
      <attachid>41095</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-10-13 01:59:42 -0700</bug_when>
    <thetext>Created attachment 41095
proposed change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154394</commentid>
    <comment_count>2</comment_count>
      <attachid>41095</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-13 12:58:04 -0700</bug_when>
    <thetext>Comment on attachment 41095
proposed change

We now are spending twice as much memory for the profile during serialization. Do you think we could tweak native object a bit so that it we don&apos;t need additional wrapping?

&gt; +        ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, &quot;serializeProfile&quot;);
&gt; +        function.appendArgument(toJS(m_scriptState, it-&gt;second.get()));
&gt; +        ScriptValue serializedProfile = function.call();
&gt; +        m_frontend-&gt;didGetProfile(callId, serializedProfile);

Could you extract wrapping into a separate method? (I see two usages).

Otherwise looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154546</commentid>
    <comment_count>3</comment_count>
      <attachid>41153</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-10-14 01:25:51 -0700</bug_when>
    <thetext>Created attachment 41153
proposed change, comments addressed

OK, I removed &quot;parent&quot;, &quot;head&quot;, and other unneeded properties from the wrapper object, so additional serialization is no more needed. This also addresses the second comment, as there is no more call to a function from InjectedScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154547</commentid>
    <comment_count>4</comment_count>
      <attachid>41153</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-14 01:41:58 -0700</bug_when>
    <thetext>Comment on attachment 41153
proposed change, comments addressed

&gt; +    void getProfileHeaders(long callId);
&gt; +    void getProfile(long callId, unsigned uid);

These should be private in InspectorController.

&gt; +        function profileCallback(profile) {
&gt; +            self.profile = profile;
&gt; +            continueInitialization();
&gt; +        }

{ on next line

&gt; +        if (!this.profile._isStub)

Why do you end up with profiles in different states? I think you should resolve profile only here and only once.

Otherwise r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154552</commentid>
    <comment_count>5</comment_count>
      <attachid>41155</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-10-14 03:07:36 -0700</bug_when>
    <thetext>Created attachment 41155
proposed change, comments addressed

OK, now when a profile is added, only header is added actually. Thus, profiles are always loaded on demand when the view is about to be shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154563</commentid>
    <comment_count>6</comment_count>
      <attachid>41155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-14 06:30:21 -0700</bug_when>
    <thetext>Comment on attachment 41155
proposed change, comments addressed

Rejecting patch 41155 from review queue.

pfeldman@chromium.org does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/committers.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154565</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-14 06:32:55 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomBinding.h
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/JavaScriptProfileNode.cpp
	M	WebCore/inspector/front-end/ProfileView.js
	M	WebCore/inspector/front-end/ProfilesPanel.js
	M	WebCore/inspector/front-end/inspector.js
Committed r49558</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154573</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-14 07:55:20 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomBinding.h
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/JavaScriptProfileNode.cpp
	M	WebCore/inspector/front-end/ProfileView.js
	M	WebCore/inspector/front-end/ProfilesPanel.js
	M	WebCore/inspector/front-end/inspector.js
Committed r49560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154574</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-14 07:58:15 -0700</bug_when>
    <thetext>Guess what - profiler tests rely upon the API you have changed...

fast/profiler/anonymous-event-handler.html -&gt; failed
.
fast/profiler/anonymous-function-called-from-different-contexts.html -&gt; failed
.
fast/profiler/anonymous-function-calls-built-in-functions.html -&gt; failed
.
fast/profiler/anonymous-function-calls-eval.html -&gt; failed
.
fast/profiler/anonymous-functions-with-display-names.html -&gt; failed
.
fast/profiler/apply.html -&gt; failed
.
fast/profiler/built-in-function-calls-anonymous.html -&gt; failed
.
fast/profiler/built-in-function-calls-user-defined-function.html -&gt; failed
.
fast/profiler/call-nodelist-as-function.html -&gt; failed
..
fast/profiler/call.html -&gt; failed
.
fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope.html -&gt; failed
.
fast/profiler/compare-multiple-profiles.html -&gt; failed
.
fast/profiler/constructor.html -&gt; failed
.
fast/profiler/dead-time.html -&gt; failed
.
fast/profiler/document-dot-write.html -&gt; failed
.
fast/profiler/event-handler.html -&gt; failed
.
fast/profiler/execution-context-and-eval-on-same-line.html -&gt; failed
.
fast/profiler/inline-event-handler.html -&gt; failed
.
fast/profiler/many-calls-in-the-same-scope.html -&gt; failed
.
fast/profiler/multiple-and-different-scoped-anonymous-function-calls.html -&gt; failed
.
fast/profiler/multiple-and-different-scoped-function-calls.html -&gt; failed
.
fast/profiler/multiple-anonymous-functions-called-from-the-same-function.html -&gt; failed
.
fast/profiler/multiple-frames.html -&gt; failed
.
fast/profiler/named-functions-with-display-names.html -&gt; failed
.
fast/profiler/nested-anonymous-functon.html -&gt; failed
.
fast/profiler/nested-start-and-stop-profiler.html -&gt; failed
..
fast/profiler/one-execution-context.html -&gt; failed
.
fast/profiler/profile-calls-in-included-file.html -&gt; failed
.
fast/profiler/profile-with-no-title.html -&gt; failed
.
fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting.html -&gt; failed
.
fast/profiler/profiling-from-a-nested-location.html -&gt; failed
.
fast/profiler/simple-event-call.html -&gt; failed
.
fast/profiler/simple-no-level-change.html -&gt; failed
.
fast/profiler/start-and-stop-profiler-multiple-times.html -&gt; failed
.
fast/profiler/start-and-stop-profiling-in-the-same-function.html -&gt; failed
..
fast/profiler/stop-profiling-after-setTimeout.html -&gt; failed
.
fast/profiler/stop-then-function-call.html -&gt; failed
.
fast/profiler/throw-exception-from-eval.html -&gt; failed
.
fast/profiler/two-execution-contexts.html -&gt; failed
.
fast/profiler/user-defined-function-calls-built-in-functions.html -&gt; failed
.
fast/profiler/window-dot-eval.html -&gt; failed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154578</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-14 08:21:43 -0700</bug_when>
    <thetext>Maybe llround is not available on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154581</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-14 08:23:46 -0700</bug_when>
    <thetext>Sorry, comment added to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154654</commentid>
    <comment_count>12</comment_count>
      <attachid>41189</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-10-14 14:20:38 -0700</bug_when>
    <thetext>Created attachment 41189
proposed patch - now profiler tests pass

I&apos;m really sorry for putting you into a trouble, Pavel.

It appears that I was too aggressive in removing properties from the profile node wrapper---&quot;visible&quot; property is what profiler tests were missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154750</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-15 02:32:26 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomBinding.h
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/JavaScriptProfileNode.cpp
	M	WebCore/inspector/front-end/ProfileView.js
	M	WebCore/inspector/front-end/ProfilesPanel.js
	M	WebCore/inspector/front-end/inspector.js
Committed r49615</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41095</attachid>
            <date>2009-10-13 01:59:42 -0700</date>
            <delta_ts>2009-10-14 01:25:51 -0700</delta_ts>
            <desc>proposed change</desc>
            <filename>inject-profiles-patch</filename>
            <type>text/plain</type>
            <size>17912</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTY4YzExMC4uYzhiNjlkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAwOS0xMC0xMyAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1pZ3JhdGUgcHJvZmlsZXMgdG8g
dGhlIGluamVjdGVkIHNjcmlwdC1iYXNlZCBzY2hlbWEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzI4CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxl
SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omdl
dFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmdldFByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQcm9maWxlSGVhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6ZGlkR2V0UHJvZmlsZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0LnNlcmlhbGl6ZVByb2Zp
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcuY29udGludWVJbml0aWFsaXphdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcuZWxzZS5wcm9maWxlQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qcm9maWxlVmlldy5wcm90b3R5cGUuX21vdXNlRG93bkluRGF0YUdyaWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5fYXNzaWduUGFyZW50c0luUHJvZmls
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVByb2Zp
bGVzLnBvcHVsYXRlQ2FsbGJhY2sudmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVQcm9maWxlcy5wb3B1bGF0ZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVQcm9m
aWxlcyk6CisKIDIwMDktMTAtMTIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKaW5kZXggNzNmYTI2
OC4uMzkxY2FjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJh
Y2tlbmRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNr
ZW5kQ3VzdG9tLmNwcApAQCAtNjYsMTAgKzY2LDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSmF2
YVNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGUuaCIKICNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9m
aWxlLmg+Ci0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4KICNlbmRpZgogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwpAQCAtMjUzLDIxICsyNTAsNiBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFj
a2VuZDo6Y3VycmVudENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQog
ICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZ2xvYmFsRXhlYywgdG9K
UyhleGVjLCBjYWxsRnJhbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnBy
b2ZpbGVzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmKQotewotICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgcmVzdWx0OwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW1wbCgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpYykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlPiA+JiBwcm9maWxlcyA9IGlj
LT5wcm9maWxlcygpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9maWxlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0pTKGV4ZWMsIHByb2ZpbGVzW2ldLmdl
dCgpKSk7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgcmVzdWx0KTsKLX0KLQog
I2VuZGlmCiAKIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpub2RlRm9ySWQoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCBkOGNjMzU0Li45MmNkN2U2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaApAQCAtNDQ4LDcgKzQ0OCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2Vy
TmV4dFNpYmxpbmcpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQcmV2aW91
c1NpYmxpbmcpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFBy
b2ZpbGVzKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kSGlnaGxp
Z2h0RE9NTm9kZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEFk
ZFJlc291cmNlU291cmNlVG9GcmFtZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVj
dG9yQmFja2VuZEFkZFNvdXJjZVRvRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmNwcAppbmRleCAxMjczNTEyLi40YTgxMGRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmNwcApAQCAtMjc4LDEzICsyNzgsNiBAQCBib29sIEluc3BlY3RvckJhY2tlbmQ6
OnRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLWNvbnN0IFByb2ZpbGVzQXJyYXkmIEluc3BlY3RvckJhY2tlbmQ6OnByb2ZpbGVzKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4g
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5wcm9maWxlcygpOwotICAgIHJldHVybiBtX2VtcHR5UHJv
ZmlsZXM7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c3RhcnRQcm9maWxpbmcoKQogewog
ICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCkBAIC0zMTYsNiArMzA5LDE4IEBAIGJvb2wg
SW5zcGVjdG9yQmFja2VuZDo6cHJvZmlsZXJFbmFibGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQp
Cit7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5nZXRQcm9maWxlSGVhZGVycyhjYWxsSWQpOworfQorCit2b2lkIEluc3BlY3Rv
ckJhY2tlbmQ6OmdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKK3sKKyAgICBp
ZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmdldFByb2ZpbGUoY2FsbElkLCB1aWQpOworfQorCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmVu
YWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xs
ZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5kZXggZDdlZWE4Yy4uNmYwMWU3
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaApAQCAtMTAwLDggKzEwMCw2IEBA
IHB1YmxpYzoKICAgICBib29sIHRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMo
KSBjb25zdDsKLQogICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQcm9m
aWxpbmcoKTsKIApAQCAtMTA5LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVQ
cm9maWxlcihib29sIGFsd2F5cyk7CiAgICAgYm9vbCBwcm9maWxlckVuYWJsZWQoKTsKIAorICAg
IHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQpOworICAgIHZvaWQgZ2V0UHJvZmls
ZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKTsKKwogICAgIHZvaWQgZW5hYmxlRGVidWdnZXIo
Ym9vbCBhbHdheXMpOwogICAgIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKTsKICAg
ICBib29sIGRlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0OwpAQCAtMTcwLDkgKzE3MSw2IEBAIHByaXZh
dGU6CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAg
ICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBQcm9maWxlc0FycmF5IG1fZW1wdHlQcm9maWxlczsKLSNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlk
bAppbmRleCA4ODAzNzY1Li5lNGE5MjcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmlkbApAQCAtMTAwLDcgKzEwMCw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBz
dGFydFByb2ZpbGluZygpOwogICAgICAgICB2b2lkIHN0b3BQcm9maWxpbmcoKTsKIAotICAgICAg
ICBbQ3VzdG9tXSBBcnJheSBwcm9maWxlcygpOworICAgICAgICB2b2lkIGdldFByb2ZpbGVIZWFk
ZXJzKGluIGxvbmcgY2FsbElkKTsKKyAgICAgICAgdm9pZCBnZXRQcm9maWxlKGluIGxvbmcgY2Fs
bElkLCBpbiB1bnNpZ25lZCBsb25nIHVpZCk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBkaXNwYXRj
aE9uSW5qZWN0ZWRTY3JpcHQoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBtZXRob2ROYW1l
LCBpbiBET01TdHJpbmcgYXJndW1lbnRzLCBpbiBib29sZWFuIGFzeW5jKTsKICAgICAgICAgdm9p
ZCBnZXRDaGlsZE5vZGVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGZmMDBiZjAuLmRiMDc3ODgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMzQ2LDEx
ICsxMzQ2LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVm
UHRyPFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKLSAgICBtX3Byb2ZpbGVz
LmFwcGVuZChwcm9maWxlKTsKKyAgICBtX3Byb2ZpbGVzLmFkZChwcm9maWxlLT51aWQoKSwgcHJv
ZmlsZSk7CiAKICAgICBpZiAobV9mcm9udGVuZCkgewogICAgICAgICBKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwotICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9maWxlKHRvSlMo
bV9zY3JpcHRTdGF0ZSwgcHJvZmlsZS5nZXQoKSkpOworICAgICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV9pbmplY3RlZFNjcmlwdE9iaiwgInNlcmlhbGl6
ZVByb2ZpbGUiKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodG9KUyhtX3Njcmlw
dFN0YXRlLCBwcm9maWxlLmdldCgpKSk7CisgICAgICAgIFNjcmlwdFZhbHVlIHNlcmlhbGl6ZWRQ
cm9maWxlID0gZnVuY3Rpb24uY2FsbCgpOworICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9maWxl
KHNlcmlhbGl6ZWRQcm9maWxlKTsKICAgICB9CiAKICAgICBhZGRQcm9maWxlRmluaXNoZWRNZXNz
YWdlVG9Db25zb2xlKHByb2ZpbGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CkBAIC0xMzgwLDYg
KzEzODMsMzQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTdGFydFByb2ZpbGluZ01l
c3NhZ2VUb0NvbnNvbGUoY29uc3QgVVN0cmluZyYgdGl0bGUKICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpnZXRQcm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCkKK3sKKyAgICBpZiAoIW1fZnJvbnRl
bmQpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRBcnJheSByZXN1bHQgPSBtX2Zyb250ZW5k
LT5uZXdTY3JpcHRBcnJheSgpOworICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJv
ZmlsZXMuYmVnaW4oKSwgcHJvZmlsZXNFbmQgPSBtX3Byb2ZpbGVzLmVuZCgpOworICAgIGZvciAo
aW50IGkgPSAwOyBpdCAhPSBwcm9maWxlc0VuZDsgKytpdCwgKytpKSB7CisgICAgICAgIFNjcmlw
dE9iamVjdCBoZWFkZXIgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKKyAgICAgICAg
aGVhZGVyLnNldCgidGl0bGUiLCBpdC0+c2Vjb25kLT50aXRsZSgpKTsKKyAgICAgICAgaGVhZGVy
LnNldCgidWlkIiwgaXQtPnNlY29uZC0+dWlkKCkpOworICAgICAgICByZXN1bHQuc2V0KGksIGhl
YWRlcik7CisgICAgfQorICAgIG1fZnJvbnRlbmQtPmRpZEdldFByb2ZpbGVIZWFkZXJzKGNhbGxJ
ZCwgcmVzdWx0KTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRQcm9maWxlKGxv
bmcgY2FsbElkLCB1bnNpZ25lZCB1aWQpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kKQorICAgICAg
ICByZXR1cm47CisgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5k
KHVpZCk7CisgICAgaWYgKGl0ICE9IG1fcHJvZmlsZXMuZW5kKCkpIHsKKyAgICAgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1faW5qZWN0ZWRTY3JpcHRPYmos
ICJzZXJpYWxpemVQcm9maWxlIik7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRv
SlMobV9zY3JpcHRTdGF0ZSwgaXQtPnNlY29uZC5nZXQoKSkpOworICAgICAgICBTY3JpcHRWYWx1
ZSBzZXJpYWxpemVkUHJvZmlsZSA9IGZ1bmN0aW9uLmNhbGwoKTsKKyAgICAgICAgbV9mcm9udGVu
ZC0+ZGlkR2V0UHJvZmlsZShjYWxsSWQsIHNlcmlhbGl6ZWRQcm9maWxlKTsKKyAgICB9Cit9CisK
IFVTdHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9m
aWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSkKIHsKICAgICBpZiAo
aW5jcmVtZW50UHJvZmlsZU51bWJlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAppbmRleCAxZDE3ODk5Li5iZGZmODhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC0yNjUsNyArMjY1LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkUHJv
ZmlsZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKICAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hlZE1l
c3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRTdGFydFBy
b2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIGNvbnN0
IFByb2ZpbGVzQXJyYXkmIHByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQor
ICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQpOworICAgIHZvaWQgZ2V0UHJv
ZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKTsKIAogICAgIGJvb2wgaXNSZWNvcmRpbmdV
c2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjb3JkaW5nVXNlckluaXRp
YXRlZFByb2ZpbGU7IH0KIApAQCAtMzE1LDYgKzMxNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFp
bik7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICB0eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQgaW50LCBSZWZQdHI8SlNDOjpQcm9maWxlPiA+IFByb2ZpbGVzTWFwOworCiAg
ICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmdTb29uKCk7CiAgICAgdm9pZCB0b2dn
bGVSZWNvcmRCdXR0b24oYm9vbCk7CiAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlckZyb21Gcm9udGVu
ZChib29sIGFsd2F5cyk7CkBAIC0zOTQsNyArMzk3LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9j
dXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7CiAgICAgdW5zaWduZWQgbV9uZXh0VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7CiAgICAgVGltZXI8SW5zcGVjdG9yQ29udHJvbGxlcj4g
bV9zdGFydFByb2ZpbGluZzsKLSAgICBQcm9maWxlc0FycmF5IG1fcHJvZmlsZXM7CisgICAgUHJv
ZmlsZXNNYXAgbV9wcm9maWxlczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmQuY3BwCmluZGV4IGFkOTM1YTguLmJlZjY3ZGUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kOjpmYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlKGNvbnN0IEpTQzo6U291cmNlQ29k
ZSYgc291cmNlLAogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZFByb2ZpbGUoY29uc3QgSlNDOjpKU1ZhbHVlJiBwcm9maWxlKQordm9pZCBJbnNw
ZWN0b3JGcm9udGVuZDo6YWRkUHJvZmlsZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSkKIHsK
ICAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwo
ImFkZFByb2ZpbGUiKSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KHByb2ZpbGUpOwpA
QCAtMjc1LDYgKzI3NSwyMiBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpzZXRSZWNvcmRpbmdQ
cm9maWxlKGJvb2wgaXNQcm9maWxpbmcpCiAgICAgZnVuY3Rpb24tPmNhbGwoKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlkR2V0UHJvZmlsZUhlYWRlcnMoaW50IGNhbGxJZCwgY29u
c3QgU2NyaXB0QXJyYXkmIGhlYWRlcnMpCit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2Fs
bD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJkaWRHZXRQcm9maWxlSGVhZGVycyIpKTsKKyAg
ICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoY2FsbElkKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5k
QXJndW1lbnQoaGVhZGVycyk7CisgICAgZnVuY3Rpb24tPmNhbGwoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JGcm9udGVuZDo6ZGlkR2V0UHJvZmlsZShpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRWYWx1
ZSYgcHJvZmlsZSkKK3sKKyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihu
ZXdGdW5jdGlvbkNhbGwoImRpZEdldFByb2ZpbGUiKSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFy
Z3VtZW50KGNhbGxJZCk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KHByb2ZpbGUpOwor
ICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBhdXNl
ZFNjcmlwdChjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBPd25QdHI8U2Ny
aXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoInBhdXNlZFNjcmlwdCIp
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IGY3MDU1YmQuLjk5Yzdl
ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtODksOCArODksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHByb2ZpbGVyV2FzRGlzYWJsZWQo
KTsKICAgICAgICAgdm9pZCBwYXJzZWRTY3JpcHRTb3VyY2UoY29uc3QgSlNDOjpTb3VyY2VDb2Rl
Jik7CiAgICAgICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShjb25zdCBKU0M6OlNv
dXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgICAgIHZvaWQgYWRkUHJvZmlsZShjb25zdCBKU0M6OkpTVmFsdWUmIHByb2ZpbGUp
OworICAgICAgICB2b2lkIGFkZFByb2ZpbGUoY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpOwog
ICAgICAgICB2b2lkIHNldFJlY29yZGluZ1Byb2ZpbGUoYm9vbCBpc1Byb2ZpbGluZyk7CisgICAg
ICAgIHZvaWQgZGlkR2V0UHJvZmlsZUhlYWRlcnMoaW50IGNhbGxJZCwgY29uc3QgU2NyaXB0QXJy
YXkmIGhlYWRlcnMpOworICAgICAgICB2b2lkIGRpZEdldFByb2ZpbGUoaW50IGNhbGxJZCwgY29u
c3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpOwogICAgICAgICB2b2lkIHBhdXNlZFNjcmlwdChjb25z
dCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcyk7CiAgICAgICAgIHZvaWQgcmVzdW1lZFNjcmlwdCgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0
ZWRTY3JpcHQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQu
anMKaW5kZXggNzVjOGNlZC4uOTBlMTVmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbmplY3RlZFNjcmlwdC5qcwpAQCAtMTA4Myw2ICsxMDgzLDI4IEBAIEluamVjdGVkU2Ny
aXB0LmV4ZWN1dGVTcWwgPSBmdW5jdGlvbihjYWxsSWQsIGRhdGFiYXNlSWQsIHF1ZXJ5KQogICAg
IHJldHVybiB0cnVlOwogfQogCitJbmplY3RlZFNjcmlwdC5zZXJpYWxpemVQcm9maWxlID0gZnVu
Y3Rpb24ocHJvZmlsZSkKK3sKKyAgICBmdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUpIHsKKyAg
ICAgICAgcmV0dXJuIHsgY2FsbFVJRDogbm9kZS5jYWxsVUlELCBzZWxmVGltZTogbm9kZS5zZWxm
VGltZSwgdG90YWxUaW1lOiBub2RlLnRvdGFsVGltZSwgZnVuY3Rpb25OYW1lOiBub2RlLmZ1bmN0
aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgbnVtYmVyT2ZDYWxsczogbm9kZS5udW1iZXJPZkNh
bGxzLCB1cmw6IG5vZGUudXJsLCBsaW5lTnVtYmVyOiBub2RlLmxpbmVOdW1iZXIsIGNoaWxkcmVu
OiBbXSB9OworICAgIH0KKworICAgIHZhciBzUHJvZmlsZSA9IHsgdGl0bGU6IHByb2ZpbGUudGl0
bGUsIGhlYWQ6IHNlcmlhbGl6ZU5vZGUocHJvZmlsZS5oZWFkKSwgdWlkOiBwcm9maWxlLnVpZCB9
OworICAgIHZhciBub2Rlc1RvVHJhdmVyc2UgPSBbIHsgc3JjOiBwcm9maWxlLmhlYWQuY2hpbGRy
ZW4sIGRzdDogc1Byb2ZpbGUuaGVhZC5jaGlsZHJlbiB9IF07CisgICAgd2hpbGUgKG5vZGVzVG9U
cmF2ZXJzZS5sZW5ndGggPiAwKSB7CisgICAgICAgIHZhciBwYWlyID0gbm9kZXNUb1RyYXZlcnNl
LnNoaWZ0KCk7CisgICAgICAgIHZhciBzcmMgPSBwYWlyLnNyYywgZHN0ID0gcGFpci5kc3Q7Cisg
ICAgICAgIHZhciBsZW5ndGggPSBzcmMubGVuZ3RoOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBkc3QucHVzaChzZXJpYWxpemVOb2RlKHNy
Y1tpXSkpOworICAgICAgICAgICAgaWYgKHNyY1tpXS5jaGlsZHJlbi5sZW5ndGggPiAwKQorICAg
ICAgICAgICAgICAgIG5vZGVzVG9UcmF2ZXJzZS5wdXNoKHsgc3JjOiBzcmNbaV0uY2hpbGRyZW4s
IGRzdDogZHN0W2ldLmNoaWxkcmVuIH0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBz
UHJvZmlsZTsKK30KKwogT2JqZWN0LnR5cGUgPSBmdW5jdGlvbihvYmopCiB7CiAgICAgaWYgKG9i
aiA9PT0gbnVsbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpp
bmRleCAyYjhjNmNlLi4zMDM3ZGE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVWaWV3LmpzCkBAIC03OCwxMiArNzgsMjggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3
ID0gZnVuY3Rpb24ocHJvZmlsZSkKIAogICAgIHRoaXMucHJvZmlsZSA9IHByb2ZpbGU7CiAKLSAg
ICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUgPSB0aGlzLmJvdHRvbVVwUHJvZmlsZURhdGFHcmlk
VHJlZTsKLSAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuc29ydChXZWJJbnNwZWN0b3IuUHJv
ZmlsZURhdGFHcmlkVHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3IoInNlbGZUaW1lIiwgZmFsc2UpKTsK
LQotICAgIHRoaXMucmVmcmVzaCgpOworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICBmdW5jdGlv
biBjb250aW51ZUluaXRpYWxpemF0aW9uKCkgeworICAgICAgICBzZWxmLl9hc3NpZ25QYXJlbnRz
SW5Qcm9maWxlKCk7CisgICAgICAKKyAgICAgICAgc2VsZi5wcm9maWxlRGF0YUdyaWRUcmVlID0g
c2VsZi5ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7CisgICAgICAgIHNlbGYucHJvZmlsZURh
dGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5
Q29tcGFyYXRvcigic2VsZlRpbWUiLCBmYWxzZSkpOworICAgICAKKyAgICAgICAgc2VsZi5yZWZy
ZXNoKCk7CisgICAgIAorICAgICAgICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAg
fQogCi0gICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworICAgIGlmICghdGhpcy5wcm9m
aWxlLl9pc1N0dWIpCisgICAgICAgIGNvbnRpbnVlSW5pdGlhbGl6YXRpb24oKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgZnVuY3Rpb24gcHJvZmlsZUNhbGxiYWNrKHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIHNlbGYucHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBjb250aW51ZUluaXRpYWxp
emF0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5D
YWxsYmFjay53cmFwKHByb2ZpbGVDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIuZ2V0UHJvZmlsZShjYWxsSWQsIHRoaXMucHJvZmlsZS51aWQpOworICAgIH0KIH0KIAogV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKQEAgLTUzMyw2ICs1NDksMjQgQEAg
V2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9
LAorCisgICAgX2Fzc2lnblBhcmVudHNJblByb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBoZWFkID0gdGhpcy5wcm9maWxlLmhlYWQ7CisgICAgICAgIHZhciBub2Rlc1RvVHJh
dmVyc2UgPSBbIHsgcGFyZW50OiBoZWFkLCBjaGlsZHJlbjogaGVhZC5jaGlsZHJlbiB9IF07Cisg
ICAgICAgIHdoaWxlIChub2Rlc1RvVHJhdmVyc2UubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
dmFyIHBhaXIgPSBub2Rlc1RvVHJhdmVyc2Uuc2hpZnQoKTsKKyAgICAgICAgICAgIHZhciBwYXJl
bnQgPSBwYWlyLnBhcmVudDsKKyAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHBhaXIuY2hpbGRy
ZW47CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGNo
aWxkcmVuW2ldLmhlYWQgPSBoZWFkOworICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLnBhcmVu
dCA9IHBhcmVudDsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2hpbGRyZW4ubGVu
Z3RoID4gMCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXNUb1RyYXZlcnNlLnB1c2goeyBwYXJl
bnQ6IGNoaWxkcmVuW2ldLCBjaGlsZHJlbjogY2hpbGRyZW5baV0uY2hpbGRyZW4gfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggYWIyM2YxZi4uZTY1OGE5OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTQwMSwxNSArNDAx
LDE5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB2YXIgcHJvZmlsZXMgPSBJbnNwZWN0b3JDb250cm9sbGVyLnByb2ZpbGVzKCk7Ci0g
ICAgICAgIHZhciBwcm9maWxlc0xlbmd0aCA9IHByb2ZpbGVzLmxlbmd0aDsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwcm9maWxlc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIg
cHJvZmlsZSA9IHByb2ZpbGVzW2ldOwotICAgICAgICAgICAgdGhpcy5hZGRQcm9maWxlKHByb2Zp
bGUpOworICAgICAgICBmdW5jdGlvbiBwb3B1bGF0ZUNhbGxiYWNrKHByb2ZpbGVIZWFkZXJzKSB7
CisgICAgICAgICAgICBwcm9maWxlSGVhZGVycy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJu
IGEudWlkIC0gYi51aWQ7IH0pOworICAgICAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXJzTGVuZ3Ro
ID0gcHJvZmlsZUhlYWRlcnMubGVuZ3RoOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcm9maWxlSGVhZGVyc0xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgcHJvZmlsZUhl
YWRlcnNbaV0uX2lzU3R1YiA9IHRydWU7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFk
ZFByb2ZpbGUocHJvZmlsZUhlYWRlcnNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBdKQorICAgICAgICAgICAgICAgIGNwdVByb2ZpbGVz
LmNoaWxkcmVuWzBdLnNlbGVjdCgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNwdVByb2Zp
bGVzLmNoaWxkcmVuWzBdKQotICAgICAgICAgICAgY3B1UHJvZmlsZXMuY2hpbGRyZW5bMF0uc2Vs
ZWN0KCk7CisgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChw
b3B1bGF0ZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRQcm9maWxl
SGVhZGVycyhjYWxsSWQpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG91bGRQb3B1bGF0ZVBy
b2ZpbGVzOwogICAgIH0sCkBAIC01MzUsMyArNTM5LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVH
cm91cFNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5Q
cm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuZGlk
R2V0UHJvZmlsZUhlYWRlcnMgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNr
OworV2ViSW5zcGVjdG9yLmRpZEdldFByb2ZpbGUgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJv
Y2Vzc0NhbGxiYWNrOwo=
</data>
<flag name="review"
          id="22414"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41153</attachid>
            <date>2009-10-14 01:25:51 -0700</date>
            <delta_ts>2009-10-14 03:07:36 -0700</delta_ts>
            <desc>proposed change, comments addressed</desc>
            <filename>inject-profiles-patch</filename>
            <type>text/plain</type>
            <size>19736</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjIzZGQxMS4uZmQ1YTBhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAwOS0xMC0xNCAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1pZ3JhdGUgcHJvZmlsZXMgdG8g
dGhlIGluamVjdGVkIHNjcmlwdC1iYXNlZCBzY2hlbWEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzI4CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxl
SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omdl
dFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmdldFByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQcm9maWxlSGVhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6ZGlkR2V0UHJvZmlsZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQ
cm9maWxlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9maWxlTm9kZUNsYXNzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3LmNvbnRpbnVlSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LmVsc2UucHJvZmlsZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZVZpZXcucHJvdG90eXBlLl9tb3VzZURvd25JbkRhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUuX2Fzc2lnblBhcmVudHNJblByb2ZpbGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVQcm9maWxlcy5wb3B1
bGF0ZUNhbGxiYWNrLnZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5w
cm90b3R5cGUuX3BvcHVsYXRlUHJvZmlsZXMucG9wdWxhdGVDYWxsYmFjayk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlUHJvZmlsZXMpOgor
CiAyMDA5LTEwLTEzICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAppbmRleCA3M2ZhMjY4Li4zOTFjYWNj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3Rv
bS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20u
Y3BwCkBAIC02NiwxMCArNjYsNyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
I2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KLSNp
bmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CkBAIC0yNTMsMjEgKzI1MCw2IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpjdXJy
ZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCiAgICAgcmV0dXJu
IEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChnbG9iYWxFeGVjLCB0b0pTKGV4ZWMsIGNh
bGxGcmFtZSkpOwogfQogCi1KU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6cHJvZmlsZXMoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYpCi17Ci0gICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciByZXN1
bHQ7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKTsKLSAgICBpZiAoIWljKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGU+ID4mIHByb2ZpbGVzID0gaWMtPnByb2ZpbGVz
KCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2ZpbGVzLnNpemUoKTsgKytpKQot
ICAgICAgICByZXN1bHQuYXBwZW5kKHRvSlMoZXhlYywgcHJvZmlsZXNbaV0uZ2V0KCkpKTsKLQot
ICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCByZXN1bHQpOwotfQotCiAjZW5kaWYKIAog
SlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6Om5vZGVGb3JJZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5oCmluZGV4IDFmNmMyYTUuLjcxZGQ4OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC00NjEsNyArNDYxLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJOZXh0U2libGlu
Zyk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlclByZXZpb3VzU2libGluZyk7
CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kUHJvZmlsZXMpOwog
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRIaWdobGlnaHRET01Ob2Rl
KTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kQWRkUmVzb3VyY2VT
b3VyY2VUb0ZyYW1lKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5k
QWRkU291cmNlVG9GcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmlu
ZGV4IDc2YTcwZjEuLjdhNzc2YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
Y3BwCkBAIC0yNzgsMTMgKzI3OCw2IEBAIGJvb2wgSW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVF
bmFibGVkKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotY29u
c3QgUHJvZmlsZXNBcnJheSYgSW5zcGVjdG9yQmFja2VuZDo6cHJvZmlsZXMoKSBjb25zdAotewot
ICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPnByb2ZpbGVzKCk7Ci0gICAgcmV0dXJuIG1fZW1wdHlQcm9maWxlczsKLX0K
LQogdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzdGFydFByb2ZpbGluZygpCiB7CiAgICAgaWYgKG1f
aW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTMxNiw2ICszMDksMTggQEAgYm9vbCBJbnNwZWN0b3JC
YWNrZW5kOjpwcm9maWxlckVuYWJsZWQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCkKK3sKKyAgICBp
ZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmdldFByb2ZpbGVIZWFkZXJzKGNhbGxJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
Z2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKQoreworICAgIGlmIChtX2luc3Bl
Y3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0UHJvZmls
ZShjYWxsSWQsIHVpZCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZW5hYmxlRGVidWdn
ZXIoYm9vbCBhbHdheXMpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCA4NmVlNmY5Li4yODU4MWQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xMDAsOCArMTAwLDYgQEAgcHVibGljOgog
ICAgIGJvb2wgdGltZWxpbmVFbmFibGVkKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLSAgICBjb25zdCBQcm9maWxlc0FycmF5JiBwcm9maWxlcygpIGNvbnN0Owot
CiAgICAgdm9pZCBzdGFydFByb2ZpbGluZygpOwogICAgIHZvaWQgc3RvcFByb2ZpbGluZygpOwog
CkBAIC0xMDksNiArMTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVByb2ZpbGVyKGJv
b2wgYWx3YXlzKTsKICAgICBib29sIHByb2ZpbGVyRW5hYmxlZCgpOwogCisgICAgdm9pZCBnZXRQ
cm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCk7CisgICAgdm9pZCBnZXRQcm9maWxlKGxvbmcgY2Fs
bElkLCB1bnNpZ25lZCB1aWQpOworCiAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcihib29sIGFsd2F5
cyk7CiAgICAgdm9pZCBkaXNhYmxlRGVidWdnZXIoYm9vbCBhbHdheXMpOwogICAgIGJvb2wgZGVi
dWdnZXJFbmFibGVkKCkgY29uc3Q7CkBAIC0xNzEsOSArMTcyLDYgQEAgcHJpdmF0ZToKIAogICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBJbnNwZWN0
b3JDbGllbnQqIG1fY2xpZW50OwotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IFByb2ZpbGVzQXJyYXkgbV9lbXB0eVByb2ZpbGVzOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4IGFi
MTQ3ZWMuLmI0MzlhZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCkBA
IC0xMDAsNyArMTAwLDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0UHJvZmls
aW5nKCk7CiAgICAgICAgIHZvaWQgc3RvcFByb2ZpbGluZygpOwogCi0gICAgICAgIFtDdXN0b21d
IEFycmF5IHByb2ZpbGVzKCk7CisgICAgICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoaW4gbG9u
ZyBjYWxsSWQpOworICAgICAgICB2b2lkIGdldFByb2ZpbGUoaW4gbG9uZyBjYWxsSWQsIGluIHVu
c2lnbmVkIGxvbmcgdWlkKTsKICNlbmRpZgogICAgICAgICB2b2lkIGRpc3BhdGNoT25JbmplY3Rl
ZFNjcmlwdChpbiBsb25nIGNhbGxJZCwgaW4gRE9NU3RyaW5nIG1ldGhvZE5hbWUsIGluIERPTVN0
cmluZyBhcmd1bWVudHMsIGluIGJvb2xlYW4gYXN5bmMpOwogICAgICAgICB2b2lkIGdldENoaWxk
Tm9kZXMoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlkKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZmYwMGJmMC4uZDkxNTQ4ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEzNDYsNyArMTM0Niw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVmUHRyPFByb2ZpbGU+
IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxQ
cm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKLSAgICBtX3Byb2ZpbGVzLmFwcGVuZChwcm9m
aWxlKTsKKyAgICBtX3Byb2ZpbGVzLmFkZChwcm9maWxlLT51aWQoKSwgcHJvZmlsZSk7CiAKICAg
ICBpZiAobV9mcm9udGVuZCkgewogICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwpAQCAtMTM4MCw2ICsxMzgwLDMwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFVTdHJpbmcmIHRpdGxlCiAg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBM
b2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQpCit7
CisgICAgaWYgKCFtX2Zyb250ZW5kKQorICAgICAgICByZXR1cm47CisgICAgU2NyaXB0QXJyYXkg
cmVzdWx0ID0gbV9mcm9udGVuZC0+bmV3U2NyaXB0QXJyYXkoKTsKKyAgICBQcm9maWxlc01hcDo6
aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmJlZ2luKCksIHByb2ZpbGVzRW5kID0gbV9wcm9maWxl
cy5lbmQoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaXQgIT0gcHJvZmlsZXNFbmQ7ICsraXQsICsr
aSkgeworICAgICAgICBTY3JpcHRPYmplY3QgaGVhZGVyID0gbV9mcm9udGVuZC0+bmV3U2NyaXB0
T2JqZWN0KCk7CisgICAgICAgIGhlYWRlci5zZXQoInRpdGxlIiwgaXQtPnNlY29uZC0+dGl0bGUo
KSk7CisgICAgICAgIGhlYWRlci5zZXQoInVpZCIsIGl0LT5zZWNvbmQtPnVpZCgpKTsKKyAgICAg
ICAgcmVzdWx0LnNldChpLCBoZWFkZXIpOworICAgIH0KKyAgICBtX2Zyb250ZW5kLT5kaWRHZXRQ
cm9maWxlSGVhZGVycyhjYWxsSWQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKQoreworICAgIGlmICgh
bV9mcm9udGVuZCkKKyAgICAgICAgcmV0dXJuOworICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBp
dCA9IG1fcHJvZmlsZXMuZmluZCh1aWQpOworICAgIGlmIChpdCAhPSBtX3Byb2ZpbGVzLmVuZCgp
KQorICAgICAgICBtX2Zyb250ZW5kLT5kaWRHZXRQcm9maWxlKGNhbGxJZCwgdG9KUyhtX3Njcmlw
dFN0YXRlLCBpdC0+c2Vjb25kLmdldCgpKSk7Cit9CisKIFVTdHJpbmcgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFBy
b2ZpbGVOdW1iZXIgPSBmYWxzZSkKIHsKICAgICBpZiAoaW5jcmVtZW50UHJvZmlsZU51bWJlcikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAxZDE3ODk5Li5iZGZm
ODhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yNjUsNyAr
MjY1LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRyPEpTQzo6UHJv
ZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJM
KTsKICAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0
cjxKU0M6OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcm
IHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUo
Y29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgSlND
OjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIGNvbnN0IFByb2ZpbGVzQXJyYXkmIHByb2ZpbGVz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQorICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRl
cnMobG9uZyBjYWxsSWQpOworICAgIHZvaWQgZ2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWdu
ZWQgdWlkKTsKIAogICAgIGJvb2wgaXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGU7IH0KIApAQCAtMzE1
LDYgKzMxNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBSZWZQdHI8
SlNDOjpQcm9maWxlPiA+IFByb2ZpbGVzTWFwOworCiAgICAgdm9pZCBzdGFydFVzZXJJbml0aWF0
ZWRQcm9maWxpbmdTb29uKCk7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCk7CiAg
ICAgdm9pZCBlbmFibGVEZWJ1Z2dlckZyb21Gcm9udGVuZChib29sIGFsd2F5cyk7CkBAIC0zOTQs
NyArMzk3LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2Zp
bGVOdW1iZXI7CiAgICAgdW5zaWduZWQgbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7
CiAgICAgVGltZXI8SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9zdGFydFByb2ZpbGluZzsKLSAgICBQ
cm9maWxlc0FycmF5IG1fcHJvZmlsZXM7CisgICAgUHJvZmlsZXNNYXAgbV9wcm9maWxlczsKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCmluZGV4IGJk
YjYyMmQuLjk5MzQ1YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAK
QEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpmYWlsZWRUb1BhcnNl
U2NyaXB0U291cmNlKGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLAogICAgIGZ1bmN0aW9u
LT5jYWxsKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGUoY29uc3Qg
SlNDOjpKU1ZhbHVlJiBwcm9maWxlKQordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkUHJvZmls
ZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSkKIHsKICAgICBPd25QdHI8U2NyaXB0RnVuY3Rp
b25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImFkZFByb2ZpbGUiKSk7CiAgICAgZnVu
Y3Rpb24tPmFwcGVuZEFyZ3VtZW50KHByb2ZpbGUpOwpAQCAtMjc1LDYgKzI3NSwyMiBAQCB2b2lk
IEluc3BlY3RvckZyb250ZW5kOjpzZXRSZWNvcmRpbmdQcm9maWxlKGJvb2wgaXNQcm9maWxpbmcp
CiAgICAgZnVuY3Rpb24tPmNhbGwoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlk
R2V0UHJvZmlsZUhlYWRlcnMoaW50IGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkmIGhlYWRlcnMp
Cit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25D
YWxsKCJkaWRHZXRQcm9maWxlSGVhZGVycyIpKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1l
bnQoY2FsbElkKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoaGVhZGVycyk7CisgICAg
ZnVuY3Rpb24tPmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlkR2V0UHJv
ZmlsZShpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSkKK3sKKyAgICBPd25Q
dHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImRpZEdldFBy
b2ZpbGUiKSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGNhbGxJZCk7CisgICAgZnVu
Y3Rpb24tPmFwcGVuZEFyZ3VtZW50KHByb2ZpbGUpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBhdXNlZFNjcmlwdChjb25zdCBTY3JpcHRWYWx1
ZSYgY2FsbEZyYW1lcykKIHsKICAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlv
bihuZXdGdW5jdGlvbkNhbGwoInBhdXNlZFNjcmlwdCIpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5oCmluZGV4IDFkN2FkZjAuLjhiYmZhNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuaApAQCAtODksOCArODksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHByb2ZpbGVyV2FzRGlzYWJsZWQoKTsKICAgICAgICAgdm9pZCBwYXJzZWRT
Y3JpcHRTb3VyY2UoY29uc3QgSlNDOjpTb3VyY2VDb2RlJik7CiAgICAgICAgIHZvaWQgZmFpbGVk
VG9QYXJzZVNjcmlwdFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5l
LCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0gICAgICAgIHZvaWQgYWRkUHJv
ZmlsZShjb25zdCBKU0M6OkpTVmFsdWUmIHByb2ZpbGUpOworICAgICAgICB2b2lkIGFkZFByb2Zp
bGUoY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpOwogICAgICAgICB2b2lkIHNldFJlY29yZGlu
Z1Byb2ZpbGUoYm9vbCBpc1Byb2ZpbGluZyk7CisgICAgICAgIHZvaWQgZGlkR2V0UHJvZmlsZUhl
YWRlcnMoaW50IGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkmIGhlYWRlcnMpOworICAgICAgICB2
b2lkIGRpZEdldFByb2ZpbGUoaW50IGNhbGxJZCwgY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUp
OwogICAgICAgICB2b2lkIHBhdXNlZFNjcmlwdChjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cyk7CiAgICAgICAgIHZvaWQgcmVzdW1lZFNjcmlwdCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAppbmRleCAzYzNlMjc5Li44NGEwMjAwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKQEAgLTEwNCwy
OCArMTA0LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0U2VsZlRpbWUoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmcKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+c2VsZlRpbWUoKSk7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlUmVmIGdldFRvdGFsUGVyY2VudChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5v
ZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnRv
dGFsUGVyY2VudCgpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0U2VsZlBlcmNlbnQoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFs
dWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
LQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2Zp
bGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5v
ZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVl
TWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT5zZWxmUGVyY2VudCgpKTsKLX0KLQogc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0TnVtYmVyT2ZDYWxscyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCiB7CiAgICAgSlNDOjpKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpAQCAtMTg0LDQxICsxNjIsNiBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBnZXRDaGlsZHJlbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlUmVmIGdldFBhcmVudChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0
eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBz
dGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIHJldHVybiB0b1JlZihleGVj
LCB0b0pTKGV4ZWMsIHByb2ZpbGVOb2RlLT5wYXJlbnQoKSkpOwotfQotCi1zdGF0aWMgSlNWYWx1
ZVJlZiBnZXRIZWFkKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpT
U3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0
aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRp
Y19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRv
SlMoZXhlYywgcHJvZmlsZU5vZGUtPmhlYWQoKSkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBn
ZXRWaXNpYmxlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19j
YXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGN0eCwgcHJvZmlsZU5vZGUtPnZpc2libGUoKSk7Ci19
Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIGdldENhbGxVSUQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQogewogICAgIEpTQzo6
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKQEAgLTI0NSwxMyArMTg4LDggQEAg
SlNDbGFzc1JlZiBQcm9maWxlTm9kZUNsYXNzKCkKICAgICAgICAgeyAibGluZU51bWJlciIsIGdl
dExpbmVOdW1iZXIsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJ0
b3RhbFRpbWUiLCBnZXRUb3RhbFRpbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAog
ICAgICAgICB7ICJzZWxmVGltZSIsIGdldFNlbGZUaW1lLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZU5vbmUgfSwKLSAgICAgICAgeyAidG90YWxQZXJjZW50IiwgZ2V0VG90YWxQZXJjZW50LCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAic2VsZlBlcmNlbnQiLCBnZXRT
ZWxmUGVyY2VudCwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgIm51
bWJlck9mQ2FsbHMiLCBnZXROdW1iZXJPZkNhbGxzLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKICAgICAgICAgeyAiY2hpbGRyZW4iLCBnZXRDaGlsZHJlbiwgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInBhcmVudCIsIGdldFBhcmVudCwgMCwga0pTUHJv
cGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImhlYWQiLCBnZXRIZWFkLCAwLCBrSlND
bGFzc0F0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAidmlzaWJsZSIsIGdldFZpc2libGUsIDAs
IGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJjYWxsVUlEIiwgZ2V0Q2Fs
bFVJRCwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgMCwgMCwgMCwg
MCB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpp
bmRleCAyYjhjNmNlLi4zMDM3ZGE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVWaWV3LmpzCkBAIC03OCwxMiArNzgsMjggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3
ID0gZnVuY3Rpb24ocHJvZmlsZSkKIAogICAgIHRoaXMucHJvZmlsZSA9IHByb2ZpbGU7CiAKLSAg
ICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUgPSB0aGlzLmJvdHRvbVVwUHJvZmlsZURhdGFHcmlk
VHJlZTsKLSAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuc29ydChXZWJJbnNwZWN0b3IuUHJv
ZmlsZURhdGFHcmlkVHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3IoInNlbGZUaW1lIiwgZmFsc2UpKTsK
LQotICAgIHRoaXMucmVmcmVzaCgpOworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICBmdW5jdGlv
biBjb250aW51ZUluaXRpYWxpemF0aW9uKCkgeworICAgICAgICBzZWxmLl9hc3NpZ25QYXJlbnRz
SW5Qcm9maWxlKCk7CisgICAgICAKKyAgICAgICAgc2VsZi5wcm9maWxlRGF0YUdyaWRUcmVlID0g
c2VsZi5ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7CisgICAgICAgIHNlbGYucHJvZmlsZURh
dGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5
Q29tcGFyYXRvcigic2VsZlRpbWUiLCBmYWxzZSkpOworICAgICAKKyAgICAgICAgc2VsZi5yZWZy
ZXNoKCk7CisgICAgIAorICAgICAgICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAg
fQogCi0gICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworICAgIGlmICghdGhpcy5wcm9m
aWxlLl9pc1N0dWIpCisgICAgICAgIGNvbnRpbnVlSW5pdGlhbGl6YXRpb24oKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgZnVuY3Rpb24gcHJvZmlsZUNhbGxiYWNrKHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIHNlbGYucHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBjb250aW51ZUluaXRpYWxp
emF0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5D
YWxsYmFjay53cmFwKHByb2ZpbGVDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIuZ2V0UHJvZmlsZShjYWxsSWQsIHRoaXMucHJvZmlsZS51aWQpOworICAgIH0KIH0KIAogV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKQEAgLTUzMyw2ICs1NDksMjQgQEAg
V2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9
LAorCisgICAgX2Fzc2lnblBhcmVudHNJblByb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBoZWFkID0gdGhpcy5wcm9maWxlLmhlYWQ7CisgICAgICAgIHZhciBub2Rlc1RvVHJh
dmVyc2UgPSBbIHsgcGFyZW50OiBoZWFkLCBjaGlsZHJlbjogaGVhZC5jaGlsZHJlbiB9IF07Cisg
ICAgICAgIHdoaWxlIChub2Rlc1RvVHJhdmVyc2UubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
dmFyIHBhaXIgPSBub2Rlc1RvVHJhdmVyc2Uuc2hpZnQoKTsKKyAgICAgICAgICAgIHZhciBwYXJl
bnQgPSBwYWlyLnBhcmVudDsKKyAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHBhaXIuY2hpbGRy
ZW47CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGNo
aWxkcmVuW2ldLmhlYWQgPSBoZWFkOworICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLnBhcmVu
dCA9IHBhcmVudDsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2hpbGRyZW4ubGVu
Z3RoID4gMCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXNUb1RyYXZlcnNlLnB1c2goeyBwYXJl
bnQ6IGNoaWxkcmVuW2ldLCBjaGlsZHJlbjogY2hpbGRyZW5baV0uY2hpbGRyZW4gfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggYWIyM2YxZi4uZTY1OGE5OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTQwMSwxNSArNDAx
LDE5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB2YXIgcHJvZmlsZXMgPSBJbnNwZWN0b3JDb250cm9sbGVyLnByb2ZpbGVzKCk7Ci0g
ICAgICAgIHZhciBwcm9maWxlc0xlbmd0aCA9IHByb2ZpbGVzLmxlbmd0aDsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwcm9maWxlc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIg
cHJvZmlsZSA9IHByb2ZpbGVzW2ldOwotICAgICAgICAgICAgdGhpcy5hZGRQcm9maWxlKHByb2Zp
bGUpOworICAgICAgICBmdW5jdGlvbiBwb3B1bGF0ZUNhbGxiYWNrKHByb2ZpbGVIZWFkZXJzKSB7
CisgICAgICAgICAgICBwcm9maWxlSGVhZGVycy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJu
IGEudWlkIC0gYi51aWQ7IH0pOworICAgICAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXJzTGVuZ3Ro
ID0gcHJvZmlsZUhlYWRlcnMubGVuZ3RoOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcm9maWxlSGVhZGVyc0xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgcHJvZmlsZUhl
YWRlcnNbaV0uX2lzU3R1YiA9IHRydWU7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFk
ZFByb2ZpbGUocHJvZmlsZUhlYWRlcnNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBdKQorICAgICAgICAgICAgICAgIGNwdVByb2ZpbGVz
LmNoaWxkcmVuWzBdLnNlbGVjdCgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNwdVByb2Zp
bGVzLmNoaWxkcmVuWzBdKQotICAgICAgICAgICAgY3B1UHJvZmlsZXMuY2hpbGRyZW5bMF0uc2Vs
ZWN0KCk7CisgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChw
b3B1bGF0ZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRQcm9maWxl
SGVhZGVycyhjYWxsSWQpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG91bGRQb3B1bGF0ZVBy
b2ZpbGVzOwogICAgIH0sCkBAIC01MzUsMyArNTM5LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVH
cm91cFNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5Q
cm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuZGlk
R2V0UHJvZmlsZUhlYWRlcnMgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNr
OworV2ViSW5zcGVjdG9yLmRpZEdldFByb2ZpbGUgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJv
Y2Vzc0NhbGxiYWNrOwo=
</data>
<flag name="review"
          id="22489"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41155</attachid>
            <date>2009-10-14 03:07:36 -0700</date>
            <delta_ts>2009-10-14 23:09:54 -0700</delta_ts>
            <desc>proposed change, comments addressed</desc>
            <filename>inject-profiles-patch</filename>
            <type>text/plain</type>
            <size>20978</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjIzZGQxMS4uNTJjMmIwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAwOS0xMC0xNCAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1pZ3JhdGUgcHJvZmlsZXMgdG8g
dGhlIGluamVjdGVkIHNjcmlwdC1iYXNlZCBzY2hlbWEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzI4CisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAoT09QUyEpCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxlSGVhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZFByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmQ6OmRpZEdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kOjpkaWRHZXRQcm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2ZpbGVOb2RlQ2xhc3MpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
ZmlsZVZpZXcucHJvZmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLl9tb3Vz
ZURvd25JbkRhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90
b3R5cGUuX2Fzc2lnblBhcmVudHNJblByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRQcm9maWxlSGVh
ZGVyKToKKwogMjAwOS0xMC0xMyAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW4uemhhbmdAbm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKaW5kZXggNzNmYTI2OC4u
MzkxY2FjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tl
bmRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5k
Q3VzdG9tLmNwcApAQCAtNjYsMTAgKzY2LDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSmF2YVNj
cmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGUuaCIKICNpbmNs
dWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxl
Lmg+Ci0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4KICNlbmRpZgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtMjUzLDIxICsyNTAsNiBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2Vu
ZDo6Y3VycmVudENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogICAg
IHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZ2xvYmFsRXhlYywgdG9KUyhl
eGVjLCBjYWxsRnJhbWUpKTsKIH0KIAotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnByb2Zp
bGVzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmKQotewotICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgcmVzdWx0OwotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW1wbCgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpYykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlPiA+JiBwcm9maWxlcyA9IGljLT5w
cm9maWxlcygpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9maWxlcy5zaXplKCk7
ICsraSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh0b0pTKGV4ZWMsIHByb2ZpbGVzW2ldLmdldCgp
KSk7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgcmVzdWx0KTsKLX0KLQogI2Vu
ZGlmCiAKIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpub2RlRm9ySWQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaAppbmRleCAxZjZjMmE1Li43MWRkODhlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaApAQCAtNDYxLDcgKzQ2MSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyTmV4
dFNpYmxpbmcpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQcmV2aW91c1Np
YmxpbmcpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFByb2Zp
bGVzKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kSGlnaGxpZ2h0
RE9NTm9kZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEFkZFJl
c291cmNlU291cmNlVG9GcmFtZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9y
QmFja2VuZEFkZFNvdXJjZVRvRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmNwcAppbmRleCA3NmE3MGYxLi43YTc3NmMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmNwcApAQCAtMjc4LDEzICsyNzgsNiBAQCBib29sIEluc3BlY3RvckJhY2tlbmQ6OnRp
bWVsaW5lRW5hYmxlZCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLWNvbnN0IFByb2ZpbGVzQXJyYXkmIEluc3BlY3RvckJhY2tlbmQ6OnByb2ZpbGVzKCkgY29u
c3QKLXsKLSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5wcm9maWxlcygpOwotICAgIHJldHVybiBtX2VtcHR5UHJvZmls
ZXM7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c3RhcnRQcm9maWxpbmcoKQogewogICAg
IGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCkBAIC0zMTYsNiArMzA5LDE4IEBAIGJvb2wgSW5z
cGVjdG9yQmFja2VuZDo6cHJvZmlsZXJFbmFibGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQpCit7
CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250
cm9sbGVyLT5nZXRQcm9maWxlSGVhZGVycyhjYWxsSWQpOworfQorCit2b2lkIEluc3BlY3RvckJh
Y2tlbmQ6OmdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKK3sKKyAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmdl
dFByb2ZpbGUoY2FsbElkLCB1aWQpOworfQorCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmVuYWJs
ZURlYnVnZ2VyKGJvb2wgYWx3YXlzKQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5kZXggODZlZTZmOS4uMjg1ODFkNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaApAQCAtMTAwLDggKzEwMCw2IEBAIHB1
YmxpYzoKICAgICBib29sIHRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMoKSBj
b25zdDsKLQogICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQcm9maWxp
bmcoKTsKIApAQCAtMTA5LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVQcm9m
aWxlcihib29sIGFsd2F5cyk7CiAgICAgYm9vbCBwcm9maWxlckVuYWJsZWQoKTsKIAorICAgIHZv
aWQgZ2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQpOworICAgIHZvaWQgZ2V0UHJvZmlsZShs
b25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKTsKKwogICAgIHZvaWQgZW5hYmxlRGVidWdnZXIoYm9v
bCBhbHdheXMpOwogICAgIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKTsKICAgICBi
b29sIGRlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0OwpAQCAtMTcxLDkgKzE3Miw2IEBAIHByaXZhdGU6
CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAgICAg
SW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLSAgICBQcm9maWxlc0FycmF5IG1fZW1wdHlQcm9maWxlczsKLSNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApp
bmRleCBhYjE0N2VjLi5iNDM5YWYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmlkbApAQCAtMTAwLDcgKzEwMCw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzdGFy
dFByb2ZpbGluZygpOwogICAgICAgICB2b2lkIHN0b3BQcm9maWxpbmcoKTsKIAotICAgICAgICBb
Q3VzdG9tXSBBcnJheSBwcm9maWxlcygpOworICAgICAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJz
KGluIGxvbmcgY2FsbElkKTsKKyAgICAgICAgdm9pZCBnZXRQcm9maWxlKGluIGxvbmcgY2FsbElk
LCBpbiB1bnNpZ25lZCBsb25nIHVpZCk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBkaXNwYXRjaE9u
SW5qZWN0ZWRTY3JpcHQoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBtZXRob2ROYW1lLCBp
biBET01TdHJpbmcgYXJndW1lbnRzLCBpbiBib29sZWFuIGFzeW5jKTsKICAgICAgICAgdm9pZCBn
ZXRDaGlsZE5vZGVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGZmMDBiZjAuLjUxYzY4MWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMzQ2LDExICsx
MzQ2LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVmUHRy
PFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKLSAgICBtX3Byb2ZpbGVzLmFw
cGVuZChwcm9maWxlKTsKKyAgICBtX3Byb2ZpbGVzLmFkZChwcm9maWxlLT51aWQoKSwgcHJvZmls
ZSk7CiAKICAgICBpZiAobV9mcm9udGVuZCkgewogICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwotICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9maWxlKHRvSlMobV9z
Y3JpcHRTdGF0ZSwgcHJvZmlsZS5nZXQoKSkpOworICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9m
aWxlSGVhZGVyKGNyZWF0ZVByb2ZpbGVIZWFkZXIoKnByb2ZpbGUpKTsKICAgICB9CiAKICAgICBh
ZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKHByb2ZpbGUsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7CkBAIC0xMzgwLDYgKzEzODAsMzUgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgVVN0cmluZyYgdGl0bGUK
ICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRQcm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCkK
K3sKKyAgICBpZiAoIW1fZnJvbnRlbmQpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRBcnJh
eSByZXN1bHQgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOworICAgIFByb2ZpbGVzTWFw
OjppdGVyYXRvciBwcm9maWxlc0VuZCA9IG1fcHJvZmlsZXMuZW5kKCk7CisgICAgaW50IGkgPSAw
OworICAgIGZvciAoUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5iZWdpbigp
OyBpdCAhPSBwcm9maWxlc0VuZDsgKytpdCkKKyAgICAgICAgcmVzdWx0LnNldChpKyssIGNyZWF0
ZVByb2ZpbGVIZWFkZXIoKml0LT5zZWNvbmQpKTsKKyAgICBtX2Zyb250ZW5kLT5kaWRHZXRQcm9m
aWxlSGVhZGVycyhjYWxsSWQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Z2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKQoreworICAgIGlmICghbV9m
cm9udGVuZCkKKyAgICAgICAgcmV0dXJuOworICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9
IG1fcHJvZmlsZXMuZmluZCh1aWQpOworICAgIGlmIChpdCAhPSBtX3Byb2ZpbGVzLmVuZCgpKQor
ICAgICAgICBtX2Zyb250ZW5kLT5kaWRHZXRQcm9maWxlKGNhbGxJZCwgdG9KUyhtX3NjcmlwdFN0
YXRlLCBpdC0+c2Vjb25kLmdldCgpKSk7Cit9CisKK1NjcmlwdE9iamVjdCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IEpTQzo6UHJvZmlsZSYgcHJvZmlsZSkK
K3sKKyAgICBTY3JpcHRPYmplY3QgaGVhZGVyID0gbV9mcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0
KCk7CisgICAgaGVhZGVyLnNldCgidGl0bGUiLCBwcm9maWxlLnRpdGxlKCkpOworICAgIGhlYWRl
ci5zZXQoInVpZCIsIHByb2ZpbGUudWlkKCkpOworICAgIHJldHVybiBoZWFkZXI7Cit9CisKIFVT
dHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxl
TmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSkKIHsKICAgICBpZiAoaW5j
cmVtZW50UHJvZmlsZU51bWJlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCAxZDE3ODk5Li41OTkwZmJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC0yNjUsNyArMjY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUHJvZmls
ZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpT
Qzo6VVN0cmluZyYgc291cmNlVVJMKTsKICAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hlZE1lc3Nh
Z2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRTdGFydFByb2Zp
bGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIGNvbnN0IFBy
b2ZpbGVzQXJyYXkmIHByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQogCiAg
ICAgYm9vbCBpc1JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkgY29uc3QgeyByZXR1cm4g
bV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZTsgfQogCkBAIC0zMTUsOSArMzE0LDE0IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBSZWZQdHI8SlNDOjpQcm9maWxl
PiA+IFByb2ZpbGVzTWFwOworCiAgICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmdT
b29uKCk7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCk7CiAgICAgdm9pZCBlbmFi
bGVEZWJ1Z2dlckZyb21Gcm9udGVuZChib29sIGFsd2F5cyk7CisgICAgdm9pZCBnZXRQcm9maWxl
SGVhZGVycyhsb25nIGNhbGxJZCk7CisgICAgdm9pZCBnZXRQcm9maWxlKGxvbmcgY2FsbElkLCB1
bnNpZ25lZCB1aWQpOworICAgIFNjcmlwdE9iamVjdCBjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0
IEpTQzo6UHJvZmlsZSYgcHJvZmlsZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAg
ICAgdm9pZCBzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UpOwpAQCAtMzk0LDcgKzM5
OCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVt
YmVyOwogICAgIHVuc2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyOwogICAg
IFRpbWVyPEluc3BlY3RvckNvbnRyb2xsZXI+IG1fc3RhcnRQcm9maWxpbmc7Ci0gICAgUHJvZmls
ZXNBcnJheSBtX3Byb2ZpbGVzOworICAgIFByb2ZpbGVzTWFwIG1fcHJvZmlsZXM7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCBiZGI2MjJk
Li5hZDZhNTExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC0y
NjEsOSArMjYxLDkgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZmFpbGVkVG9QYXJzZVNjcmlw
dFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBmdW5jdGlvbi0+Y2Fs
bCgpOwogfQogCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRQcm9maWxlKGNvbnN0IEpTQzo6
SlNWYWx1ZSYgcHJvZmlsZSkKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGVIZWFk
ZXIoY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpCiB7Ci0gICAgT3duUHRyPFNjcmlwdEZ1bmN0
aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGRQcm9maWxlIikpOworICAgIE93
blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkUHJv
ZmlsZUhlYWRlciIpKTsKICAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQocHJvZmlsZSk7CiAg
ICAgZnVuY3Rpb24tPmNhbGwoKTsKIH0KQEAgLTI3NSw2ICsyNzUsMjIgQEAgdm9pZCBJbnNwZWN0
b3JGcm9udGVuZDo6c2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKQogICAgIGZ1
bmN0aW9uLT5jYWxsKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZEdldFByb2Zp
bGVIZWFkZXJzKGludCBjYWxsSWQsIGNvbnN0IFNjcmlwdEFycmF5JiBoZWFkZXJzKQoreworICAg
IE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiZGlk
R2V0UHJvZmlsZUhlYWRlcnMiKSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGNhbGxJ
ZCk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGhlYWRlcnMpOworICAgIGZ1bmN0aW9u
LT5jYWxsKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZEdldFByb2ZpbGUoaW50
IGNhbGxJZCwgY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpCit7CisgICAgT3duUHRyPFNjcmlw
dEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJkaWRHZXRQcm9maWxlIikp
OworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0aW9uLT5h
cHBlbmRBcmd1bWVudChwcm9maWxlKTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgpOworfQorCiB2b2lk
IEluc3BlY3RvckZyb250ZW5kOjpwYXVzZWRTY3JpcHQoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxG
cmFtZXMpCiB7CiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVu
Y3Rpb25DYWxsKCJwYXVzZWRTY3JpcHQiKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaAppbmRleCAxZDdhZGYwLi41ODZjODkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmgKQEAgLTg5LDggKzg5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBwcm9maWxlcldhc0Rpc2FibGVkKCk7CiAgICAgICAgIHZvaWQgcGFyc2VkU2NyaXB0U291
cmNlKGNvbnN0IEpTQzo6U291cmNlQ29kZSYpOwogICAgICAgICB2b2lkIGZhaWxlZFRvUGFyc2VT
Y3JpcHRTb3VyY2UoY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgaW50IGVycm9yTGluZSwgY29uc3Qg
SlNDOjpVU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgICAgICB2b2lkIGFkZFByb2ZpbGUoY29u
c3QgSlNDOjpKU1ZhbHVlJiBwcm9maWxlKTsKKyAgICAgICAgdm9pZCBhZGRQcm9maWxlSGVhZGVy
KGNvbnN0IFNjcmlwdFZhbHVlJiBwcm9maWxlKTsKICAgICAgICAgdm9pZCBzZXRSZWNvcmRpbmdQ
cm9maWxlKGJvb2wgaXNQcm9maWxpbmcpOworICAgICAgICB2b2lkIGRpZEdldFByb2ZpbGVIZWFk
ZXJzKGludCBjYWxsSWQsIGNvbnN0IFNjcmlwdEFycmF5JiBoZWFkZXJzKTsKKyAgICAgICAgdm9p
ZCBkaWRHZXRQcm9maWxlKGludCBjYWxsSWQsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm9maWxlKTsK
ICAgICAgICAgdm9pZCBwYXVzZWRTY3JpcHQoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMp
OwogICAgICAgICB2b2lkIHJlc3VtZWRTY3JpcHQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKaW5kZXggM2MzZTI3OS4uODRhMDIwMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCkBAIC0xMDQsMjgg
KzEwNCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFNlbGZUaW1lKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
TnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnNlbGZUaW1lKCkpOwogfQogCi1zdGF0aWMgSlNWYWx1
ZVJlZiBnZXRUb3RhbFBlcmNlbnQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFz
cyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2Rl
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT50b3Rh
bFBlcmNlbnQoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFNlbGZQZXJjZW50KEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0K
LSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxl
Tm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
LQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2Rl
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1h
a2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+c2VsZlBlcmNlbnQoKSk7Ci19Ci0KIHN0YXRpYyBK
U1ZhbHVlUmVmIGdldE51bWJlck9mQ2FsbHMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQogewogICAgIEpTQzo6SlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKQEAgLTE4NCw0MSArMTYyLDYgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgSlNWYWx1
ZVJlZiBnZXRQYXJlbnQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
SlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgs
IHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3Rh
dGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywg
dG9KUyhleGVjLCBwcm9maWxlTm9kZS0+cGFyZW50KCkpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0SGVhZChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pT
KGV4ZWMsIHByb2ZpbGVOb2RlLT5oZWFkKCkpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0
VmlzaWJsZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmlu
Z1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09i
amVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjdHgsIHByb2ZpbGVOb2RlLT52aXNpYmxlKCkpOwotfQot
CiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRDYWxsVUlEKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKIHsKICAgICBKU0M6OkpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CkBAIC0yNDUsMTMgKzE4OCw4IEBAIEpT
Q2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpCiAgICAgICAgIHsgImxpbmVOdW1iZXIiLCBnZXRM
aW5lTnVtYmVyLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAidG90
YWxUaW1lIiwgZ2V0VG90YWxUaW1lLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAg
ICAgICAgeyAic2VsZlRpbWUiLCBnZXRTZWxmVGltZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVO
b25lIH0sCi0gICAgICAgIHsgInRvdGFsUGVyY2VudCIsIGdldFRvdGFsUGVyY2VudCwgMCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInNlbGZQZXJjZW50IiwgZ2V0U2Vs
ZlBlcmNlbnQsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJudW1i
ZXJPZkNhbGxzIiwgZ2V0TnVtYmVyT2ZDYWxscywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25l
IH0sCiAgICAgICAgIHsgImNoaWxkcmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJwYXJlbnQiLCBnZXRQYXJlbnQsIDAsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJoZWFkIiwgZ2V0SGVhZCwgMCwga0pTQ2xh
c3NBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInZpc2libGUiLCBnZXRWaXNpYmxlLCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAiY2FsbFVJRCIsIGdldENhbGxV
SUQsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7IDAsIDAsIDAsIDAg
fQogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKaW5k
ZXggMmI4YzZjZS4uYThjM2YxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlVmlldy5qcwpAQCAtNzgsMTIgKzc4LDIyIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldyA9
IGZ1bmN0aW9uKHByb2ZpbGUpCiAKICAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlOwogCi0gICAg
dGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlID0gdGhpcy5ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRy
ZWU7Ci0gICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLnNvcnQoV2ViSW5zcGVjdG9yLlByb2Zp
bGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yKCJzZWxmVGltZSIsIGZhbHNlKSk7Ci0K
LSAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgZnVuY3Rpb24g
cHJvZmlsZUNhbGxiYWNrKHByb2ZpbGUpCisgICAgeworICAgICAgICBzZWxmLnByb2ZpbGUgPSBw
cm9maWxlOworICAgICAgICBzZWxmLl9hc3NpZ25QYXJlbnRzSW5Qcm9maWxlKCk7CisgICAgICAK
KyAgICAgICAgc2VsZi5wcm9maWxlRGF0YUdyaWRUcmVlID0gc2VsZi5ib3R0b21VcFByb2ZpbGVE
YXRhR3JpZFRyZWU7CisgICAgICAgIHNlbGYucHJvZmlsZURhdGFHcmlkVHJlZS5zb3J0KFdlYklu
c3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcigic2VsZlRpbWUi
LCBmYWxzZSkpOworICAgICAKKyAgICAgICAgc2VsZi5yZWZyZXNoKCk7CisgICAgIAorICAgICAg
ICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAgfQogCi0gICAgdGhpcy5fdXBkYXRl
UGVyY2VudEJ1dHRvbigpOworICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2su
d3JhcChwcm9maWxlQ2FsbGJhY2spOworICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZ2V0UHJvZmls
ZShjYWxsSWQsIHRoaXMucHJvZmlsZS51aWQpOwogfQogCiBXZWJJbnNwZWN0b3IuUHJvZmlsZVZp
ZXcucHJvdG90eXBlID0gewpAQCAtNTMzLDYgKzU0MywyNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmls
ZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBfYXNzaWduUGFy
ZW50c0luUHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGhlYWQgPSB0aGlz
LnByb2ZpbGUuaGVhZDsKKyAgICAgICAgaGVhZC5wYXJlbnQgPSBudWxsOworICAgICAgICBoZWFk
LmhlYWQgPSBudWxsOworICAgICAgICB2YXIgbm9kZXNUb1RyYXZlcnNlID0gWyB7IHBhcmVudDog
aGVhZCwgY2hpbGRyZW46IGhlYWQuY2hpbGRyZW4gfSBdOworICAgICAgICB3aGlsZSAobm9kZXNU
b1RyYXZlcnNlLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHZhciBwYWlyID0gbm9kZXNUb1Ry
YXZlcnNlLnNoaWZ0KCk7CisgICAgICAgICAgICB2YXIgcGFyZW50ID0gcGFpci5wYXJlbnQ7Cisg
ICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBwYWlyLmNoaWxkcmVuOworICAgICAgICAgICAgdmFy
IGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5oZWFkID0gaGVh
ZDsKKyAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5wYXJlbnQgPSBwYXJlbnQ7CisgICAgICAg
ICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmNoaWxkcmVuLmxlbmd0aCA+IDApCisgICAgICAgICAg
ICAgICAgICAgIG5vZGVzVG9UcmF2ZXJzZS5wdXNoKHsgcGFyZW50OiBjaGlsZHJlbltpXSwgY2hp
bGRyZW46IGNoaWxkcmVuW2ldLmNoaWxkcmVuIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzCmluZGV4IGFiMjNmMWYuLmNlZDk1ODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBAIC0xNjEsNyArMTYxLDcgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNpZGViYXJUcmVlLmhhbmRs
ZUtleUV2ZW50KGV2ZW50KTsKICAgICB9LAogCi0gICAgYWRkUHJvZmlsZTogZnVuY3Rpb24ocHJv
ZmlsZSkKKyAgICBhZGRQcm9maWxlSGVhZGVyOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKICAg
ICAgICAgdGhpcy5fcHJvZmlsZXMucHVzaChwcm9maWxlKTsKICAgICAgICAgdGhpcy5fcHJvZmls
ZXNJZE1hcFtwcm9maWxlLnVpZF0gPSBwcm9maWxlOwpAQCAtNDAxLDE1ICs0MDEsMTcgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoY3B1UHJv
ZmlsZXMuY2hpbGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZh
ciBwcm9maWxlcyA9IEluc3BlY3RvckNvbnRyb2xsZXIucHJvZmlsZXMoKTsKLSAgICAgICAgdmFy
IHByb2ZpbGVzTGVuZ3RoID0gcHJvZmlsZXMubGVuZ3RoOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHByb2ZpbGVzTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwcm9maWxlID0g
cHJvZmlsZXNbaV07Ci0gICAgICAgICAgICB0aGlzLmFkZFByb2ZpbGUocHJvZmlsZSk7CisgICAg
ICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ2FsbGJhY2socHJvZmlsZUhlYWRlcnMpIHsKKyAgICAgICAg
ICAgIHByb2ZpbGVIZWFkZXJzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS51aWQgLSBi
LnVpZDsgfSk7CisgICAgICAgICAgICB2YXIgcHJvZmlsZUhlYWRlcnNMZW5ndGggPSBwcm9maWxl
SGVhZGVycy5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVI
ZWFkZXJzTGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFByb2Zp
bGVIZWFkZXIocHJvZmlsZUhlYWRlcnNbaV0pOworICAgICAgICAgICAgaWYgKGNwdVByb2ZpbGVz
LmNoaWxkcmVuWzBdKQorICAgICAgICAgICAgICAgIGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBdLnNl
bGVjdCgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBd
KQotICAgICAgICAgICAgY3B1UHJvZmlsZXMuY2hpbGRyZW5bMF0uc2VsZWN0KCk7CisgICAgICAg
IHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChwb3B1bGF0ZUNhbGxiYWNr
KTsKKyAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRQcm9maWxlSGVhZGVycyhjYWxsSWQp
OwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG91bGRQb3B1bGF0ZVByb2ZpbGVzOwogICAgIH0s
CkBAIC01MzUsMyArNTM3LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRl
YmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFy
VHJlZUVsZW1lbnQucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuZGlkR2V0UHJvZmlsZUhlYWRl
cnMgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOworV2ViSW5zcGVjdG9y
LmRpZEdldFByb2ZpbGUgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggOGNmNzYxNS4uOTA5
YTViNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMjYy
LDkgKzEyNjIsOSBAQCBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSkKICAgICBs
b2dNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkUHJvZmlsZSA9IGZ1bmN0
aW9uKHByb2ZpbGUpCitXZWJJbnNwZWN0b3IuYWRkUHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9uKHBy
b2ZpbGUpCiB7Ci0gICAgdGhpcy5wYW5lbHMucHJvZmlsZXMuYWRkUHJvZmlsZShwcm9maWxlKTsK
KyAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGUpOwogfQog
CiBXZWJJbnNwZWN0b3Iuc2V0UmVjb3JkaW5nUHJvZmlsZSA9IGZ1bmN0aW9uKGlzUHJvZmlsaW5n
KQo=
</data>
<flag name="review"
          id="22492"
          type_id="1"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41189</attachid>
            <date>2009-10-14 14:20:38 -0700</date>
            <delta_ts>2009-10-15 02:32:10 -0700</delta_ts>
            <desc>proposed patch - now profiler tests pass</desc>
            <filename>injected-script-patch</filename>
            <type>text/plain</type>
            <size>20552</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDBlYzhhMS4uZDg5ZTVmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAwOS0xMC0xNCAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1pZ3JhdGUgcHJvZmlsZXMgdG8g
dGhlIGluamVjdGVkIHNjcmlwdC1iYXNlZCBzY2hlbWEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzI4CisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxl
SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omdl
dFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmdldFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3Jl
YXRlUHJvZmlsZUhlYWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGVIZWFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmRpZEdldFByb2ZpbGVIZWFkZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQcm9maWxlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2ZpbGVOb2Rl
Q2xhc3MpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvZmlsZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
ZmlsZVZpZXcucHJvdG90eXBlLl9tb3VzZURvd25JbkRhdGFHcmlkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUuX2Fzc2lnblBhcmVudHNJblByb2ZpbGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5hZGRQcm9maWxlSGVhZGVyKToKKwogMjAwOS0xMC0xNCAgQ2hyaXMgTWFycmlu
ICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgT25lIG1vcmUgcm91bmQgb2YgY2hhbmdl
cyB0byBmaWd1cmUgb3V0IHdoeSB0aGUgd2ViZ2wgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKaW5kZXggNzNmYTI2OC4uMzkxY2FjYyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcApA
QCAtNjYsMTAgKzY2LDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICNpbmNs
dWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnU2Vy
dmVyLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Ci0jaW5jbHVk
ZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpA
QCAtMjUzLDIxICsyNTAsNiBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6Y3VycmVudENh
bGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogICAgIHJldHVybiBKU0lu
c3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZ2xvYmFsRXhlYywgdG9KUyhleGVjLCBjYWxsRnJh
bWUpKTsKIH0KIAotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnByb2ZpbGVzKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmKQotewotICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0Owot
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW1wbCgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCk7Ci0gICAgaWYgKCFpYykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlPiA+JiBwcm9maWxlcyA9IGljLT5wcm9maWxlcygpOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9maWxlcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZCh0b0pTKGV4ZWMsIHByb2ZpbGVzW2ldLmdldCgpKSk7Ci0KLSAgICBy
ZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgcmVzdWx0KTsKLX0KLQogI2VuZGlmCiAKIEpTVmFs
dWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpub2RlRm9ySWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaAppbmRleCAxZjZjMmE1Li43MWRkODhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuaApAQCAtNDYxLDcgKzQ2MSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyTmV4dFNpYmxpbmcpOwog
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQcmV2aW91c1NpYmxpbmcpOwogCi0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFByb2ZpbGVzKTsKICAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kSGlnaGxpZ2h0RE9NTm9kZSk7CiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEFkZFJlc291cmNlU291cmNl
VG9GcmFtZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEFkZFNv
dXJjZVRvRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCBj
NzFlZmE0Li44M2E5NzE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApA
QCAtMjc4LDEzICsyNzgsNiBAQCBib29sIEluc3BlY3RvckJhY2tlbmQ6OnRpbWVsaW5lUHJvZmls
ZXJFbmFibGVkKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQot
Y29uc3QgUHJvZmlsZXNBcnJheSYgSW5zcGVjdG9yQmFja2VuZDo6cHJvZmlsZXMoKSBjb25zdAot
ewotICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnByb2ZpbGVzKCk7Ci0gICAgcmV0dXJuIG1fZW1wdHlQcm9maWxlczsK
LX0KLQogdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzdGFydFByb2ZpbGluZygpCiB7CiAgICAgaWYg
KG1faW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTMxNiw2ICszMDksMTggQEAgYm9vbCBJbnNwZWN0
b3JCYWNrZW5kOjpwcm9maWxlckVuYWJsZWQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRQcm9maWxlSGVhZGVycyhsb25nIGNhbGxJZCkKK3sKKyAg
ICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXItPmdldFByb2ZpbGVIZWFkZXJzKGNhbGxJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6Z2V0UHJvZmlsZShsb25nIGNhbGxJZCwgdW5zaWduZWQgdWlkKQoreworICAgIGlmIChtX2lu
c3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Z2V0UHJv
ZmlsZShjYWxsSWQsIHVpZCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZW5hYmxlRGVi
dWdnZXIoYm9vbCBhbHdheXMpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCA1YjA0YmI0Li45ZDc1ZTJmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xMDAsOCArMTAwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgdGltZWxpbmVQcm9maWxlckVuYWJsZWQoKSBjb25zdDsKIAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGNvbnN0IFByb2ZpbGVzQXJyYXkmIHByb2ZpbGVz
KCkgY29uc3Q7Ci0KICAgICB2b2lkIHN0YXJ0UHJvZmlsaW5nKCk7CiAgICAgdm9pZCBzdG9wUHJv
ZmlsaW5nKCk7CiAKQEAgLTEwOSw2ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxl
UHJvZmlsZXIoYm9vbCBhbHdheXMpOwogICAgIGJvb2wgcHJvZmlsZXJFbmFibGVkKCk7CiAKKyAg
ICB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKGxvbmcgY2FsbElkKTsKKyAgICB2b2lkIGdldFByb2Zp
bGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCk7CisKICAgICB2b2lkIGVuYWJsZURlYnVnZ2Vy
KGJvb2wgYWx3YXlzKTsKICAgICB2b2lkIGRpc2FibGVEZWJ1Z2dlcihib29sIGFsd2F5cyk7CiAg
ICAgYm9vbCBkZWJ1Z2dlckVuYWJsZWQoKSBjb25zdDsKQEAgLTE3MSw5ICsxNzIsNiBAQCBwcml2
YXRlOgogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOwog
ICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0gICAgUHJvZmlsZXNBcnJheSBtX2VtcHR5UHJvZmlsZXM7Ci0jZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5p
ZGwKaW5kZXggNTFjZTc0MC4uN2EwMGM2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5pZGwKQEAgLTEwMCw3ICsxMDAsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQg
c3RhcnRQcm9maWxpbmcoKTsKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKCk7CiAKLSAgICAg
ICAgW0N1c3RvbV0gQXJyYXkgcHJvZmlsZXMoKTsKKyAgICAgICAgdm9pZCBnZXRQcm9maWxlSGVh
ZGVycyhpbiBsb25nIGNhbGxJZCk7CisgICAgICAgIHZvaWQgZ2V0UHJvZmlsZShpbiBsb25nIGNh
bGxJZCwgaW4gdW5zaWduZWQgbG9uZyB1aWQpOwogI2VuZGlmCiAgICAgICAgIHZvaWQgZGlzcGF0
Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgbWV0aG9kTmFt
ZSwgaW4gRE9NU3RyaW5nIGFyZ3VtZW50cywgaW4gYm9vbGVhbiBhc3luYyk7CiAgICAgICAgIHZv
aWQgZ2V0Q2hpbGROb2RlcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBhNjNkMmZiLi4xNzRkNTJj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTMzNiwx
MSArMTMzNiwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGUoUGFzc1Jl
ZlB0cjxQcm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaQogICAgICAgICByZXR1cm47CiAK
ICAgICBSZWZQdHI8UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7Ci0gICAgbV9wcm9maWxl
cy5hcHBlbmQocHJvZmlsZSk7CisgICAgbV9wcm9maWxlcy5hZGQocHJvZmlsZS0+dWlkKCksIHBy
b2ZpbGUpOwogCiAgICAgaWYgKG1fZnJvbnRlbmQpIHsKICAgICAgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAgbV9mcm9udGVuZC0+YWRkUHJvZmlsZSh0b0pT
KG1fc2NyaXB0U3RhdGUsIHByb2ZpbGUuZ2V0KCkpKTsKKyAgICAgICAgbV9mcm9udGVuZC0+YWRk
UHJvZmlsZUhlYWRlcihjcmVhdGVQcm9maWxlSGVhZGVyKCpwcm9maWxlKSk7CiAgICAgfQogCiAg
ICAgYWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShwcm9maWxlLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwpOwpAQCAtMTM3MCw2ICsxMzcwLDM1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFVTdHJpbmcmIHRp
dGxlCiAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvZmlsZUhlYWRlcnMobG9uZyBjYWxs
SWQpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kKQorICAgICAgICByZXR1cm47CisgICAgU2NyaXB0
QXJyYXkgcmVzdWx0ID0gbV9mcm9udGVuZC0+bmV3U2NyaXB0QXJyYXkoKTsKKyAgICBQcm9maWxl
c01hcDo6aXRlcmF0b3IgcHJvZmlsZXNFbmQgPSBtX3Byb2ZpbGVzLmVuZCgpOworICAgIGludCBp
ID0gMDsKKyAgICBmb3IgKFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuYmVn
aW4oKTsgaXQgIT0gcHJvZmlsZXNFbmQ7ICsraXQpCisgICAgICAgIHJlc3VsdC5zZXQoaSsrLCBj
cmVhdGVQcm9maWxlSGVhZGVyKCppdC0+c2Vjb25kKSk7CisgICAgbV9mcm9udGVuZC0+ZGlkR2V0
UHJvZmlsZUhlYWRlcnMoY2FsbElkLCByZXN1bHQpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKK3sKKyAgICBpZiAo
IW1fZnJvbnRlbmQpCisgICAgICAgIHJldHVybjsKKyAgICBQcm9maWxlc01hcDo6aXRlcmF0b3Ig
aXQgPSBtX3Byb2ZpbGVzLmZpbmQodWlkKTsKKyAgICBpZiAoaXQgIT0gbV9wcm9maWxlcy5lbmQo
KSkKKyAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0UHJvZmlsZShjYWxsSWQsIHRvSlMobV9zY3Jp
cHRTdGF0ZSwgaXQtPnNlY29uZC5nZXQoKSkpOworfQorCitTY3JpcHRPYmplY3QgSW5zcGVjdG9y
Q29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBKU0M6OlByb2ZpbGUmIHByb2Zp
bGUpCit7CisgICAgU2NyaXB0T2JqZWN0IGhlYWRlciA9IG1fZnJvbnRlbmQtPm5ld1NjcmlwdE9i
amVjdCgpOworICAgIGhlYWRlci5zZXQoInRpdGxlIiwgcHJvZmlsZS50aXRsZSgpKTsKKyAgICBo
ZWFkZXIuc2V0KCJ1aWQiLCBwcm9maWxlLnVpZCgpKTsKKyAgICByZXR1cm4gaGVhZGVyOworfQor
CiBVU3RyaW5nIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJv
ZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpCiB7CiAgICAgaWYg
KGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggOTViMGRiMi4uOGMxNDUzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtMjY1LDcgKzI2NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBy
b2ZpbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRQcm9maWxlRmluaXNoZWRN
ZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgYWRkU3RhcnRQ
cm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKLSAgICBjb25z
dCBQcm9maWxlc0FycmF5JiBwcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZmlsZXM7IH0K
IAogICAgIGJvb2wgaXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGU7IH0KIApAQCAtMzE1LDkgKzMxNCwx
NCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRyPEpTQzo6UHJv
ZmlsZT4gPiBQcm9maWxlc01hcDsKKwogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmls
aW5nU29vbigpOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wpOwogICAgIHZvaWQg
ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQoYm9vbCBhbHdheXMpOworICAgIHZvaWQgZ2V0UHJv
ZmlsZUhlYWRlcnMobG9uZyBjYWxsSWQpOworICAgIHZvaWQgZ2V0UHJvZmlsZShsb25nIGNhbGxJ
ZCwgdW5zaWduZWQgdWlkKTsKKyAgICBTY3JpcHRPYmplY3QgY3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBKU0M6OlByb2ZpbGUmIHByb2ZpbGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNF
KQogICAgIHZvaWQgc2VsZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRhdGFiYXNlKTsKQEAgLTM5NCw3
ICszOTgsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmls
ZU51bWJlcjsKICAgICB1bnNpZ25lZCBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcjsK
ICAgICBUaW1lcjxJbnNwZWN0b3JDb250cm9sbGVyPiBtX3N0YXJ0UHJvZmlsaW5nOwotICAgIFBy
b2ZpbGVzQXJyYXkgbV9wcm9maWxlczsKKyAgICBQcm9maWxlc01hcCBtX3Byb2ZpbGVzOwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXggNGFh
MTIyMi4uMmU2ZGMyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApA
QCAtMjYxLDkgKzI2MSw5IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmZhaWxlZFRvUGFyc2VT
Y3JpcHRTb3VyY2UoY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgZnVuY3Rpb24t
PmNhbGwoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkUHJvZmlsZShjb25zdCBK
U0M6OkpTVmFsdWUmIHByb2ZpbGUpCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRQcm9maWxl
SGVhZGVyKGNvbnN0IFNjcmlwdFZhbHVlJiBwcm9maWxlKQogewotICAgIE93blB0cjxTY3JpcHRG
dW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkUHJvZmlsZSIpKTsKKyAg
ICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImFk
ZFByb2ZpbGVIZWFkZXIiKSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KHByb2ZpbGUp
OwogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CkBAIC0yNzUsNiArMjc1LDIyIEBAIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmQ6OnNldFJlY29yZGluZ1Byb2ZpbGUoYm9vbCBpc1Byb2ZpbGluZykKICAg
ICBmdW5jdGlvbi0+Y2FsbCgpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQ
cm9maWxlSGVhZGVycyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJheSYgaGVhZGVycykKK3sK
KyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwo
ImRpZEdldFByb2ZpbGVIZWFkZXJzIikpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChj
YWxsSWQpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChoZWFkZXJzKTsKKyAgICBmdW5j
dGlvbi0+Y2FsbCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQcm9maWxl
KGludCBjYWxsSWQsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm9maWxlKQoreworICAgIE93blB0cjxT
Y3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiZGlkR2V0UHJvZmls
ZSIpKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoY2FsbElkKTsKKyAgICBmdW5jdGlv
bi0+YXBwZW5kQXJndW1lbnQocHJvZmlsZSk7CisgICAgZnVuY3Rpb24tPmNhbGwoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cGF1c2VkU2NyaXB0KGNvbnN0IFNjcmlwdFZhbHVlJiBj
YWxsRnJhbWVzKQogewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5l
d0Z1bmN0aW9uQ2FsbCgicGF1c2VkU2NyaXB0IikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmgKaW5kZXggMzY4MTVjZi4uMDg4M2FjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5oCkBAIC04OSw4ICs4OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgcHJvZmlsZXJXYXNEaXNhYmxlZCgpOwogICAgICAgICB2b2lkIHBhcnNlZFNjcmlw
dFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUmKTsKICAgICAgICAgdm9pZCBmYWlsZWRUb1Bh
cnNlU2NyaXB0U291cmNlKGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIGludCBlcnJvckxpbmUsIGNv
bnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgdm9pZCBhZGRQcm9maWxl
KGNvbnN0IEpTQzo6SlNWYWx1ZSYgcHJvZmlsZSk7CisgICAgICAgIHZvaWQgYWRkUHJvZmlsZUhl
YWRlcihjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmlsZSk7CiAgICAgICAgIHZvaWQgc2V0UmVjb3Jk
aW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKTsKKyAgICAgICAgdm9pZCBkaWRHZXRQcm9maWxl
SGVhZGVycyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJheSYgaGVhZGVycyk7CisgICAgICAg
IHZvaWQgZGlkR2V0UHJvZmlsZShpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvZmls
ZSk7CiAgICAgICAgIHZvaWQgcGF1c2VkU2NyaXB0KGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJh
bWVzKTsKICAgICAgICAgdm9pZCByZXN1bWVkU2NyaXB0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgYi9XZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCmluZGV4IDNjM2UyNzkuLjJkNDYyZjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcApAQCAtMTA0
LDI4ICsxMDQsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRTZWxmVGltZShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT5zZWxmVGltZSgpKTsKIH0KIAotc3RhdGljIEpT
VmFsdWVSZWYgZ2V0VG90YWxQZXJjZW50KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9m
Q2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxl
Tm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+
dG90YWxQZXJjZW50KCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRTZWxmUGVyY2VudChK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJv
ZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxl
Tm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnNlbGZQZXJjZW50KCkpOwotfQotCiBzdGF0
aWMgSlNWYWx1ZVJlZiBnZXROdW1iZXJPZkNhbGxzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKIHsKICAgICBKU0M6OkpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CkBAIC0xODQsMzAgKzE2Miw2IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGdldENoaWxkcmVuKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTU3RyaW5nCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEpT
VmFsdWVSZWYgZ2V0UGFyZW50KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3Mo
Y3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4
ZWMsIHRvSlMoZXhlYywgcHJvZmlsZU5vZGUtPnBhcmVudCgpKSk7Ci19Ci0KLXN0YXRpYyBKU1Zh
bHVlUmVmIGdldEhlYWQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
SlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgs
IHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3Rh
dGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywg
dG9KUyhleGVjLCBwcm9maWxlTm9kZS0+aGVhZCgpKSk7Ci19Ci0KIHN0YXRpYyBKU1ZhbHVlUmVm
IGdldFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNT
dHJpbmdSZWYsIEpTVmFsdWVSZWYqKQogewogICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKQEAgLTI0NSwxMiArMTk5LDggQEAgSlNDbGFzc1JlZiBQcm9maWxlTm9k
ZUNsYXNzKCkKICAgICAgICAgeyAibGluZU51bWJlciIsIGdldExpbmVOdW1iZXIsIDAsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJ0b3RhbFRpbWUiLCBnZXRUb3RhbFRp
bWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJzZWxmVGltZSIs
IGdldFNlbGZUaW1lLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAi
dG90YWxQZXJjZW50IiwgZ2V0VG90YWxQZXJjZW50LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKLSAgICAgICAgeyAic2VsZlBlcmNlbnQiLCBnZXRTZWxmUGVyY2VudCwgMCwga0pTUHJv
cGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgIm51bWJlck9mQ2FsbHMiLCBnZXROdW1i
ZXJPZkNhbGxzLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAiY2hp
bGRyZW4iLCBnZXRDaGlsZHJlbiwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAg
ICAgIHsgInBhcmVudCIsIGdldFBhcmVudCwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
Ci0gICAgICAgIHsgImhlYWQiLCBnZXRIZWFkLCAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUgfSwK
ICAgICAgICAgeyAidmlzaWJsZSIsIGdldFZpc2libGUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
Tm9uZSB9LAogICAgICAgICB7ICJjYWxsVUlEIiwgZ2V0Q2FsbFVJRCwgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgMCwgMCwgMCwgMCB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKaW5kZXggMmI4YzZjZS4uYThjM2YxNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAtNzgsMTIgKzc4LDIy
IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAKICAgICB0
aGlzLnByb2ZpbGUgPSBwcm9maWxlOwogCi0gICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlID0g
dGhpcy5ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7Ci0gICAgdGhpcy5wcm9maWxlRGF0YUdy
aWRUcmVlLnNvcnQoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21w
YXJhdG9yKCJzZWxmVGltZSIsIGZhbHNlKSk7Ci0KLSAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB2
YXIgc2VsZiA9IHRoaXM7CisgICAgZnVuY3Rpb24gcHJvZmlsZUNhbGxiYWNrKHByb2ZpbGUpCisg
ICAgeworICAgICAgICBzZWxmLnByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICBzZWxmLl9hc3Np
Z25QYXJlbnRzSW5Qcm9maWxlKCk7CisgICAgICAKKyAgICAgICAgc2VsZi5wcm9maWxlRGF0YUdy
aWRUcmVlID0gc2VsZi5ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7CisgICAgICAgIHNlbGYu
cHJvZmlsZURhdGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVl
LnByb3BlcnR5Q29tcGFyYXRvcigic2VsZlRpbWUiLCBmYWxzZSkpOworICAgICAKKyAgICAgICAg
c2VsZi5yZWZyZXNoKCk7CisgICAgIAorICAgICAgICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9u
KCk7CisgICAgfQogCi0gICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworICAgIHZhciBj
YWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChwcm9maWxlQ2FsbGJhY2spOworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuZ2V0UHJvZmlsZShjYWxsSWQsIHRoaXMucHJvZmlsZS51aWQp
OwogfQogCiBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewpAQCAtNTMzLDYg
KzU0MywyNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOworICAgIH0sCisKKyAgICBfYXNzaWduUGFyZW50c0luUHJvZmlsZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIGhlYWQgPSB0aGlzLnByb2ZpbGUuaGVhZDsKKyAgICAgICAgaGVh
ZC5wYXJlbnQgPSBudWxsOworICAgICAgICBoZWFkLmhlYWQgPSBudWxsOworICAgICAgICB2YXIg
bm9kZXNUb1RyYXZlcnNlID0gWyB7IHBhcmVudDogaGVhZCwgY2hpbGRyZW46IGhlYWQuY2hpbGRy
ZW4gfSBdOworICAgICAgICB3aGlsZSAobm9kZXNUb1RyYXZlcnNlLmxlbmd0aCA+IDApIHsKKyAg
ICAgICAgICAgIHZhciBwYWlyID0gbm9kZXNUb1RyYXZlcnNlLnNoaWZ0KCk7CisgICAgICAgICAg
ICB2YXIgcGFyZW50ID0gcGFpci5wYXJlbnQ7CisgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBw
YWlyLmNoaWxkcmVuOworICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBjaGlsZHJlbltpXS5oZWFkID0gaGVhZDsKKyAgICAgICAgICAgICAgICBjaGlsZHJl
bltpXS5wYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmNo
aWxkcmVuLmxlbmd0aCA+IDApCisgICAgICAgICAgICAgICAgICAgIG5vZGVzVG9UcmF2ZXJzZS5w
dXNoKHsgcGFyZW50OiBjaGlsZHJlbltpXSwgY2hpbGRyZW46IGNoaWxkcmVuW2ldLmNoaWxkcmVu
IH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGFiMjNmMWYuLmNlZDk1ODcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBAIC0x
NjEsNyArMTYxLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLnNpZGViYXJUcmVlLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKICAgICB9LAog
Ci0gICAgYWRkUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICBhZGRQcm9maWxlSGVhZGVy
OiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvZmlsZXMucHVzaChw
cm9maWxlKTsKICAgICAgICAgdGhpcy5fcHJvZmlsZXNJZE1hcFtwcm9maWxlLnVpZF0gPSBwcm9m
aWxlOwpAQCAtNDAxLDE1ICs0MDEsMTcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICBpZiAoY3B1UHJvZmlsZXMuY2hpbGRyZW4ubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBwcm9maWxlcyA9IEluc3BlY3RvckNvbnRy
b2xsZXIucHJvZmlsZXMoKTsKLSAgICAgICAgdmFyIHByb2ZpbGVzTGVuZ3RoID0gcHJvZmlsZXMu
bGVuZ3RoOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVzTGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIHZhciBwcm9maWxlID0gcHJvZmlsZXNbaV07Ci0gICAgICAgICAgICB0
aGlzLmFkZFByb2ZpbGUocHJvZmlsZSk7CisgICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ2FsbGJh
Y2socHJvZmlsZUhlYWRlcnMpIHsKKyAgICAgICAgICAgIHByb2ZpbGVIZWFkZXJzLnNvcnQoZnVu
Y3Rpb24oYSwgYikgeyByZXR1cm4gYS51aWQgLSBiLnVpZDsgfSk7CisgICAgICAgICAgICB2YXIg
cHJvZmlsZUhlYWRlcnNMZW5ndGggPSBwcm9maWxlSGVhZGVycy5sZW5ndGg7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVIZWFkZXJzTGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZUhlYWRlcnNbaV0p
OworICAgICAgICAgICAgaWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBdKQorICAgICAgICAgICAg
ICAgIGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBdLnNlbGVjdCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGNwdVByb2ZpbGVzLmNoaWxkcmVuWzBdKQotICAgICAgICAgICAgY3B1UHJvZmlsZXMu
Y2hpbGRyZW5bMF0uc2VsZWN0KCk7CisgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3Iu
Q2FsbGJhY2sud3JhcChwb3B1bGF0ZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5nZXRQcm9maWxlSGVhZGVycyhjYWxsSWQpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9z
aG91bGRQb3B1bGF0ZVByb2ZpbGVzOwogICAgIH0sCkBAIC01MzUsMyArNTM3LDYgQEAgV2ViSW5z
cGVjdG9yLlByb2ZpbGVHcm91cFNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiB9CiAK
IFdlYkluc3BlY3Rvci5Qcm9maWxlR3JvdXBTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlOworCitX
ZWJJbnNwZWN0b3IuZGlkR2V0UHJvZmlsZUhlYWRlcnMgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2su
cHJvY2Vzc0NhbGxiYWNrOworV2ViSW5zcGVjdG9yLmRpZEdldFByb2ZpbGUgPSBXZWJJbnNwZWN0
b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKaW5kZXggOGNmNzYxNS4uOTA5YTViNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMjYyLDkgKzEyNjIsOSBAQCBXZWJJbnNwZWN0b3Iu
bG9nID0gZnVuY3Rpb24obWVzc2FnZSkKICAgICBsb2dNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1X
ZWJJbnNwZWN0b3IuYWRkUHJvZmlsZSA9IGZ1bmN0aW9uKHByb2ZpbGUpCitXZWJJbnNwZWN0b3Iu
YWRkUHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9uKHByb2ZpbGUpCiB7Ci0gICAgdGhpcy5wYW5lbHMu
cHJvZmlsZXMuYWRkUHJvZmlsZShwcm9maWxlKTsKKyAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5h
ZGRQcm9maWxlSGVhZGVyKHByb2ZpbGUpOwogfQogCiBXZWJJbnNwZWN0b3Iuc2V0UmVjb3JkaW5n
UHJvZmlsZSA9IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQo=
</data>
<flag name="review"
          id="22522"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>