<?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>93871</bug_id>
          
          <creation_ts>2012-08-13 11:18:55 -0700</creation_ts>
          <short_desc>[CSS Shaders] Remove direct texture access via u_texture</short_desc>
          <delta_ts>2012-09-12 10:22:47 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95760</dependson>
          <blocked>71392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Vujovic">mvujovic</reporter>
          <assigned_to name="Max Vujovic">mvujovic</assigned_to>
          <cc>achicu</cc>
    
    <cc>dino</cc>
    
    <cc>emalasky</cc>
    
    <cc>jacobg</cc>
    
    <cc>jnetterfield</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>693854</commentid>
    <comment_count>0</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-13 11:18:55 -0700</bug_when>
    <thetext>Due to security concerns, we will no longer expose the DOM element texture to CSS Shaders as a uniform. Authors will write to special symbols in the fragment shader (css_MixColor and css_ColorMatrix) that WebKit will blend and composite with the DOM element texture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716188</commentid>
    <comment_count>1</comment_count>
      <attachid>163154</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-10 09:57:50 -0700</bug_when>
    <thetext>Created attachment 163154
Patch

Alex, can you take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716192</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 10:00:01 -0700</bug_when>
    <thetext>Attachment 163154 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1
Source/WebCore/platform/graphics/ANGLEWebKitBridge.h:46:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/platform/graphics/ANGLEWebKitBridge.h:47:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/platform/graphics/ANGLEWebKitBridge.h:48:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/platform/graphics/ANGLEWebKitBridge.h:63:  The parameter name &quot;shaderType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/ANGLEWebKitBridge.h:65:  The parameter name &quot;dataType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716204</commentid>
    <comment_count>3</comment_count>
      <attachid>163157</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-10 10:06:43 -0700</bug_when>
    <thetext>Created attachment 163157
Patch

Fixed style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716348</commentid>
    <comment_count>4</comment_count>
      <attachid>163157</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-10 12:13:25 -0700</bug_when>
    <thetext>Comment on attachment 163157
Patch

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

Looks good overall. I just had some small comments.

&gt; Source/WebCore/ChangeLog:20
&gt; +            uniforms in the last validated vertex shader or fragment shader. Uniform info includes

nit: [Typo] includes is written twice

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:118
&gt; +void ANGLEWebKitBridge::getUniformInfo(ShShaderType shaderType, Vector&lt;ANGLEUniformInfo&gt; &amp;infoVector)

I suppose this needs to use a plural version of getUniformInfo.

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:123
&gt; +    if (numUniforms &lt;= 0)

I don&apos;t know when ANGLE returns &lt; 0, but I think we should just consider it a validation error (ie. return false here and invalidate the shader in the caller).

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:137
&gt; +        info.name = nameBuffer.get();

Should you use the nameLength in the construction of the String here? There are constructors that get the length as an argument. 
Is ANGLE adding the null-char? 
Is maxNameLength long enough to include the null-char?

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:142
&gt; +int ANGLEWebKitBridge::getParameterValue(const ShHandle compiler, ShShaderInfo parameterName)

I suppose you could keep this function as a file static one and maybe use the inline keyword.

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:149
&gt; +bool ANGLEWebKitBridge::isSamplerType(ShDataType dataType)

Would this look better on the ANGLEUniformInfo itself?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:88
&gt; +    bool vertexShaderValid = validator-&gt;validateShaderSource(originalVertexShader.utf8().data(), SHADER_TYPE_VERTEX, m_validatedVertexShader, vertexShaderLog, SH_ATTRIBUTES_UNIFORMS);

Do you want to add a comment about SH_ATTRIBUTES_UNIFORMS around ANGLEWebKitBridge::getUniformInfo implementation? Others might use the function and not understand why it&apos;s not working for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716671</commentid>
    <comment_count>5</comment_count>
      <attachid>163157</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-10 16:35:10 -0700</bug_when>
    <thetext>Comment on attachment 163157
Patch

Thanks for the review, Alex!

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

&gt;&gt; Source/WebCore/ChangeLog:20
&gt;&gt; +            uniforms in the last validated vertex shader or fragment shader. Uniform info includes
&gt; 
&gt; nit: [Typo] includes is written twice

Thanks.

&gt;&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:118
&gt;&gt; +void ANGLEWebKitBridge::getUniformInfo(ShShaderType shaderType, Vector&lt;ANGLEUniformInfo&gt; &amp;infoVector)
&gt; 
&gt; I suppose this needs to use a plural version of getUniformInfo.

Yes, that would be better. I&apos;ll change it to &quot;getUniforms&quot;. Then, I&apos;ll rename the struct &quot;ANGLEUniformInfo&quot; to ANGLEShaderSymbol so we can reuse it for attributes and not just uniforms.

&gt;&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:123
&gt;&gt; +    if (numUniforms &lt;= 0)
&gt; 
&gt; I don&apos;t know when ANGLE returns &lt; 0, but I think we should just consider it a validation error (ie. return false here and invalidate the shader in the caller).

ANGLE should never return &lt; 0 for the number of uniforms in the shader if we&apos;ve hooked things up correctly in WebKit. I&apos;ll make an ASSERT(numUniforms &gt;= 0). Then, I&apos;ll return early if there are no uniforms in the author&apos;s shader, which is perfectly valid.

&gt;&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:137
&gt;&gt; +        info.name = nameBuffer.get();
&gt; 
&gt; Should you use the nameLength in the construction of the String here? There are constructors that get the length as an argument. 
&gt; Is ANGLE adding the null-char? 
&gt; Is maxNameLength long enough to include the null-char?

&gt; Should you use the nameLength in the construction of the String here? There are constructors that get the length as an argument.
That&apos;s a nice optimization. I&apos;ll do that.

&gt; Is ANGLE adding the null-char?
Yes it is.

&gt; Is maxNameLength long enough to include the null-char?
Yes, it includes the null-char.

Thanks for checking :)

&gt;&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:142
&gt;&gt; +int ANGLEWebKitBridge::getParameterValue(const ShHandle compiler, ShShaderInfo parameterName)
&gt; 
&gt; I suppose you could keep this function as a file static one and maybe use the inline keyword.

Will do.

&gt;&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:149
&gt;&gt; +bool ANGLEWebKitBridge::isSamplerType(ShDataType dataType)
&gt; 
&gt; Would this look better on the ANGLEUniformInfo itself?

Great idea. Will do.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:88
&gt;&gt; +    bool vertexShaderValid = validator-&gt;validateShaderSource(originalVertexShader.utf8().data(), SHADER_TYPE_VERTEX, m_validatedVertexShader, vertexShaderLog, SH_ATTRIBUTES_UNIFORMS);
&gt; 
&gt; Do you want to add a comment about SH_ATTRIBUTES_UNIFORMS around ANGLEWebKitBridge::getUniformInfo implementation? Others might use the function and not understand why it&apos;s not working for them.

Another great idea. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716700</commentid>
    <comment_count>6</comment_count>
      <attachid>163251</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-10 17:06:13 -0700</bug_when>
    <thetext>Created attachment 163251
Patch

Updated patch from Alex&apos;s informal review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717345</commentid>
    <comment_count>7</comment_count>
      <attachid>163251</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-09-11 10:33:07 -0700</bug_when>
    <thetext>Comment on attachment 163251
Patch

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

This patch is going to be helpful in my bug to map translated uniform and attribute names to/from their original names! (e.g. when they are over 256 chars in length)

Just some small change requests.

&gt; Source/WebCore/ChangeLog:13
&gt; +        Additionally, reject shaders with author-defined sampler uniforms. When we implement texture 
&gt; +        parameters, we will allow shaders whose samplers are bound to valid textures. We must not
&gt; +        allow OpenGL to give unbound samplers a default value of 0 because that references the DOM
&gt; +        element texture, which should be inaccessible to the author&apos;s shader code.

This probably shows my ignorance of GL, but can the author do texture2D(0, vec2(10, 10)); or will ANGLE reject that?

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:35
&gt; +inline static int getParameterValue(const ShHandle compiler, ShShaderInfo parameterName)

I&apos;m not sure this is the best name. To me &quot;parameter&quot; implies that it is a value you pass into the compiler, whereas this is getting values produced by the compiler. I can&apos;t think of a better name right now though. getCompilerValue seems a bit weird.

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:130
&gt; +    // There shouldn&apos;t be fewer than zero uniforms.

I don&apos;t think you need this comment - the assert and conditional explain it.

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:136
&gt; +    // The max length for a uniform name should be at least one character long.

Similarly here. The next line ASSERTs this comment. The difference here is that we&apos;ll crash in release builds if length is &lt; 0 due to later code. I think we should guard against this.

&gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:145
&gt; +        // A uniform name should be at least one character long.

And again.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:39
&gt; +CustomFilterCompiledProgram::CustomFilterCompiledProgram(PassRefPtr&lt;GraphicsContext3D&gt; context, const String&amp; validatedVertexShader, const String&amp; validatedFragmentShader, bool mixEnabled)

I think &quot;mixEnabled&quot; could be named something more like &quot;allowedToAccessPrivateTexures&quot; (although not that name, it&apos;s terrible!). I&apos;m looking for something that describes the meaning in the context of this function. &quot;mix&quot; is a term that comes from the application of the shader, not its construction.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:133
&gt; +        // Only enable these internal symbols if the author is using the CSS mix function.

Could you explain this in more detail, and maybe in reverse? For example, &quot;when the author is using the mix function in their CSS shader, they are then able to access internal symbols representing the texture of the DOM element...&quot; or something :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717346</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-09-11 10:33:50 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; This probably shows my ignorance of GL, but can the author do texture2D(0, vec2(10, 10)); or will ANGLE reject that?

Of course I meant vec2(0.5, 0.5) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717836</commentid>
    <comment_count>9</comment_count>
      <attachid>163501</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-11 19:45:08 -0700</bug_when>
    <thetext>Created attachment 163501
Patch

Thanks for the review, Dean!

(In reply to comment #7)&gt; (From update of attachment 163251 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163251&amp;action=review
&gt;
&gt; This patch is going to be helpful in my bug to map translated uniform and attribute names to/from their original names! (e.g. when they are over 256 chars in length)
&gt;

Awesome!

&gt; Just some small change requests.
&gt;
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        Additionally, reject shaders with author-defined sampler uniforms. When we implement texture
&gt; &gt; +        parameters, we will allow shaders whose samplers are bound to valid textures. We must not
&gt; &gt; +        allow OpenGL to give unbound samplers a default value of 0 because that references the DOM
&gt; &gt; +        element texture, which should be inaccessible to the author&apos;s shader code.
&gt;
&gt; This probably shows my ignorance of GL, but can the author do texture2D(0, vec2(10, 10)); or will ANGLE reject that?
&gt;

Good question :). Thankfully, ANGLE will reject that since it expects a sampler2D for the first argument, but here we&apos;ve provided an int. We&apos;ll get an error like &quot;No matching function for call to texture2D(int, vec2)&quot;. 

We are also fortunate because samplers are not valid l-values in GLSL, meaning an author can&apos;t change their value in the shader.

&gt; &gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:35
&gt; &gt; +inline static int getParameterValue(const ShHandle compiler, ShShaderInfo parameterName)
&gt;
&gt; I&apos;m not sure this is the best name. To me &quot;parameter&quot; implies that it is a value you pass into the compiler, whereas this is getting values produced by the compiler. I can&apos;t think of a better name right now though. getCompilerValue seems a bit weird.
&gt;

Right. Let&apos;s call it &quot;getValidationResultValue&quot; since we&apos;re getting info related to the result of last validation (e.g. the number of uniforms found).

&gt; &gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:130
&gt; &gt; +    // There shouldn&apos;t be fewer than zero uniforms.
&gt;
&gt; I don&apos;t think you need this comment - the assert and conditional explain it.
&gt;

Alex had a good idea about this- I&apos;ve changed ANGLEWebKitBridge::getUniforms to return a bool. It returns false if an unexpected error occurred in ANGLE. Otherwise, it returns true. This way, we don&apos;t validate the shader if something went wrong with ANGLE, and we also don&apos;t crash. Most importantly, we don&apos;t miss an author-defined sampler and proceed, since that could be a security issue.

I&apos;ve removed all of the ASSERTs and their corresponding comments since we return false in those cases now.

I&apos;ve also added a comment about the return value of getUniforms() above its prototype.

&gt; &gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:136
&gt; &gt; +    // The max length for a uniform name should be at least one character long.
&gt;
&gt; Similarly here. The next line ASSERTs this comment. The difference here is that we&apos;ll crash in release builds if length is &lt; 0 due to later code. I think we should guard against this.
&gt;

See above.

&gt; &gt; Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp:145
&gt; &gt; +        // A uniform name should be at least one character long.
&gt;
&gt; And again.
&gt;

See above.

&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:39
&gt; &gt; +CustomFilterCompiledProgram::CustomFilterCompiledProgram(PassRefPtr&lt;GraphicsContext3D&gt; context, const String&amp; validatedVertexShader, const String&amp; validatedFragmentShader, bool mixEnabled)
&gt;
&gt; I think &quot;mixEnabled&quot; could be named something more like &quot;allowedToAccessPrivateTexures&quot; (although not that name, it&apos;s terrible!). I&apos;m looking for something that describes the meaning in the context of this function. &quot;mix&quot; is a term that comes from the application of the shader, not its construction.
&gt;

Yes, mixEnabled is an unfortunate name. Based on our IRC chat, I&apos;ve made a enum instead:

enum CustomFilterProgramType {
    PROGRAM_TYPE_NO_ELEMENT_TEXTURE,
    PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE
};

Now we pass this programType enum instead of the mixEnabled bool.

In general, I think programInfo should have a programType, and we should remove mixSettings.enabled. I&apos;ve added a FIXME and a bug for this:
https://bugs.webkit.org/show_bug.cgi?id=96448

&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:133
&gt; &gt; +        // Only enable these internal symbols if the author is using the CSS mix function.
&gt;
&gt; Could you explain this in more detail, and maybe in reverse? For example, &quot;when the author is using the mix function in their CSS shader, they are then able to access internal symbols representing the texture of the DOM element...&quot; or something :)

I&apos;ve changed it to:
// When the author uses the CSS mix function in a custom filter, we add internal symbols to the shader code.
// One of them, css_u_texture, references the texture of the element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718456</commentid>
    <comment_count>10</comment_count>
      <attachid>163649</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-12 09:29:28 -0700</bug_when>
    <thetext>Created attachment 163649
Patch for Landing

Added Dean to Reviewed By field in ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718486</commentid>
    <comment_count>11</comment_count>
      <attachid>163649</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 10:22:44 -0700</bug_when>
    <thetext>Comment on attachment 163649
Patch for Landing

Clearing flags on attachment: 163649

Committed r128334: &lt;http://trac.webkit.org/changeset/128334&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718487</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 10:22:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163154</attachid>
            <date>2012-09-10 09:57:50 -0700</date>
            <delta_ts>2012-09-10 10:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93871-1.patch</filename>
            <type>text/plain</type>
            <size>26563</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGQ0NDBjLi4zN2JhMDEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDkt
MDkgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gUmVtb3ZlIGRpcmVjdCB0ZXh0dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCB0aGUgInVfdGV4dHVyZSIgc2FtcGxlciBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSB0
byBhdXRob3Igc2hhZGVyCisgICAgICAgIGNvZGUgYmVjYXVzZSBpdCB3YXMgcmVtb3ZlZC4gVGhl
c2UgdGVzdHMgYWxzbyB2ZXJpZnkgdGhhdCBzaGFkZXJzIHdpdGggdW5ib3VuZCBzYW1wbGVycyBk
bworICAgICAgICBub3QgZXhlY3V0ZS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5IHRo
YXQgdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyIGlzIG5vdCBhY2Nlc3NpYmxl
IHRvIGF1dGhvcgorICAgICAgICBzaGFkZXIgY29kZS4gVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0
aGlzIGlzIHRydWUgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTCisg
ICAgICAgIG1peCBmdW5jdGlvbiBhbmQgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBhdHRlbXB0
cyB0byBkZWZpbmUgY3NzX3VfdGV4dHVyZSBpcyBoaXMgb3IgaGVyCisgICAgICAgIHNoYWRlci4K
KworICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50
LXRleHR1cmUtYWNjZXNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQt
Y3NzLXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNv
dXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS5mczogQWRkZWQuCisgICAgICAgICog
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mczogQWRkZWQuCisg
ICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLmZzOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJj
ZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzOiBBZGRlZC4KKwogMjAxMi0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBET00g
d3JhcHBlciBjcmVhdGlvbiBpbnZvbHZlcyBhIGJ1bmNoIG9mIHNrZXRjaHkgY29kZSByZWxhdGVk
IHRvIGZpbmRpbmcgdGhlIEZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5v
LWVsZW1lbnQtdGV4dHVyZS1hY2Nlc3MtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xZDg0MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1hY2Nl
c3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgYW4gYXV0aG9yJ3Mgc2hhZGVyIGNvZGUg
Y2Fubm90IHNhbXBsZSBhIHNoYWRlZCBlbGVtZW50J3MgdGV4dHVyZS48L3RpdGxlPgorICAgIDwh
LS0gCisgICAgICAgIFRoaXMgaXMgdGhlIHJlZmVyZW5jZSBmaWxlIGZvciB0aGUgdGVzdC4KKyAg
ICAgICAgSWYgdGhlIHRlc3QgcGFzc2VzLCB5b3Ugc2hvdWxkIHNlZSA2IHZlcnRpY2FsbHktc3Rh
Y2tlZCBncmVlbiBib3hlcy4KKyAgICAtLT4KKyAgICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4
OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48
L2Rpdj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48L2Rpdj4K
KyAgICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1h
Y2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWE4NDkzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT5UZXN0cyB0aGF0IGFuIGF1dGhvcidzIHNoYWRlciBjb2RlIGNhbm5vdCBzYW1wbGUg
YSBzaGFkZWQgZWxlbWVudCdzIHRleHR1cmUuPC90aXRsZT4KKyAgICA8IS0tIElmIHRoZSB0ZXN0
IHBhc3NlcywgeW91IHNob3VsZCBzZWUgNiB2ZXJ0aWNhbGx5LXN0YWNrZWQgZ3JlZW4gYm94ZXMu
IC0tPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1ND
dXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICAvKiBUaGUg
c2hhZGVycyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQncyBjb2xvciBmcm9tIGdyZWVuIHRvIHJlZCBp
ZiB0aGV5IGFyZSBhYmxlIHRvIHNhbXBsZSBpdHMgdGV4dHVyZS4gKi8KKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
ICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9CisgICAgLnNhbXBs
ZS11LXRleHR1cmUgeworICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVz
b3VyY2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgdXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4
dHVyZS5mcycpKTsKKyAgICB9CisgICAgLnNhbXBsZS11LXRleHR1cmUtbWl4IHsKKyAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9wYXNzLXRleC1jb29yZC52
cycpIG1peCh1cmwoJy4uL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1h
bCBzb3VyY2UtYXRvcCkpOworICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0
dXJlIHsKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9w
YXNzLXRleC1jb29yZC52cycpIHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS5mcycpKTsgIAorICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10
ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNv
dXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXVu
ZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1hbCBzb3VyY2UtYXRvcCkpOworICAg
IH0KKyAgICAuc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZSB7CisgICAgICAgIC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSB1cmwo
Jy4uL3Jlc291cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzJykpOyAgCisgICAg
fQorICAgIC5zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBt
aXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMn
KSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgY2xhc3M9InNhbXBsZS11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9InNhbXBsZS11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1w
bGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXgiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNh
bXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS1taXguZnMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3Vy
Y2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNlZjk4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4
LmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBj
YW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hp
Y2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIGlz
IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQgc2hvdWxkIGZhaWwgdG8g
dmFsaWRhdGUgYmVjYXVzZSBpdCBkZWZpbmVzICJjc3NfdV90ZXh0dXJlIiwKKy8vIHVzaW5nIHRo
ZSByZXN0cmljdGVkICJjc3NfIiBwcmVmaXguCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
Cit1bmlmb3JtIHNhbXBsZXIyRCBjc3NfdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxlbWVu
dCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVyZSwgdl90ZXhD
b29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgorCWNvbG9yLnJn
ID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4
dHVyZS5mcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS5mcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODQ2ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291
cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8v
IFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRl
cm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVs
ZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGJl
Y2F1c2UgaXQgZGVmaW5lcyAiY3NzX3VfdGV4dHVyZSIsIHdoaWNoIHNob3VsZCBiZSBhbiB1bmJv
dW5kIHNhbXBsZXIsCisvLyBzaW5jZSB0aGlzIHNoYWRlciBpcyBub3QgcmVmZXJlbmNlZCBmcm9t
IHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5p
Zm9ybSBzYW1wbGVyMkQgY3NzX3VfdGV4dHVyZTsKKwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9NIGVsZW1lbnQgdGV4
dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUsIHZfdGV4Q29vcmQp
OworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5yZyA9IGNv
bG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUtbWl4LmZzIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWYzNTIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJl
LW1peC5mcwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFk
ZXIgd2l0aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgor
Ly8gVGhpcyBzaGFkZXIgaXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIGFu
ZCB3cml0ZXMgaXRzIG91dHB1dCB0byBjc3NfTWl4Q29sb3IuCisKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCit1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7CisKK3ZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworCS8vIFRyeSB0byBzYW1wbGUgdGhlIERPTSBl
bGVtZW50IHRleHR1cmUuCisJdmVjNCBjb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4
Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5y
ZyA9IGNvbG9yLmdyOworCisJY3NzX01peENvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwMmI4NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS5m
cwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgd2l0
aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgorLy8gVGhp
cyBzaGFkZXIgaXMgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQg
d3JpdGVzIGl0cyBvdXRwdXQgdG8gZ2xfRnJhZ0NvbG9yLgorCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxl
bWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENv
b3JkKTsKKworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29sb3Iucmcg
PSBjb2xvci5ncjsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11LXRl
eHR1cmUtbWl4LmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUt
dW5kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNiOTY2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMKQEAg
LTAsMCArMSwxNyBAQAorLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgc2hhZGVyIGNhbm5vdCBy
ZWFkIGZyb20gdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyLCB3aGljaCByZWZl
cmVuY2VzIHRoZSBET00gZWxlbWVudCB0ZXh0dXJlLgorLy8gVGhpcyBzaGFkZXIgc2hvdWxkIGZh
aWwgdG8gdmFsaWRhdGUgYmVjYXVzZSAiY3NzX3VfdGV4dHVyZSIgc2hvdWxkIGJlIHVuZGVmaW5l
ZCB0byB0aGlzIGNvZGUuCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBE
T00gZWxlbWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgor
CWNvbG9yLnJnID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5l
ZC1jc3MtdS10ZXh0dXJlLmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9z
YW1wbGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUuZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDFlMmYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0w
LDAgKzEsMTcgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVh
ZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJl
bmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWls
IHRvIHZhbGlkYXRlIGJlY2F1c2UgImNzc191X3RleHR1cmUiIHNob3VsZCBiZSB1bmRlZmluZWQg
dG8gdGhpcyBjb2RlLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9N
IGVsZW1lbnQgdGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUs
IHZfdGV4Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwlj
b2xvci5yZyA9IGNvbG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMWJjYWFmYS4uZDAzZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEy
LTA5LTA5ICBNYXggVnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NT
IFNoYWRlcnNdIFJlbW92ZSBkaXJlY3QgdGV4dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGF1
dGhvci1hY2Nlc3NpYmxlICJ1X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNoIHJlZmVyZW5jZWQgdGhl
IERPTSBlbGVtZW50IHRleHR1cmUuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCByZWplY3Qgc2hh
ZGVycyB3aXRoIGF1dGhvci1kZWZpbmVkIHNhbXBsZXIgdW5pZm9ybXMuIFdoZW4gd2UgaW1wbGVt
ZW50IHRleHR1cmUgCisgICAgICAgIHBhcmFtZXRlcnMsIHdlIHdpbGwgYWxsb3cgc2hhZGVycyB3
aG9zZSBzYW1wbGVycyBhcmUgYm91bmQgdG8gdmFsaWQgdGV4dHVyZXMuIFdlIG11c3Qgbm90Cisg
ICAgICAgIGFsbG93IE9wZW5HTCB0byBnaXZlIHVuYm91bmQgc2FtcGxlcnMgYSBkZWZhdWx0IHZh
bHVlIG9mIDAgYmVjYXVzZSB0aGF0IHJlZmVyZW5jZXMgdGhlIERPTQorICAgICAgICBlbGVtZW50
IHRleHR1cmUsIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhlIGF1dGhvcidzIHNo
YWRlciBjb2RlLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xF
V2ViS2l0QnJpZGdlOjpnZXRVbmlmb3JtSW5mbyk6CisgICAgICAgICAgICBBZGQgYSBuZXcgcHVi
bGljIG1ldGhvZCB0byBBTkdMRVdlYktpdEJyaWRnZSB3aGljaCBnZXRzIHRoZSBpbmZvIGFib3V0
IGFsbCBvZiB0aGUKKyAgICAgICAgICAgIHVuaWZvcm1zIGluIHRoZSBsYXN0IHZhbGlkYXRlZCB2
ZXJ0ZXggc2hhZGVyIG9yIGZyYWdtZW50IHNoYWRlci4gVW5pZm9ybSBpbmZvIGluY2x1ZGVzCisg
ICAgICAgICAgICBpbmNsdWRlcyBuYW1lLCB0eXBlLCBhbmQgc2l6ZS4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6OmdldFBhcmFtZXRlclZh
bHVlKToKKyAgICAgICAgICAgIEFkZCBhIHByaXZhdGUgbWV0aG9kIHRvIEFOR0xFV2ViS2l0QnJp
ZGdlIHRvIGVhc2lseSBxdWVyeSB0aGUgdmFyaW91cyBpbnRlZ2VyIHBhcmFtZXRlcnMKKyAgICAg
ICAgICAgIHRoYXQgQU5HTEUgZXhwb3Nlcy4gVGhlIG5ldyBnZXRVbmlmb3JtSW5mbyBtZXRob2Qg
YW5kIHRoZSBleGlzdGluZyB2YWxpZGF0ZVNoYWRlclNvdXJjZQorICAgICAgICAgICAgbWV0aG9k
IG5vdyBib3RoIHVzZSBnZXRQYXJhbWV0ZXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFOR0xF
V2ViS2l0QnJpZGdlOjppc1NhbXBsZXJUeXBlKToKKyAgICAgICAgICAgIEFkZCBhIHB1YmxpYyBt
ZXRob2QgdG8gQU5HTEVXZWJLaXRCcmlkZ2UgdGhhdCByZXR1cm5zIHRydWUgaWYgYSB1bmlmb3Jt
J3MgdHlwZSBpcyBhCisgICAgICAgICAgICBHTFNMIHNhbXBsZXIgKGUuZy4gc2FtcGxlcjJELCBz
YW1wbGVyQ3ViZSwgZXRjLikuCisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6
dmFsaWRhdGVTaGFkZXJTb3VyY2UpOgorICAgICAgICAgICAgVXNlIHRoZSBuZXcgZ2V0UGFyYW1l
dGVyVmFsdWUgbWV0aG9kIGluc3RlYWQgb2YgQU5HTEUncyBTaEdldEluZm8gZnVuY3Rpb24uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaDoKKyAgICAgICAg
KEFOR0xFVW5pZm9ybUluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBTkdMRVdl
YktpdEJyaWRnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAg
ICAgVGFrZSBpbiBhbiBhZGRpdGlvbmFsIGNvbnN0cnVjdG9yIHBhcmFtZXRlciB0aGF0IGluZGlj
YXRlcyB3aGV0aGVyIHRoZSBzaGFkZXJzIGFyZQorICAgICAgICAgICAgcmVmZXJlbmNlZCBmcm9t
IHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKToKKyAgICAgICAgICAg
IFJlbW92ZSB0aGUgYXV0aG9yLWFjY2Vzc2libGUgRE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVy
ICJ1X3RleHR1cmUiLgorICAgICAgICAgICAgT25seSBmaW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUg
aW50ZXJuYWwgRE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVyICJjc3NfdV90ZXh0dXJlIgorICAg
ICAgICAgICAgaWYgdGhlIGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHA6CisgICAgICAgICAgICBSZWplY3QgYWxsIHNoYWRlcnMgdGhh
dCBoYXZlIHNhbXBsZXIgdW5pZm9ybXMgZGVmaW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQ
cm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFu
ZEJ1ZmZlcnMpOgorICAgICAgICAgICAgQWRkIGFuIGFzc2VydCB0byB2ZXJpZnkgdGhhdCB0aGUg
RE9NIGVsZW1lbnQgdGV4dHVyZSBpcyBib3VuZCBvbmx5IGlmIHRoZSBhdXRob3IgaXMKKyAgICAg
ICAgICAgIHVzaW5nIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorCiAyMDEyLTA5LTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1Y4XSBjb252ZXJ0RXZlbnRUYXJn
ZXRUb1Y4T2JqZWN0IGRvZXNuJ3QgbmVlZCB0byBiZSBvdmVybG9hZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKaW5k
ZXggNWM1MjhjZi4uMWYxMmI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApAQCAtOTIsOCArOTIsNyBAQCBib29s
IEFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFk
ZXJTb3VyY2UsIEFOR0xFU2hhZAogCiAgICAgYm9vbCB2YWxpZGF0ZVN1Y2Nlc3MgPSBTaENvbXBp
bGUoY29tcGlsZXIsIHNoYWRlclNvdXJjZVN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RFIHwgZXh0
cmFDb21waWxlT3B0aW9ucyk7CiAgICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKLSAgICAgICAg
aW50IGxvZ1NpemUgPSAwOwotICAgICAgICBTaEdldEluZm8oY29tcGlsZXIsIFNIX0lORk9fTE9H
X0xFTkdUSCwgJmxvZ1NpemUpOworICAgICAgICBpbnQgbG9nU2l6ZSA9IGdldFBhcmFtZXRlclZh
bHVlKGNvbXBpbGVyLCBTSF9JTkZPX0xPR19MRU5HVEgpOwogICAgICAgICBpZiAobG9nU2l6ZSA+
IDEpIHsKICAgICAgICAgICAgIE93bkFycmF5UHRyPGNoYXI+IGxvZ0J1ZmZlciA9IGFkb3B0QXJy
YXlQdHIobmV3IGNoYXJbbG9nU2l6ZV0pOwogICAgICAgICAgICAgaWYgKGxvZ0J1ZmZlcikgewpA
QCAtMTA0LDggKzEwMyw3IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OnZhbGlkYXRlU2hhZGVy
U291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpbnQgdHJhbnNsYXRpb25MZW5ndGggPSAwOwotICAgIFNo
R2V0SW5mbyhjb21waWxlciwgU0hfT0JKRUNUX0NPREVfTEVOR1RILCAmdHJhbnNsYXRpb25MZW5n
dGgpOworICAgIGludCB0cmFuc2xhdGlvbkxlbmd0aCA9IGdldFBhcmFtZXRlclZhbHVlKGNvbXBp
bGVyLCBTSF9PQkpFQ1RfQ09ERV9MRU5HVEgpOwogICAgIGlmICh0cmFuc2xhdGlvbkxlbmd0aCA+
IDEpIHsKICAgICAgICAgT3duQXJyYXlQdHI8Y2hhcj4gdHJhbnNsYXRpb25CdWZmZXIgPSBhZG9w
dEFycmF5UHRyKG5ldyBjaGFyW3RyYW5zbGF0aW9uTGVuZ3RoXSk7CiAgICAgICAgIGlmICghdHJh
bnNsYXRpb25CdWZmZXIpCkBAIC0xMTcsNiArMTE1LDQ1IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlk
Z2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVT
aGFkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQU5HTEVXZWJLaXRCcmlkZ2U6OmdldFVu
aWZvcm1JbmZvKFNoU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBWZWN0b3I8QU5HTEVVbmlmb3JtSW5m
bz4gJmluZm9WZWN0b3IpCit7CisgICAgY29uc3QgU2hIYW5kbGUgY29tcGlsZXIgPSAoc2hhZGVy
VHlwZSA9PSBTSF9WRVJURVhfU0hBREVSID8gbV92ZXJ0ZXhDb21waWxlciA6IG1fZnJhZ21lbnRD
b21waWxlcik7CisKKyAgICBpbnQgbnVtVW5pZm9ybXMgPSBnZXRQYXJhbWV0ZXJWYWx1ZShjb21w
aWxlciwgU0hfQUNUSVZFX1VOSUZPUk1TKTsKKyAgICBpZiAobnVtVW5pZm9ybXMgPD0gMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaW50IG1heE5hbWVMZW5ndGggPSBnZXRQYXJhbWV0ZXJWYWx1
ZShjb21waWxlciwgU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCk7CisgICAgLy8gVGhlIG1h
eCBsZW5ndGggZm9yIGEgdW5pZm9ybSBuYW1lIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFj
dGVyIGxvbmcuCisgICAgQVNTRVJUKG1heE5hbWVMZW5ndGggPiAwKTsKKyAgICBPd25BcnJheVB0
cjxjaGFyPiBuYW1lQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hhclttYXhOYW1lTGVuZ3Ro
XSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVVuaWZvcm1zOyArK2kpIHsKKyAgICAg
ICAgQU5HTEVVbmlmb3JtSW5mbyBpbmZvOworICAgICAgICBpbnQgbmFtZUxlbmd0aCA9IC0xOwor
ICAgICAgICBTaEdldEFjdGl2ZVVuaWZvcm0oY29tcGlsZXIsIGksICZuYW1lTGVuZ3RoLCAmaW5m
by5zaXplLCAmaW5mby50eXBlLCBuYW1lQnVmZmVyLmdldCgpLCAwKTsKKyAgICAgICAgLy8gQSB1
bmlmb3JtIG5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZy4KKyAgICAg
ICAgQVNTRVJUKG5hbWVMZW5ndGggPiAwKTsKKyAgICAgICAgaW5mby5uYW1lID0gbmFtZUJ1ZmZl
ci5nZXQoKTsKKyAgICAgICAgaW5mb1ZlY3Rvci5hcHBlbmQoaW5mbyk7CisgICAgfQorfQorCitp
bnQgQU5HTEVXZWJLaXRCcmlkZ2U6OmdldFBhcmFtZXRlclZhbHVlKGNvbnN0IFNoSGFuZGxlIGNv
bXBpbGVyLCBTaFNoYWRlckluZm8gcGFyYW1ldGVyTmFtZSkKK3sKKyAgICBpbnQgcGFyYW1ldGVy
ID0gLTE7CisgICAgU2hHZXRJbmZvKGNvbXBpbGVyLCBwYXJhbWV0ZXJOYW1lLCAmcGFyYW1ldGVy
KTsKKyAgICByZXR1cm4gcGFyYW1ldGVyOworfQorCitib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpp
c1NhbXBsZXJUeXBlKFNoRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgcmV0dXJuIGRhdGFUeXBl
ID09IFNIX1NBTVBMRVJfMkQKKyAgICAgICAgfHwgZGF0YVR5cGUgPT0gU0hfU0FNUExFUl9DVUJF
CisgICAgICAgIHx8IGRhdGFUeXBlID09IFNIX1NBTVBMRVJfMkRfUkVDVF9BUkIKKyAgICAgICAg
fHwgZGF0YVR5cGUgPT0gU0hfU0FNUExFUl9FWFRFUk5BTF9PRVM7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFVTRSgzRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCmluZGV4IDI2ZjMwMTIuLjMyZjM2ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuaApAQCAtNDIsNiArNDIsMTIgQEAgZW51bSBBTkdMRVNoYWRlclR5cGUgewogICAgIFNIQURF
Ul9UWVBFX0ZSQUdNRU5UID0gU0hfRlJBR01FTlRfU0hBREVSLAogfTsKIAorc3RydWN0IEFOR0xF
VW5pZm9ybUluZm8geworCVN0cmluZyBuYW1lOworCVNoRGF0YVR5cGUgdHlwZTsKKwlpbnQgc2l6
ZTsKK307CisKIGNsYXNzIEFOR0xFV2ViS2l0QnJpZGdlIHsKIHB1YmxpYzoKIApAQCAtNTMsOCAr
NTksMTUgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdmFsaWRhdGVTaGFkZXJTb3VyY2UoY29u
c3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUsIFN0cmluZyYgdHJhbnNsYXRl
ZFNoYWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9nLCBpbnQgZXh0cmFDb21w
aWxlT3B0aW9ucyA9IDApOwogCisgICAgLy8gR2V0IHRoZSB1bmlmb3JtIGluZm8gZm9yIHRoZSBs
YXN0IHZhbGlkYXRlZCBzaGFkZXIgb2YgdHlwZSBzaGFkZXJUeXBlLgorICAgIHZvaWQgZ2V0VW5p
Zm9ybUluZm8oU2hTaGFkZXJUeXBlIHNoYWRlclR5cGUsIFZlY3RvcjxBTkdMRVVuaWZvcm1JbmZv
PiAmaW5mb1ZlY3Rvcik7CisKKyAgICBzdGF0aWMgYm9vbCBpc1NhbXBsZXJUeXBlKFNoRGF0YVR5
cGUgZGF0YVR5cGUpOworCiBwcml2YXRlOgogCisgICAgaW50IGdldFBhcmFtZXRlclZhbHVlKGNv
bnN0IFNoSGFuZGxlIGNvbXBpbGVyLCBTaFNoYWRlckluZm8gcGFyYW1ldGVyTmFtZSk7CisKICAg
ICB2b2lkIGNsZWFudXBDb21waWxlcnMoKTsKIAogICAgIGJvb2wgYnVpbHRDb21waWxlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKaW5kZXggM2M2OTU5
Yi4uZWNhMmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVy
dGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQorQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRW
ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIGJvb2wg
bWl4RW5hYmxlZCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9wcm9ncmFtKDAp
CiAgICAgLCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24oLTEpCkBAIC03Myw3ICs3Myw3IEBAIEN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250CiAgICAgaWYgKCFtX3Byb2dyYW0pCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBpbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKCk7CisgICAgaW5pdGlh
bGl6ZVBhcmFtZXRlckxvY2F0aW9ucyhtaXhFbmFibGVkKTsKICAgICAKICAgICBtX2lzSW5pdGlh
bGl6ZWQgPSB0cnVlOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIFBsYXRmb3JtM0RPYmplY3QgQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHZl
cnRlCiAgICAgcmV0dXJuIHByb2dyYW07CiB9CiAKLXZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKCkKK3ZvaWQgQ3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKGJvb2wgbWl4RW5h
YmxlZCkKIHsKICAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0
dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKICAgICBtX3RleEF0dHJpYkxv
Y2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENv
b3JkIik7CkBAIC0xMjksMTIgKzEyOSwxNSBAQCB2b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbTo6aW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpCiAgICAgbV9wcm9qZWN0aW9uTWF0
cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1
X3Byb2plY3Rpb25NYXRyaXgiKTsKICAgICBtX3NhbXBsZXJTaXplTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3RleHR1cmVTaXplIik7CiAgICAg
bV9jb250ZW50U2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
bV9wcm9ncmFtLCAidV9jb250ZW50VGV4dHVyZSIpOwotICAgIG1faW50ZXJuYWxUZXhDb29yZEF0
dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJj
c3NfYV90ZXhDb29yZCIpOwotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAiY3NzX3VfdGV4dHVyZSIpOwotICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGV4dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZSBhbmQgY2hhbmdlIHRoZSB0ZXN0
cyB0byB1c2UgYmxlbmRpbmcgYW5kIGNvbXBvc2l0aW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQotICAgIGlmIChtX3NhbXBsZXJMb2NhdGlv
biA9PSAtMSkKLSAgICAgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3RleHR1cmUiKTsKKyAgICBpZiAobWl4RW5hYmxlZCkg
eworICAgICAgICAvLyBPbmx5IGVuYWJsZSB0aGVzZSBpbnRlcm5hbCBzeW1ib2xzIGlmIHRoZSBh
dXRob3IgaXMgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCisgICAgICAgIG1faW50ZXJuYWxU
ZXhDb29yZEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3By
b2dyYW0sICJjc3NfYV90ZXhDb29yZCIpOworICAgICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgImNzc191X3RleHR1cmUiKTsK
KworICAgICAgICAvLyBUaGVzZSBpbnRlcm5hbCBzeW1ib2xzIHNob3VsZCBoYXZlIGJlZW4gYWRk
ZWQgdG8gdGhlIHZhbGlkYXRlZCBzaGFkZXJzLgorICAgICAgICBBU1NFUlQobV9pbnRlcm5hbFRl
eENvb3JkQXR0cmliTG9jYXRpb24gIT0gLTEpOworICAgICAgICBBU1NFUlQobV9zYW1wbGVyTG9j
YXRpb24gIT0gLTEpOworICAgIH0KIH0KIAogaW50IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bTo6dW5pZm9ybUxvY2F0aW9uQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCmluZGV4IGFkOTQ1ZjYuLjcxM2ExMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaApAQCAtNDIsOSArNDIs
OSBAQCBjbGFzcyBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OwogCiBjbGFzcyBDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW06IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZh
bGlkYXRlZEZyYWdtZW50U2hhZGVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcm
IHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBib29sIG1peEVuYWJsZWQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShjb250ZXh0
LCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKGNvbnRl
eHQsIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIG1peEVu
YWJsZWQpKTsKICAgICB9CiAgICAgCiAgICAgfkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSgp
OwpAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICAKICAgICBQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW07IH0KIHByaXZhdGU6Ci0gICAgQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBj
b25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0
ZWRGcmFnbWVudFNoYWRlcik7CisgICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNo
YWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgYm9vbCBtaXhFbmFi
bGVkKTsKICAgICAKICAgICBQbGF0Zm9ybTNET2JqZWN0IGNvbXBpbGVTaGFkZXIoR0MzRGVudW0g
c2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcpOwogICAgIFBsYXRmb3JtM0RP
YmplY3QgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBsYXRmb3Jt
M0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlckxv
Y2F0aW9ucygpOworICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucyhib29sIG1p
eEVuYWJsZWQpOwogICAgIAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0
OwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXggYTdkYWNkYi4uNTEwOWE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCkBAIC04NSwxNCAr
ODUsMjkgQEAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJHbG9iYWxDb24KICAgICAvLyBTaGFkZXJzIHJlZmVyZW5j
ZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiB1c2UgYSBkaWZmZXJlbnQgdmFsaWRhdG9yIHRo
YW4gcmVndWxhciBXZWJHTCBzaGFkZXJzLiBTZWUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5o
IGZvciBtb3JlIGRldGFpbHMuCiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UqIHZhbGlkYXRvciA9IHBy
b2dyYW1JbmZvLm1peFNldHRpbmdzKCkuZW5hYmxlZCA/IG1fZ2xvYmFsQ29udGV4dC0+bWl4U2hh
ZGVyVmFsaWRhdG9yKCkgOiBtX2dsb2JhbENvbnRleHQtPndlYmdsU2hhZGVyVmFsaWRhdG9yKCk7
CiAgICAgU3RyaW5nIHZlcnRleFNoYWRlckxvZywgZnJhZ21lbnRTaGFkZXJMb2c7Ci0gICAgYm9v
bCB2ZXJ0ZXhTaGFkZXJWYWxpZCA9IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3VyY2Uob3Jp
Z2luYWxWZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVYLCBtX3Zh
bGlkYXRlZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nKTsKLSAgICBib29sIGZyYWdtZW50
U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPnZhbGlkYXRlU2hhZGVyU291cmNlKG9yaWdpbmFsRnJh
Z21lbnRTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfRlJBR01FTlQsIG1fdmFsaWRh
dGVkRnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTG9nKTsKKyAgICBib29sIHZlcnRleFNo
YWRlclZhbGlkID0gdmFsaWRhdG9yLT52YWxpZGF0ZVNoYWRlclNvdXJjZShvcmlnaW5hbFZlcnRl
eFNoYWRlci51dGY4KCkuZGF0YSgpLCBTSEFERVJfVFlQRV9WRVJURVgsIG1fdmFsaWRhdGVkVmVy
dGV4U2hhZGVyLCB2ZXJ0ZXhTaGFkZXJMb2csIFNIX0FUVFJJQlVURVNfVU5JRk9STVMpOworICAg
IGJvb2wgZnJhZ21lbnRTaGFkZXJWYWxpZCA9IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3Vy
Y2Uob3JpZ2luYWxGcmFnbWVudFNoYWRlci51dGY4KCkuZGF0YSgpLCBTSEFERVJfVFlQRV9GUkFH
TUVOVCwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJMb2csIFNIX0FU
VFJJQlVURVNfVU5JRk9STVMpOwogICAgIGlmICghdmVydGV4U2hhZGVyVmFsaWQgfHwgIWZyYWdt
ZW50U2hhZGVyVmFsaWQpIHsKICAgICAgICAgLy8gRklYTUU6IFJlcG9ydCB0aGUgdmFsaWRhdGlv
biBlcnJvcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDQxNgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gVmFsaWRhdGUgdGhl
IGF1dGhvcidzIHNhbXBsZXJzLgorICAgIFZlY3RvcjxBTkdMRVVuaWZvcm1JbmZvPiB1bmlmb3Jt
SW5mbzsKKyAgICB2YWxpZGF0b3ItPmdldFVuaWZvcm1JbmZvKFNIX1ZFUlRFWF9TSEFERVIsIHVu
aWZvcm1JbmZvKTsKKyAgICB2YWxpZGF0b3ItPmdldFVuaWZvcm1JbmZvKFNIX0ZSQUdNRU5UX1NI
QURFUiwgdW5pZm9ybUluZm8pOworICAgIGZvciAoVmVjdG9yPEFOR0xFVW5pZm9ybUluZm8+Ojpp
dGVyYXRvciBpdCA9IHVuaWZvcm1JbmZvLmJlZ2luKCk7IGl0ICE9IHVuaWZvcm1JbmZvLmVuZCgp
OyArK2l0KSB7CisgICAgICAgIGlmIChBTkdMRVdlYktpdEJyaWRnZTo6aXNTYW1wbGVyVHlwZSgo
Kml0KS50eXBlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHdlIHJlc3RyaWN0
IHNoYWRlcnMgd2l0aCBhbnkgc2FtcGxlciBkZWZpbmVkLgorICAgICAgICAgICAgLy8gV2hlbiB3
ZSBpbXBsZW1lbnQgdGV4dHVyZSBwYXJhbWV0ZXJzLCB3ZSB3aWxsIGFsbG93IHNoYWRlcnMgd2hv
c2Ugc2FtcGxlcnMgYXJlIGJvdW5kIHRvIHZhbGlkIHRleHR1cmVzLgorICAgICAgICAgICAgLy8g
V2UgbXVzdCBub3QgYWxsb3cgT3BlbkdMIHRvIGdpdmUgdW5ib3VuZCBzYW1wbGVycyBhIGRlZmF1
bHQgdmFsdWUgb2YgMCBiZWNhdXNlIHRoYXQgcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4
dHVyZSwKKyAgICAgICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhl
IGF1dGhvcidzIHNoYWRlciBjb2RlLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjMwCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKICAgICAvLyBXZSBuZWVkIHRvIGFkZCB0ZXh0dXJlIGFjY2VzcywgYmxlbmRp
bmcsIGFuZCBjb21wb3NpdGluZyBjb2RlIHRvIHNoYWRlcnMgdGhhdCBhcmUgcmVmZXJlbmNlZCBm
cm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgogICAgIGlmIChwcm9ncmFtSW5mby5taXhTZXR0aW5n
cygpLmVuYWJsZWQpIHsKICAgICAgICAgcmV3cml0ZU1peFZlcnRleFNoYWRlcigpOwpAQCAtMTA2
LDcgKzEyMSw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21waWxlZFByCiB7CiAgICAgQVNTRVJUKG1faXNJ
bml0aWFsaXplZCAmJiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKICAgICBp
ZiAoIW1fY29tcGlsZWRQcm9ncmFtKQotICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgp
LCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7Cisg
ICAgICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpj
cmVhdGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBtX3Byb2dyYW1JbmZvLm1peFNldHRpbmdzKCku
ZW5hYmxlZCk7CiAgICAgcmV0dXJuIG1fY29tcGlsZWRQcm9ncmFtOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuY3BwCmluZGV4IGQ2NWZmOTcuLjgyOWJkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3Bw
CkBAIC0zMjksNiArMzI5LDkgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFByb2dyYW1BbmRC
dWZmZXJzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KQogICAgIG1fY29udGV4dC0+
dXNlUHJvZ3JhbShtX2NvbXBpbGVkUHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICAKICAgICBpZiAo
bV9jb21waWxlZFByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIC8v
IFdlIHNob3VsZCBiZSBiaW5kaW5nIHRoZSBET00gZWxlbWVudCB0ZXh0dXJlIHNhbXBsZXIgb25s
eSBpZiB0aGUgYXV0aG9yIGlzIHVzaW5nIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorICAgICAgICBB
U1NFUlQobV92YWxpZGF0ZWRQcm9ncmFtLT5wcm9ncmFtSW5mbygpLm1peFNldHRpbmdzKCkuZW5h
YmxlZCk7CisKICAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCk7CiAgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fY29tcGlsZWRQ
cm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CiAjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163157</attachid>
            <date>2012-09-10 10:06:43 -0700</date>
            <delta_ts>2012-09-10 17:06:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93871-2.patch</filename>
            <type>text/plain</type>
            <size>26552</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGQ0NDBjLi4zN2JhMDEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDkt
MDkgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gUmVtb3ZlIGRpcmVjdCB0ZXh0dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCB0aGUgInVfdGV4dHVyZSIgc2FtcGxlciBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSB0
byBhdXRob3Igc2hhZGVyCisgICAgICAgIGNvZGUgYmVjYXVzZSBpdCB3YXMgcmVtb3ZlZC4gVGhl
c2UgdGVzdHMgYWxzbyB2ZXJpZnkgdGhhdCBzaGFkZXJzIHdpdGggdW5ib3VuZCBzYW1wbGVycyBk
bworICAgICAgICBub3QgZXhlY3V0ZS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5IHRo
YXQgdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyIGlzIG5vdCBhY2Nlc3NpYmxl
IHRvIGF1dGhvcgorICAgICAgICBzaGFkZXIgY29kZS4gVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0
aGlzIGlzIHRydWUgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTCisg
ICAgICAgIG1peCBmdW5jdGlvbiBhbmQgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBhdHRlbXB0
cyB0byBkZWZpbmUgY3NzX3VfdGV4dHVyZSBpcyBoaXMgb3IgaGVyCisgICAgICAgIHNoYWRlci4K
KworICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50
LXRleHR1cmUtYWNjZXNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQt
Y3NzLXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNv
dXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS5mczogQWRkZWQuCisgICAgICAgICog
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mczogQWRkZWQuCisg
ICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLmZzOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJj
ZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzOiBBZGRlZC4KKwogMjAxMi0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBET00g
d3JhcHBlciBjcmVhdGlvbiBpbnZvbHZlcyBhIGJ1bmNoIG9mIHNrZXRjaHkgY29kZSByZWxhdGVk
IHRvIGZpbmRpbmcgdGhlIEZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5v
LWVsZW1lbnQtdGV4dHVyZS1hY2Nlc3MtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xZDg0MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1hY2Nl
c3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgYW4gYXV0aG9yJ3Mgc2hhZGVyIGNvZGUg
Y2Fubm90IHNhbXBsZSBhIHNoYWRlZCBlbGVtZW50J3MgdGV4dHVyZS48L3RpdGxlPgorICAgIDwh
LS0gCisgICAgICAgIFRoaXMgaXMgdGhlIHJlZmVyZW5jZSBmaWxlIGZvciB0aGUgdGVzdC4KKyAg
ICAgICAgSWYgdGhlIHRlc3QgcGFzc2VzLCB5b3Ugc2hvdWxkIHNlZSA2IHZlcnRpY2FsbHktc3Rh
Y2tlZCBncmVlbiBib3hlcy4KKyAgICAtLT4KKyAgICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4
OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48
L2Rpdj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48L2Rpdj4K
KyAgICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1h
Y2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWE4NDkzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT5UZXN0cyB0aGF0IGFuIGF1dGhvcidzIHNoYWRlciBjb2RlIGNhbm5vdCBzYW1wbGUg
YSBzaGFkZWQgZWxlbWVudCdzIHRleHR1cmUuPC90aXRsZT4KKyAgICA8IS0tIElmIHRoZSB0ZXN0
IHBhc3NlcywgeW91IHNob3VsZCBzZWUgNiB2ZXJ0aWNhbGx5LXN0YWNrZWQgZ3JlZW4gYm94ZXMu
IC0tPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1ND
dXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICAvKiBUaGUg
c2hhZGVycyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQncyBjb2xvciBmcm9tIGdyZWVuIHRvIHJlZCBp
ZiB0aGV5IGFyZSBhYmxlIHRvIHNhbXBsZSBpdHMgdGV4dHVyZS4gKi8KKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
ICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9CisgICAgLnNhbXBs
ZS11LXRleHR1cmUgeworICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVz
b3VyY2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgdXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4
dHVyZS5mcycpKTsKKyAgICB9CisgICAgLnNhbXBsZS11LXRleHR1cmUtbWl4IHsKKyAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9wYXNzLXRleC1jb29yZC52
cycpIG1peCh1cmwoJy4uL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1h
bCBzb3VyY2UtYXRvcCkpOworICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0
dXJlIHsKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9w
YXNzLXRleC1jb29yZC52cycpIHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS5mcycpKTsgIAorICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10
ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNv
dXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXVu
ZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1hbCBzb3VyY2UtYXRvcCkpOworICAg
IH0KKyAgICAuc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZSB7CisgICAgICAgIC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSB1cmwo
Jy4uL3Jlc291cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzJykpOyAgCisgICAg
fQorICAgIC5zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBt
aXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMn
KSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgY2xhc3M9InNhbXBsZS11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9InNhbXBsZS11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1w
bGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXgiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNh
bXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS1taXguZnMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3Vy
Y2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNlZjk4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4
LmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBj
YW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hp
Y2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIGlz
IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQgc2hvdWxkIGZhaWwgdG8g
dmFsaWRhdGUgYmVjYXVzZSBpdCBkZWZpbmVzICJjc3NfdV90ZXh0dXJlIiwKKy8vIHVzaW5nIHRo
ZSByZXN0cmljdGVkICJjc3NfIiBwcmVmaXguCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
Cit1bmlmb3JtIHNhbXBsZXIyRCBjc3NfdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxlbWVu
dCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVyZSwgdl90ZXhD
b29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgorCWNvbG9yLnJn
ID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4
dHVyZS5mcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS5mcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODQ2ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291
cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8v
IFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRl
cm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVs
ZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGJl
Y2F1c2UgaXQgZGVmaW5lcyAiY3NzX3VfdGV4dHVyZSIsIHdoaWNoIHNob3VsZCBiZSBhbiB1bmJv
dW5kIHNhbXBsZXIsCisvLyBzaW5jZSB0aGlzIHNoYWRlciBpcyBub3QgcmVmZXJlbmNlZCBmcm9t
IHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5p
Zm9ybSBzYW1wbGVyMkQgY3NzX3VfdGV4dHVyZTsKKwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9NIGVsZW1lbnQgdGV4
dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUsIHZfdGV4Q29vcmQp
OworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5yZyA9IGNv
bG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUtbWl4LmZzIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWYzNTIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJl
LW1peC5mcwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFk
ZXIgd2l0aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgor
Ly8gVGhpcyBzaGFkZXIgaXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIGFu
ZCB3cml0ZXMgaXRzIG91dHB1dCB0byBjc3NfTWl4Q29sb3IuCisKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCit1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7CisKK3ZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworCS8vIFRyeSB0byBzYW1wbGUgdGhlIERPTSBl
bGVtZW50IHRleHR1cmUuCisJdmVjNCBjb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4
Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5y
ZyA9IGNvbG9yLmdyOworCisJY3NzX01peENvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwMmI4NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS5m
cwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgd2l0
aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgorLy8gVGhp
cyBzaGFkZXIgaXMgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQg
d3JpdGVzIGl0cyBvdXRwdXQgdG8gZ2xfRnJhZ0NvbG9yLgorCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxl
bWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENv
b3JkKTsKKworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29sb3Iucmcg
PSBjb2xvci5ncjsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11LXRl
eHR1cmUtbWl4LmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUt
dW5kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNiOTY2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMKQEAg
LTAsMCArMSwxNyBAQAorLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgc2hhZGVyIGNhbm5vdCBy
ZWFkIGZyb20gdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyLCB3aGljaCByZWZl
cmVuY2VzIHRoZSBET00gZWxlbWVudCB0ZXh0dXJlLgorLy8gVGhpcyBzaGFkZXIgc2hvdWxkIGZh
aWwgdG8gdmFsaWRhdGUgYmVjYXVzZSAiY3NzX3VfdGV4dHVyZSIgc2hvdWxkIGJlIHVuZGVmaW5l
ZCB0byB0aGlzIGNvZGUuCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBE
T00gZWxlbWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgor
CWNvbG9yLnJnID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5l
ZC1jc3MtdS10ZXh0dXJlLmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9z
YW1wbGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUuZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDFlMmYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0w
LDAgKzEsMTcgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVh
ZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJl
bmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWls
IHRvIHZhbGlkYXRlIGJlY2F1c2UgImNzc191X3RleHR1cmUiIHNob3VsZCBiZSB1bmRlZmluZWQg
dG8gdGhpcyBjb2RlLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9N
IGVsZW1lbnQgdGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUs
IHZfdGV4Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwlj
b2xvci5yZyA9IGNvbG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMWJjYWFmYS4uZDAzZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEy
LTA5LTA5ICBNYXggVnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NT
IFNoYWRlcnNdIFJlbW92ZSBkaXJlY3QgdGV4dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGF1
dGhvci1hY2Nlc3NpYmxlICJ1X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNoIHJlZmVyZW5jZWQgdGhl
IERPTSBlbGVtZW50IHRleHR1cmUuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCByZWplY3Qgc2hh
ZGVycyB3aXRoIGF1dGhvci1kZWZpbmVkIHNhbXBsZXIgdW5pZm9ybXMuIFdoZW4gd2UgaW1wbGVt
ZW50IHRleHR1cmUgCisgICAgICAgIHBhcmFtZXRlcnMsIHdlIHdpbGwgYWxsb3cgc2hhZGVycyB3
aG9zZSBzYW1wbGVycyBhcmUgYm91bmQgdG8gdmFsaWQgdGV4dHVyZXMuIFdlIG11c3Qgbm90Cisg
ICAgICAgIGFsbG93IE9wZW5HTCB0byBnaXZlIHVuYm91bmQgc2FtcGxlcnMgYSBkZWZhdWx0IHZh
bHVlIG9mIDAgYmVjYXVzZSB0aGF0IHJlZmVyZW5jZXMgdGhlIERPTQorICAgICAgICBlbGVtZW50
IHRleHR1cmUsIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhlIGF1dGhvcidzIHNo
YWRlciBjb2RlLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xF
V2ViS2l0QnJpZGdlOjpnZXRVbmlmb3JtSW5mbyk6CisgICAgICAgICAgICBBZGQgYSBuZXcgcHVi
bGljIG1ldGhvZCB0byBBTkdMRVdlYktpdEJyaWRnZSB3aGljaCBnZXRzIHRoZSBpbmZvIGFib3V0
IGFsbCBvZiB0aGUKKyAgICAgICAgICAgIHVuaWZvcm1zIGluIHRoZSBsYXN0IHZhbGlkYXRlZCB2
ZXJ0ZXggc2hhZGVyIG9yIGZyYWdtZW50IHNoYWRlci4gVW5pZm9ybSBpbmZvIGluY2x1ZGVzCisg
ICAgICAgICAgICBpbmNsdWRlcyBuYW1lLCB0eXBlLCBhbmQgc2l6ZS4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6OmdldFBhcmFtZXRlclZh
bHVlKToKKyAgICAgICAgICAgIEFkZCBhIHByaXZhdGUgbWV0aG9kIHRvIEFOR0xFV2ViS2l0QnJp
ZGdlIHRvIGVhc2lseSBxdWVyeSB0aGUgdmFyaW91cyBpbnRlZ2VyIHBhcmFtZXRlcnMKKyAgICAg
ICAgICAgIHRoYXQgQU5HTEUgZXhwb3Nlcy4gVGhlIG5ldyBnZXRVbmlmb3JtSW5mbyBtZXRob2Qg
YW5kIHRoZSBleGlzdGluZyB2YWxpZGF0ZVNoYWRlclNvdXJjZQorICAgICAgICAgICAgbWV0aG9k
IG5vdyBib3RoIHVzZSBnZXRQYXJhbWV0ZXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFOR0xF
V2ViS2l0QnJpZGdlOjppc1NhbXBsZXJUeXBlKToKKyAgICAgICAgICAgIEFkZCBhIHB1YmxpYyBt
ZXRob2QgdG8gQU5HTEVXZWJLaXRCcmlkZ2UgdGhhdCByZXR1cm5zIHRydWUgaWYgYSB1bmlmb3Jt
J3MgdHlwZSBpcyBhCisgICAgICAgICAgICBHTFNMIHNhbXBsZXIgKGUuZy4gc2FtcGxlcjJELCBz
YW1wbGVyQ3ViZSwgZXRjLikuCisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6
dmFsaWRhdGVTaGFkZXJTb3VyY2UpOgorICAgICAgICAgICAgVXNlIHRoZSBuZXcgZ2V0UGFyYW1l
dGVyVmFsdWUgbWV0aG9kIGluc3RlYWQgb2YgQU5HTEUncyBTaEdldEluZm8gZnVuY3Rpb24uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaDoKKyAgICAgICAg
KEFOR0xFVW5pZm9ybUluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBTkdMRVdl
YktpdEJyaWRnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAg
ICAgVGFrZSBpbiBhbiBhZGRpdGlvbmFsIGNvbnN0cnVjdG9yIHBhcmFtZXRlciB0aGF0IGluZGlj
YXRlcyB3aGV0aGVyIHRoZSBzaGFkZXJzIGFyZQorICAgICAgICAgICAgcmVmZXJlbmNlZCBmcm9t
IHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKToKKyAgICAgICAgICAg
IFJlbW92ZSB0aGUgYXV0aG9yLWFjY2Vzc2libGUgRE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVy
ICJ1X3RleHR1cmUiLgorICAgICAgICAgICAgT25seSBmaW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUg
aW50ZXJuYWwgRE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVyICJjc3NfdV90ZXh0dXJlIgorICAg
ICAgICAgICAgaWYgdGhlIGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHA6CisgICAgICAgICAgICBSZWplY3QgYWxsIHNoYWRlcnMgdGhh
dCBoYXZlIHNhbXBsZXIgdW5pZm9ybXMgZGVmaW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQ
cm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFu
ZEJ1ZmZlcnMpOgorICAgICAgICAgICAgQWRkIGFuIGFzc2VydCB0byB2ZXJpZnkgdGhhdCB0aGUg
RE9NIGVsZW1lbnQgdGV4dHVyZSBpcyBib3VuZCBvbmx5IGlmIHRoZSBhdXRob3IgaXMKKyAgICAg
ICAgICAgIHVzaW5nIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorCiAyMDEyLTA5LTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1Y4XSBjb252ZXJ0RXZlbnRUYXJn
ZXRUb1Y4T2JqZWN0IGRvZXNuJ3QgbmVlZCB0byBiZSBvdmVybG9hZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKaW5k
ZXggNWM1MjhjZi4uMWYxMmI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApAQCAtOTIsOCArOTIsNyBAQCBib29s
IEFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFk
ZXJTb3VyY2UsIEFOR0xFU2hhZAogCiAgICAgYm9vbCB2YWxpZGF0ZVN1Y2Nlc3MgPSBTaENvbXBp
bGUoY29tcGlsZXIsIHNoYWRlclNvdXJjZVN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RFIHwgZXh0
cmFDb21waWxlT3B0aW9ucyk7CiAgICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKLSAgICAgICAg
aW50IGxvZ1NpemUgPSAwOwotICAgICAgICBTaEdldEluZm8oY29tcGlsZXIsIFNIX0lORk9fTE9H
X0xFTkdUSCwgJmxvZ1NpemUpOworICAgICAgICBpbnQgbG9nU2l6ZSA9IGdldFBhcmFtZXRlclZh
bHVlKGNvbXBpbGVyLCBTSF9JTkZPX0xPR19MRU5HVEgpOwogICAgICAgICBpZiAobG9nU2l6ZSA+
IDEpIHsKICAgICAgICAgICAgIE93bkFycmF5UHRyPGNoYXI+IGxvZ0J1ZmZlciA9IGFkb3B0QXJy
YXlQdHIobmV3IGNoYXJbbG9nU2l6ZV0pOwogICAgICAgICAgICAgaWYgKGxvZ0J1ZmZlcikgewpA
QCAtMTA0LDggKzEwMyw3IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OnZhbGlkYXRlU2hhZGVy
U291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpbnQgdHJhbnNsYXRpb25MZW5ndGggPSAwOwotICAgIFNo
R2V0SW5mbyhjb21waWxlciwgU0hfT0JKRUNUX0NPREVfTEVOR1RILCAmdHJhbnNsYXRpb25MZW5n
dGgpOworICAgIGludCB0cmFuc2xhdGlvbkxlbmd0aCA9IGdldFBhcmFtZXRlclZhbHVlKGNvbXBp
bGVyLCBTSF9PQkpFQ1RfQ09ERV9MRU5HVEgpOwogICAgIGlmICh0cmFuc2xhdGlvbkxlbmd0aCA+
IDEpIHsKICAgICAgICAgT3duQXJyYXlQdHI8Y2hhcj4gdHJhbnNsYXRpb25CdWZmZXIgPSBhZG9w
dEFycmF5UHRyKG5ldyBjaGFyW3RyYW5zbGF0aW9uTGVuZ3RoXSk7CiAgICAgICAgIGlmICghdHJh
bnNsYXRpb25CdWZmZXIpCkBAIC0xMTcsNiArMTE1LDQ1IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlk
Z2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVT
aGFkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQU5HTEVXZWJLaXRCcmlkZ2U6OmdldFVu
aWZvcm1JbmZvKFNoU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBWZWN0b3I8QU5HTEVVbmlmb3JtSW5m
bz4gJmluZm9WZWN0b3IpCit7CisgICAgY29uc3QgU2hIYW5kbGUgY29tcGlsZXIgPSAoc2hhZGVy
VHlwZSA9PSBTSF9WRVJURVhfU0hBREVSID8gbV92ZXJ0ZXhDb21waWxlciA6IG1fZnJhZ21lbnRD
b21waWxlcik7CisKKyAgICBpbnQgbnVtVW5pZm9ybXMgPSBnZXRQYXJhbWV0ZXJWYWx1ZShjb21w
aWxlciwgU0hfQUNUSVZFX1VOSUZPUk1TKTsKKyAgICBpZiAobnVtVW5pZm9ybXMgPD0gMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaW50IG1heE5hbWVMZW5ndGggPSBnZXRQYXJhbWV0ZXJWYWx1
ZShjb21waWxlciwgU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCk7CisgICAgLy8gVGhlIG1h
eCBsZW5ndGggZm9yIGEgdW5pZm9ybSBuYW1lIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFj
dGVyIGxvbmcuCisgICAgQVNTRVJUKG1heE5hbWVMZW5ndGggPiAwKTsKKyAgICBPd25BcnJheVB0
cjxjaGFyPiBuYW1lQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hhclttYXhOYW1lTGVuZ3Ro
XSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVVuaWZvcm1zOyArK2kpIHsKKyAgICAg
ICAgQU5HTEVVbmlmb3JtSW5mbyBpbmZvOworICAgICAgICBpbnQgbmFtZUxlbmd0aCA9IC0xOwor
ICAgICAgICBTaEdldEFjdGl2ZVVuaWZvcm0oY29tcGlsZXIsIGksICZuYW1lTGVuZ3RoLCAmaW5m
by5zaXplLCAmaW5mby50eXBlLCBuYW1lQnVmZmVyLmdldCgpLCAwKTsKKyAgICAgICAgLy8gQSB1
bmlmb3JtIG5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZy4KKyAgICAg
ICAgQVNTRVJUKG5hbWVMZW5ndGggPiAwKTsKKyAgICAgICAgaW5mby5uYW1lID0gbmFtZUJ1ZmZl
ci5nZXQoKTsKKyAgICAgICAgaW5mb1ZlY3Rvci5hcHBlbmQoaW5mbyk7CisgICAgfQorfQorCitp
bnQgQU5HTEVXZWJLaXRCcmlkZ2U6OmdldFBhcmFtZXRlclZhbHVlKGNvbnN0IFNoSGFuZGxlIGNv
bXBpbGVyLCBTaFNoYWRlckluZm8gcGFyYW1ldGVyTmFtZSkKK3sKKyAgICBpbnQgcGFyYW1ldGVy
ID0gLTE7CisgICAgU2hHZXRJbmZvKGNvbXBpbGVyLCBwYXJhbWV0ZXJOYW1lLCAmcGFyYW1ldGVy
KTsKKyAgICByZXR1cm4gcGFyYW1ldGVyOworfQorCitib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpp
c1NhbXBsZXJUeXBlKFNoRGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgcmV0dXJuIGRhdGFUeXBl
ID09IFNIX1NBTVBMRVJfMkQKKyAgICAgICAgfHwgZGF0YVR5cGUgPT0gU0hfU0FNUExFUl9DVUJF
CisgICAgICAgIHx8IGRhdGFUeXBlID09IFNIX1NBTVBMRVJfMkRfUkVDVF9BUkIKKyAgICAgICAg
fHwgZGF0YVR5cGUgPT0gU0hfU0FNUExFUl9FWFRFUk5BTF9PRVM7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFVTRSgzRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCmluZGV4IDI2ZjMwMTIuLjQwMjM2ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuaApAQCAtNDIsNiArNDIsMTIgQEAgZW51bSBBTkdMRVNoYWRlclR5cGUgewogICAgIFNIQURF
Ul9UWVBFX0ZSQUdNRU5UID0gU0hfRlJBR01FTlRfU0hBREVSLAogfTsKIAorc3RydWN0IEFOR0xF
VW5pZm9ybUluZm8geworICAgIFN0cmluZyBuYW1lOworICAgIFNoRGF0YVR5cGUgdHlwZTsKKyAg
ICBpbnQgc2l6ZTsKK307CisKIGNsYXNzIEFOR0xFV2ViS2l0QnJpZGdlIHsKIHB1YmxpYzoKIApA
QCAtNTMsOCArNTksMTUgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdmFsaWRhdGVTaGFkZXJT
b3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUsIFN0cmluZyYg
dHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9nLCBpbnQg
ZXh0cmFDb21waWxlT3B0aW9ucyA9IDApOwogCisgICAgLy8gR2V0IHRoZSB1bmlmb3JtIGluZm8g
Zm9yIHRoZSBsYXN0IHZhbGlkYXRlZCBzaGFkZXIgb2YgdHlwZSBzaGFkZXJUeXBlLgorICAgIHZv
aWQgZ2V0VW5pZm9ybUluZm8oU2hTaGFkZXJUeXBlLCBWZWN0b3I8QU5HTEVVbmlmb3JtSW5mbz4g
JmluZm9WZWN0b3IpOworCisgICAgc3RhdGljIGJvb2wgaXNTYW1wbGVyVHlwZShTaERhdGFUeXBl
KTsKKwogcHJpdmF0ZToKIAorICAgIGludCBnZXRQYXJhbWV0ZXJWYWx1ZShjb25zdCBTaEhhbmRs
ZSBjb21waWxlciwgU2hTaGFkZXJJbmZvIHBhcmFtZXRlck5hbWUpOworCiAgICAgdm9pZCBjbGVh
bnVwQ29tcGlsZXJzKCk7CiAKICAgICBib29sIGJ1aWx0Q29tcGlsZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCmluZGV4IDNjNjk1OWIuLmVjYTJiOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwg
Y29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikKK0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVy
LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBib29sIG1peEVuYWJsZWQp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcHJvZ3JhbSgwKQogICAgICwgbV9w
b3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQpAQCAtNzMsNyArNzMsNyBAQCBDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udAogICAgIGlmICghbV9wcm9ncmFtKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOworICAgIGluaXRpYWxpemVQYXJhbWV0
ZXJMb2NhdGlvbnMobWl4RW5hYmxlZCk7CiAgICAgCiAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1
ZTsKIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbTo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZQogICAgIHJl
dHVybiBwcm9ncmFtOwogfQogCi12b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6aW5p
dGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpCit2b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbTo6aW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucyhib29sIG1peEVuYWJsZWQpCiB7CiAg
ICAgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlv
bihtX3Byb2dyYW0sICJhX3Bvc2l0aW9uIik7CiAgICAgbV90ZXhBdHRyaWJMb2NhdGlvbiA9IG1f
Y29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiYV90ZXhDb29yZCIpOwpAQCAt
MTI5LDEyICsxMjksMTUgQEAgdm9pZCBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmluaXRp
YWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoKQogICAgIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9wcm9qZWN0aW9u
TWF0cml4Iik7CiAgICAgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV90ZXh0dXJlU2l6ZSIpOwogICAgIG1fY29udGVudFNh
bXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwg
InVfY29udGVudFRleHR1cmUiKTsKLSAgICBtX2ludGVybmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiY3NzX2FfdGV4Q29v
cmQiKTsKLSAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1fcHJvZ3JhbSwgImNzc191X3RleHR1cmUiKTsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRl
eHR1cmUgYWNjZXNzIHZpYSB1X3RleHR1cmUgYW5kIGNoYW5nZSB0aGUgdGVzdHMgdG8gdXNlIGJs
ZW5kaW5nIGFuZCBjb21wb3NpdGluZy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4NzEKLSAgICBpZiAobV9zYW1wbGVyTG9jYXRpb24gPT0gLTEpCi0g
ICAgICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
bV9wcm9ncmFtLCAidV90ZXh0dXJlIik7CisgICAgaWYgKG1peEVuYWJsZWQpIHsKKyAgICAgICAg
Ly8gT25seSBlbmFibGUgdGhlc2UgaW50ZXJuYWwgc3ltYm9scyBpZiB0aGUgYXV0aG9yIGlzIHVz
aW5nIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorICAgICAgICBtX2ludGVybmFsVGV4Q29vcmRBdHRy
aWJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiY3Nz
X2FfdGV4Q29vcmQiKTsKKyAgICAgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJjc3NfdV90ZXh0dXJlIik7CisKKyAgICAgICAg
Ly8gVGhlc2UgaW50ZXJuYWwgc3ltYm9scyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSB2
YWxpZGF0ZWQgc2hhZGVycy4KKyAgICAgICAgQVNTRVJUKG1faW50ZXJuYWxUZXhDb29yZEF0dHJp
YkxvY2F0aW9uICE9IC0xKTsKKyAgICAgICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0x
KTsKKyAgICB9CiB9CiAKIGludCBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OnVuaWZvcm1M
b2NhdGlvbkJ5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0uaAppbmRleCBhZDk0NWY2Li43MTNhMTIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3Mg
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDsKIAogY2xhc3MgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFn
bWVudFNoYWRlcikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRG
cmFnbWVudFNoYWRlciwgYm9vbCBtaXhFbmFibGVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oY29udGV4dCwgdmFsaWRhdGVk
VmVydGV4U2hhZGVyLCB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShjb250ZXh0LCB2YWxpZGF0
ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBtaXhFbmFibGVkKSk7CiAg
ICAgfQogICAgIAogICAgIH5DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oKTsKQEAgLTczLDEx
ICs3MywxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CiBwcml2YXRlOgotICAgIEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgY29uc3QgU3RyaW5n
JiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRT
aGFkZXIpOworICAgIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIGJvb2wgbWl4RW5hYmxlZCk7CiAgICAg
CiAgICAgUGxhdGZvcm0zRE9iamVjdCBjb21waWxlU2hhZGVyKEdDM0RlbnVtIHNoYWRlclR5cGUs
IGNvbnN0IFN0cmluZyYgc2hhZGVyU3RyaW5nKTsKICAgICBQbGF0Zm9ybTNET2JqZWN0IGxpbmtQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0IGZy
YWdtZW50U2hhZGVyKTsKLSAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoKTsK
KyAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoYm9vbCBtaXhFbmFibGVkKTsK
ICAgICAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fcHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0uY3BwCmluZGV4IGE3ZGFjZGIuLjUxMDlhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtODUsMTQgKzg1LDI5IEBAIEN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
Q3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAgICAgLy8gU2hhZGVycyByZWZlcmVuY2VkIGZyb20gdGhl
IENTUyBtaXggZnVuY3Rpb24gdXNlIGEgZGlmZmVyZW50IHZhbGlkYXRvciB0aGFuIHJlZ3VsYXIg
V2ViR0wgc2hhZGVycy4gU2VlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBmb3IgbW9yZSBk
ZXRhaWxzLgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKiB2YWxpZGF0b3IgPSBwcm9ncmFtSW5mby5t
aXhTZXR0aW5ncygpLmVuYWJsZWQgPyBtX2dsb2JhbENvbnRleHQtPm1peFNoYWRlclZhbGlkYXRv
cigpIDogbV9nbG9iYWxDb250ZXh0LT53ZWJnbFNoYWRlclZhbGlkYXRvcigpOwogICAgIFN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJMb2csIGZyYWdtZW50U2hhZGVyTG9nOwotICAgIGJvb2wgdmVydGV4U2hh
ZGVyVmFsaWQgPSB2YWxpZGF0b3ItPnZhbGlkYXRlU2hhZGVyU291cmNlKG9yaWdpbmFsVmVydGV4
U2hhZGVyLnV0ZjgoKS5kYXRhKCksIFNIQURFUl9UWVBFX1ZFUlRFWCwgbV92YWxpZGF0ZWRWZXJ0
ZXhTaGFkZXIsIHZlcnRleFNoYWRlckxvZyk7Ci0gICAgYm9vbCBmcmFnbWVudFNoYWRlclZhbGlk
ID0gdmFsaWRhdG9yLT52YWxpZGF0ZVNoYWRlclNvdXJjZShvcmlnaW5hbEZyYWdtZW50U2hhZGVy
LnV0ZjgoKS5kYXRhKCksIFNIQURFUl9UWVBFX0ZSQUdNRU5ULCBtX3ZhbGlkYXRlZEZyYWdtZW50
U2hhZGVyLCBmcmFnbWVudFNoYWRlckxvZyk7CisgICAgYm9vbCB2ZXJ0ZXhTaGFkZXJWYWxpZCA9
IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3VyY2Uob3JpZ2luYWxWZXJ0ZXhTaGFkZXIudXRm
OCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVYLCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwg
dmVydGV4U2hhZGVyTG9nLCBTSF9BVFRSSUJVVEVTX1VOSUZPUk1TKTsKKyAgICBib29sIGZyYWdt
ZW50U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPnZhbGlkYXRlU2hhZGVyU291cmNlKG9yaWdpbmFs
RnJhZ21lbnRTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfRlJBR01FTlQsIG1fdmFs
aWRhdGVkRnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTG9nLCBTSF9BVFRSSUJVVEVTX1VO
SUZPUk1TKTsKICAgICBpZiAoIXZlcnRleFNoYWRlclZhbGlkIHx8ICFmcmFnbWVudFNoYWRlclZh
bGlkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgdGhlIHZhbGlkYXRpb24gZXJyb3JzLgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFZhbGlkYXRlIHRoZSBhdXRob3IncyBz
YW1wbGVycy4KKyAgICBWZWN0b3I8QU5HTEVVbmlmb3JtSW5mbz4gdW5pZm9ybUluZm87CisgICAg
dmFsaWRhdG9yLT5nZXRVbmlmb3JtSW5mbyhTSF9WRVJURVhfU0hBREVSLCB1bmlmb3JtSW5mbyk7
CisgICAgdmFsaWRhdG9yLT5nZXRVbmlmb3JtSW5mbyhTSF9GUkFHTUVOVF9TSEFERVIsIHVuaWZv
cm1JbmZvKTsKKyAgICBmb3IgKFZlY3RvcjxBTkdMRVVuaWZvcm1JbmZvPjo6aXRlcmF0b3IgaXQg
PSB1bmlmb3JtSW5mby5iZWdpbigpOyBpdCAhPSB1bmlmb3JtSW5mby5lbmQoKTsgKytpdCkgewor
ICAgICAgICBpZiAoQU5HTEVXZWJLaXRCcmlkZ2U6OmlzU2FtcGxlclR5cGUoKCppdCkudHlwZSkp
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSByZXN0cmljdCBzaGFkZXJzIHdp
dGggYW55IHNhbXBsZXIgZGVmaW5lZC4KKyAgICAgICAgICAgIC8vIFdoZW4gd2UgaW1wbGVtZW50
IHRleHR1cmUgcGFyYW1ldGVycywgd2Ugd2lsbCBhbGxvdyBzaGFkZXJzIHdob3NlIHNhbXBsZXJz
IGFyZSBib3VuZCB0byB2YWxpZCB0ZXh0dXJlcy4KKyAgICAgICAgICAgIC8vIFdlIG11c3Qgbm90
IGFsbG93IE9wZW5HTCB0byBnaXZlIHVuYm91bmQgc2FtcGxlcnMgYSBkZWZhdWx0IHZhbHVlIG9m
IDAgYmVjYXVzZSB0aGF0IHJlZmVyZW5jZXMgdGhlIERPTSBlbGVtZW50IHRleHR1cmUsCisgICAg
ICAgICAgICAvLyB3aGljaCBzaG91bGQgYmUgaW5hY2Nlc3NpYmxlIHRvIHRoZSBhdXRob3IncyBz
aGFkZXIgY29kZS4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjIzMAorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CiAgICAgLy8gV2UgbmVlZCB0byBhZGQgdGV4dHVyZSBhY2Nlc3MsIGJsZW5kaW5nLCBhbmQgY29t
cG9zaXRpbmcgY29kZSB0byBzaGFkZXJzIHRoYXQgYXJlIHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NT
IG1peCBmdW5jdGlvbi4KICAgICBpZiAocHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVk
KSB7CiAgICAgICAgIHJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoKTsKQEAgLTEwNiw3ICsxMjEsNyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcgogewogICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQg
JiYgbV9nbG9iYWxDb250ZXh0ICYmICFtX3ZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAm
JiAhbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CiAgICAgaWYgKCFtX2NvbXBp
bGVkUHJvZ3JhbSkKLSAgICAgICAgbV9jb21waWxlZFByb2dyYW0gPSBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW06OmNyZWF0ZShtX2dsb2JhbENvbnRleHQtPmNvbnRleHQoKSwgbV92YWxpZGF0
ZWRWZXJ0ZXhTaGFkZXIsIG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpOworICAgICAgICBtX2Nv
bXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fZ2xv
YmFsQ29udGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0
ZWRGcmFnbWVudFNoYWRlciwgbV9wcm9ncmFtSW5mby5taXhTZXR0aW5ncygpLmVuYWJsZWQpOwog
ICAgIHJldHVybiBtX2NvbXBpbGVkUHJvZ3JhbTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApp
bmRleCBkNjVmZjk3Li44MjliZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApAQCAtMzI5LDYg
KzMyOSw5IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycyhVaW50
OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSkKICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0o
bV9jb21waWxlZFByb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgCiAgICAgaWYgKG1fY29tcGlsZWRQ
cm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICAvLyBXZSBzaG91bGQg
YmUgYmluZGluZyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVyIG9ubHkgaWYgdGhlIGF1
dGhvciBpcyB1c2luZyB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KKyAgICAgICAgQVNTRVJUKG1fdmFs
aWRhdGVkUHJvZ3JhbS0+cHJvZ3JhbUluZm8oKS5taXhTZXR0aW5ncygpLmVuYWJsZWQpOworCiAg
ICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTApOwogICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX2NvbXBpbGVkUHJvZ3JhbS0+c2Ft
cGxlckxvY2F0aW9uKCksIDApOwogI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163251</attachid>
            <date>2012-09-10 17:06:13 -0700</date>
            <delta_ts>2012-09-11 19:45:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93871-3.patch</filename>
            <type>text/plain</type>
            <size>26836</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGQ0NDBjLi5iOTM3NjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDkt
MTAgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gUmVtb3ZlIGRpcmVjdCB0ZXh0dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCB0aGUgInVfdGV4dHVyZSIgc2FtcGxlciBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSB0
byBhdXRob3Igc2hhZGVyCisgICAgICAgIGNvZGUgYmVjYXVzZSBpdCB3YXMgcmVtb3ZlZC4gVGhl
c2UgdGVzdHMgYWxzbyB2ZXJpZnkgdGhhdCBzaGFkZXJzIHdpdGggdW5ib3VuZCBzYW1wbGVycyBk
bworICAgICAgICBub3QgZXhlY3V0ZS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5IHRo
YXQgdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyIGlzIG5vdCBhY2Nlc3NpYmxl
IHRvIGF1dGhvcgorICAgICAgICBzaGFkZXIgY29kZS4gVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0
aGlzIGlzIHRydWUgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTCisg
ICAgICAgIG1peCBmdW5jdGlvbiBhbmQgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBhdHRlbXB0
cyB0byBkZWZpbmUgY3NzX3VfdGV4dHVyZSBpcyBoaXMgb3IgaGVyCisgICAgICAgIHNoYWRlci4K
KworICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50
LXRleHR1cmUtYWNjZXNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQt
Y3NzLXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNv
dXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS5mczogQWRkZWQuCisgICAgICAgICog
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mczogQWRkZWQuCisg
ICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLmZzOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJj
ZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzOiBBZGRlZC4KKwogMjAxMi0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBET00g
d3JhcHBlciBjcmVhdGlvbiBpbnZvbHZlcyBhIGJ1bmNoIG9mIHNrZXRjaHkgY29kZSByZWxhdGVk
IHRvIGZpbmRpbmcgdGhlIEZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5v
LWVsZW1lbnQtdGV4dHVyZS1hY2Nlc3MtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xZDg0MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1hY2Nl
c3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgYW4gYXV0aG9yJ3Mgc2hhZGVyIGNvZGUg
Y2Fubm90IHNhbXBsZSBhIHNoYWRlZCBlbGVtZW50J3MgdGV4dHVyZS48L3RpdGxlPgorICAgIDwh
LS0gCisgICAgICAgIFRoaXMgaXMgdGhlIHJlZmVyZW5jZSBmaWxlIGZvciB0aGUgdGVzdC4KKyAg
ICAgICAgSWYgdGhlIHRlc3QgcGFzc2VzLCB5b3Ugc2hvdWxkIHNlZSA2IHZlcnRpY2FsbHktc3Rh
Y2tlZCBncmVlbiBib3hlcy4KKyAgICAtLT4KKyAgICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4
OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48
L2Rpdj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48L2Rpdj4K
KyAgICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1h
Y2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWE4NDkzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT5UZXN0cyB0aGF0IGFuIGF1dGhvcidzIHNoYWRlciBjb2RlIGNhbm5vdCBzYW1wbGUg
YSBzaGFkZWQgZWxlbWVudCdzIHRleHR1cmUuPC90aXRsZT4KKyAgICA8IS0tIElmIHRoZSB0ZXN0
IHBhc3NlcywgeW91IHNob3VsZCBzZWUgNiB2ZXJ0aWNhbGx5LXN0YWNrZWQgZ3JlZW4gYm94ZXMu
IC0tPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1ND
dXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICAvKiBUaGUg
c2hhZGVycyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQncyBjb2xvciBmcm9tIGdyZWVuIHRvIHJlZCBp
ZiB0aGV5IGFyZSBhYmxlIHRvIHNhbXBsZSBpdHMgdGV4dHVyZS4gKi8KKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
ICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9CisgICAgLnNhbXBs
ZS11LXRleHR1cmUgeworICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVz
b3VyY2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgdXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4
dHVyZS5mcycpKTsKKyAgICB9CisgICAgLnNhbXBsZS11LXRleHR1cmUtbWl4IHsKKyAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9wYXNzLXRleC1jb29yZC52
cycpIG1peCh1cmwoJy4uL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1h
bCBzb3VyY2UtYXRvcCkpOworICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0
dXJlIHsKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9w
YXNzLXRleC1jb29yZC52cycpIHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS5mcycpKTsgIAorICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10
ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNv
dXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXVu
ZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1hbCBzb3VyY2UtYXRvcCkpOworICAg
IH0KKyAgICAuc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZSB7CisgICAgICAgIC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSB1cmwo
Jy4uL3Jlc291cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzJykpOyAgCisgICAg
fQorICAgIC5zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBt
aXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMn
KSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgY2xhc3M9InNhbXBsZS11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9InNhbXBsZS11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1w
bGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXgiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNh
bXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS1taXguZnMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3Vy
Y2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNlZjk4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4
LmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBj
YW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hp
Y2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIGlz
IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQgc2hvdWxkIGZhaWwgdG8g
dmFsaWRhdGUgYmVjYXVzZSBpdCBkZWZpbmVzICJjc3NfdV90ZXh0dXJlIiwKKy8vIHVzaW5nIHRo
ZSByZXN0cmljdGVkICJjc3NfIiBwcmVmaXguCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
Cit1bmlmb3JtIHNhbXBsZXIyRCBjc3NfdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxlbWVu
dCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVyZSwgdl90ZXhD
b29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgorCWNvbG9yLnJn
ID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4
dHVyZS5mcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS5mcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODQ2ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291
cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8v
IFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRl
cm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVs
ZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGJl
Y2F1c2UgaXQgZGVmaW5lcyAiY3NzX3VfdGV4dHVyZSIsIHdoaWNoIHNob3VsZCBiZSBhbiB1bmJv
dW5kIHNhbXBsZXIsCisvLyBzaW5jZSB0aGlzIHNoYWRlciBpcyBub3QgcmVmZXJlbmNlZCBmcm9t
IHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5p
Zm9ybSBzYW1wbGVyMkQgY3NzX3VfdGV4dHVyZTsKKwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9NIGVsZW1lbnQgdGV4
dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUsIHZfdGV4Q29vcmQp
OworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5yZyA9IGNv
bG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUtbWl4LmZzIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWYzNTIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJl
LW1peC5mcwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFk
ZXIgd2l0aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgor
Ly8gVGhpcyBzaGFkZXIgaXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIGFu
ZCB3cml0ZXMgaXRzIG91dHB1dCB0byBjc3NfTWl4Q29sb3IuCisKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCit1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7CisKK3ZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworCS8vIFRyeSB0byBzYW1wbGUgdGhlIERPTSBl
bGVtZW50IHRleHR1cmUuCisJdmVjNCBjb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4
Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5y
ZyA9IGNvbG9yLmdyOworCisJY3NzX01peENvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwMmI4NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS5m
cwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgd2l0
aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgorLy8gVGhp
cyBzaGFkZXIgaXMgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQg
d3JpdGVzIGl0cyBvdXRwdXQgdG8gZ2xfRnJhZ0NvbG9yLgorCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxl
bWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENv
b3JkKTsKKworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29sb3Iucmcg
PSBjb2xvci5ncjsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11LXRl
eHR1cmUtbWl4LmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUt
dW5kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNiOTY2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMKQEAg
LTAsMCArMSwxNyBAQAorLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgc2hhZGVyIGNhbm5vdCBy
ZWFkIGZyb20gdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyLCB3aGljaCByZWZl
cmVuY2VzIHRoZSBET00gZWxlbWVudCB0ZXh0dXJlLgorLy8gVGhpcyBzaGFkZXIgc2hvdWxkIGZh
aWwgdG8gdmFsaWRhdGUgYmVjYXVzZSAiY3NzX3VfdGV4dHVyZSIgc2hvdWxkIGJlIHVuZGVmaW5l
ZCB0byB0aGlzIGNvZGUuCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBE
T00gZWxlbWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgor
CWNvbG9yLnJnID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5l
ZC1jc3MtdS10ZXh0dXJlLmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9z
YW1wbGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUuZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDFlMmYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0w
LDAgKzEsMTcgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVh
ZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJl
bmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWls
IHRvIHZhbGlkYXRlIGJlY2F1c2UgImNzc191X3RleHR1cmUiIHNob3VsZCBiZSB1bmRlZmluZWQg
dG8gdGhpcyBjb2RlLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9N
IGVsZW1lbnQgdGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUs
IHZfdGV4Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwlj
b2xvci5yZyA9IGNvbG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMWJjYWFmYS4uZjE3M2E0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEy
LTA5LTEwICBNYXggVnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NT
IFNoYWRlcnNdIFJlbW92ZSBkaXJlY3QgdGV4dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGF1
dGhvci1hY2Nlc3NpYmxlICJ1X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNoIHJlZmVyZW5jZWQgdGhl
IERPTSBlbGVtZW50IHRleHR1cmUuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCByZWplY3Qgc2hh
ZGVycyB3aXRoIGF1dGhvci1kZWZpbmVkIHNhbXBsZXIgdW5pZm9ybXMuIFdoZW4gd2UgaW1wbGVt
ZW50IHRleHR1cmUgCisgICAgICAgIHBhcmFtZXRlcnMsIHdlIHdpbGwgYWxsb3cgc2hhZGVycyB3
aG9zZSBzYW1wbGVycyBhcmUgYm91bmQgdG8gdmFsaWQgdGV4dHVyZXMuIFdlIG11c3Qgbm90Cisg
ICAgICAgIGFsbG93IE9wZW5HTCB0byBnaXZlIHVuYm91bmQgc2FtcGxlcnMgYSBkZWZhdWx0IHZh
bHVlIG9mIDAgYmVjYXVzZSB0aGF0IHJlZmVyZW5jZXMgdGhlIERPTQorICAgICAgICBlbGVtZW50
IHRleHR1cmUsIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhlIGF1dGhvcidzIHNo
YWRlciBjb2RlLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBh
cmFtZXRlclZhbHVlKToKKyAgICAgICAgICAgIEFkZCBhIGZpbGUtc3RhdGljIGZ1bmN0aW9uIHRv
IGVhc2lseSBxdWVyeSB0aGUgdmFyaW91cyBpbnRlZ2VyIHBhcmFtZXRlcnMgdGhhdCBBTkdMRQor
ICAgICAgICAgICAgZXhwb3Nlcy4gVGhlIG5ldyBnZXRVbmlmb3JtcyBtZXRob2QgYW5kIHRoZSBl
eGlzdGluZyB2YWxpZGF0ZVNoYWRlclNvdXJjZSBtZXRob2Qgbm93CisgICAgICAgICAgICBib3Ro
IHVzZSBnZXRQYXJhbWV0ZXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKToKKyAgICAgICAg
ICAgIFVzZSB0aGUgbmV3IGdldFBhcmFtZXRlclZhbHVlIGZ1bmN0aW9uIGluc3RlYWQgb2YgQU5H
TEUncyBTaEdldEluZm8gZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJy
aWRnZTo6Z2V0VW5pZm9ybXMpOgorICAgICAgICAgICAgQWRkIGEgbmV3IHB1YmxpYyBtZXRob2Qg
dG8gQU5HTEVXZWJLaXRCcmlkZ2Ugd2hpY2ggZ2V0cyB0aGUgaW5mbyBhYm91dCBhbGwgb2YgdGhl
CisgICAgICAgICAgICB1bmlmb3JtcyBpbiB0aGUgbGFzdCB2YWxpZGF0ZWQgdmVydGV4IHNoYWRl
ciBvciBmcmFnbWVudCBzaGFkZXIuIFVuaWZvcm0gaW5mbyBpbmNsdWRlcworICAgICAgICAgICAg
bmFtZSwgdHlwZSwgYW5kIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVX
ZWJLaXRCcmlkZ2UuaDoKKyAgICAgICAgKEFOR0xFU2hhZGVyU3ltYm9sKToKKyAgICAgICAgKFdl
YkNvcmU6OkFOR0xFU2hhZGVyU3ltYm9sOjppc1NhbXBsZXIpOgorICAgICAgICAgICAgUmV0dXJu
cyB0cnVlIGlmIHRoZSBzeW1ib2wncyBkYXRhIHR5cGUgaXMgYSBHTFNMIHNhbXBsZXIgKGUuZy4g
c2FtcGxlcjJELCBzYW1wbGVyQ3ViZSkuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFO
R0xFV2ViS2l0QnJpZGdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSk6CisgICAg
ICAgICAgICBUYWtlIGluIGFuIGFkZGl0aW9uYWwgY29uc3RydWN0b3IgcGFyYW1ldGVyIHRoYXQg
aW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNoYWRlcnMgYXJlCisgICAgICAgICAgICByZWZlcmVuY2Vk
IGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW06OmluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMpOgorICAgICAg
ICAgICAgUmVtb3ZlIHRoZSBhdXRob3ItYWNjZXNzaWJsZSBET00gZWxlbWVudCB0ZXh0dXJlIHNh
bXBsZXIgInVfdGV4dHVyZSIuIE9ubHkgZmluZCB0aGUKKyAgICAgICAgICAgIGxvY2F0aW9uIG9m
IHRoZSBpbnRlcm5hbCBET00gZWxlbWVudCB0ZXh0dXJlIHNhbXBsZXIgImNzc191X3RleHR1cmUi
IGlmIHRoZSBhdXRob3IgaXMKKyAgICAgICAgICAgIHVzaW5nIHRoZSBDU1MgbWl4IGZ1bmN0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgICAgIFJlamVjdCBhbGwgc2hhZGVy
cyB0aGF0IGhhdmUgc2FtcGxlciB1bmlmb3JtcyBkZWZpbmVkLgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21w
aWxlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0
b21GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9n
cmFtQW5kQnVmZmVycyk6CisgICAgICAgICAgICBBZGQgYW4gYXNzZXJ0IHRvIHZlcmlmeSB0aGF0
IHRoZSBET00gZWxlbWVudCB0ZXh0dXJlIGlzIGJvdW5kIG9ubHkgaWYgdGhlIGF1dGhvciBpcwor
ICAgICAgICAgICAgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCisKIDIwMTItMDktMDkgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhdIGNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIG92ZXJsb2FkZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cAppbmRleCA1YzUyOGNmLi45ZDY3NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0zMiw2ICszMiwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2lubGluZSBzdGF0aWMgaW50IGdldFBhcmFtZXRl
clZhbHVlKGNvbnN0IFNoSGFuZGxlIGNvbXBpbGVyLCBTaFNoYWRlckluZm8gcGFyYW1ldGVyTmFt
ZSkKK3sKKyAgICBpbnQgcGFyYW1ldGVyID0gLTE7CisgICAgU2hHZXRJbmZvKGNvbXBpbGVyLCBw
YXJhbWV0ZXJOYW1lLCAmcGFyYW1ldGVyKTsKKyAgICByZXR1cm4gcGFyYW1ldGVyOworfQorCiBB
TkdMRVdlYktpdEJyaWRnZTo6QU5HTEVXZWJLaXRCcmlkZ2UoU2hTaGFkZXJPdXRwdXQgc2hhZGVy
T3V0cHV0LCBTaFNoYWRlclNwZWMgc2hhZGVyU3BlYykKICAgICA6IGJ1aWx0Q29tcGlsZXJzKGZh
bHNlKQogICAgICwgbV9mcmFnbWVudENvbXBpbGVyKDApCkBAIC05Miw4ICs5OSw3IEBAIGJvb2wg
QU5HTEVXZWJLaXRCcmlkZ2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRl
clNvdXJjZSwgQU5HTEVTaGFkCiAKICAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IFNoQ29tcGls
ZShjb21waWxlciwgc2hhZGVyU291cmNlU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUgfCBleHRy
YUNvbXBpbGVPcHRpb25zKTsKICAgICBpZiAoIXZhbGlkYXRlU3VjY2VzcykgewotICAgICAgICBp
bnQgbG9nU2l6ZSA9IDA7Ci0gICAgICAgIFNoR2V0SW5mbyhjb21waWxlciwgU0hfSU5GT19MT0df
TEVOR1RILCAmbG9nU2l6ZSk7CisgICAgICAgIGludCBsb2dTaXplID0gZ2V0UGFyYW1ldGVyVmFs
dWUoY29tcGlsZXIsIFNIX0lORk9fTE9HX0xFTkdUSCk7CiAgICAgICAgIGlmIChsb2dTaXplID4g
MSkgewogICAgICAgICAgICAgT3duQXJyYXlQdHI8Y2hhcj4gbG9nQnVmZmVyID0gYWRvcHRBcnJh
eVB0cihuZXcgY2hhcltsb2dTaXplXSk7CiAgICAgICAgICAgICBpZiAobG9nQnVmZmVyKSB7CkBA
IC0xMDQsOCArMTEwLDcgQEAgYm9vbCBBTkdMRVdlYktpdEJyaWRnZTo6dmFsaWRhdGVTaGFkZXJT
b3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWQKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGludCB0cmFuc2xhdGlvbkxlbmd0aCA9IDA7Ci0gICAgU2hH
ZXRJbmZvKGNvbXBpbGVyLCBTSF9PQkpFQ1RfQ09ERV9MRU5HVEgsICZ0cmFuc2xhdGlvbkxlbmd0
aCk7CisgICAgaW50IHRyYW5zbGF0aW9uTGVuZ3RoID0gZ2V0UGFyYW1ldGVyVmFsdWUoY29tcGls
ZXIsIFNIX09CSkVDVF9DT0RFX0xFTkdUSCk7CiAgICAgaWYgKHRyYW5zbGF0aW9uTGVuZ3RoID4g
MSkgewogICAgICAgICBPd25BcnJheVB0cjxjaGFyPiB0cmFuc2xhdGlvbkJ1ZmZlciA9IGFkb3B0
QXJyYXlQdHIobmV3IGNoYXJbdHJhbnNsYXRpb25MZW5ndGhdKTsKICAgICAgICAgaWYgKCF0cmFu
c2xhdGlvbkJ1ZmZlcikKQEAgLTExNyw2ICsxMjIsMzMgQEAgYm9vbCBBTkdMRVdlYktpdEJyaWRn
ZTo6dmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNo
YWQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6Z2V0VW5p
Zm9ybXMoU2hTaGFkZXJUeXBlIHNoYWRlclR5cGUsIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4g
JnN5bWJvbHMpCit7CisgICAgY29uc3QgU2hIYW5kbGUgY29tcGlsZXIgPSAoc2hhZGVyVHlwZSA9
PSBTSF9WRVJURVhfU0hBREVSID8gbV92ZXJ0ZXhDb21waWxlciA6IG1fZnJhZ21lbnRDb21waWxl
cik7CisKKyAgICBpbnQgbnVtVW5pZm9ybXMgPSBnZXRQYXJhbWV0ZXJWYWx1ZShjb21waWxlciwg
U0hfQUNUSVZFX1VOSUZPUk1TKTsKKyAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgZmV3ZXIgdGhh
biB6ZXJvIHVuaWZvcm1zLgorICAgIEFTU0VSVChudW1Vbmlmb3JtcyA+PSAwKTsKKyAgICBpZiAo
IW51bVVuaWZvcm1zKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgbWF4TmFtZUxlbmd0aCA9
IGdldFBhcmFtZXRlclZhbHVlKGNvbXBpbGVyLCBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RI
KTsKKyAgICAvLyBUaGUgbWF4IGxlbmd0aCBmb3IgYSB1bmlmb3JtIG5hbWUgc2hvdWxkIGJlIGF0
IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZy4KKyAgICBBU1NFUlQobWF4TmFtZUxlbmd0aCA+IDAp
OworICAgIE93bkFycmF5UHRyPGNoYXI+IG5hbWVCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBj
aGFyW21heE5hbWVMZW5ndGhdKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVW5pZm9y
bXM7ICsraSkgeworICAgICAgICBBTkdMRVNoYWRlclN5bWJvbCBzeW1ib2w7CisgICAgICAgIHN5
bWJvbC5zeW1ib2xUeXBlID0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk07CisgICAgICAgIGlu
dCBuYW1lTGVuZ3RoID0gLTE7CisgICAgICAgIFNoR2V0QWN0aXZlVW5pZm9ybShjb21waWxlciwg
aSwgJm5hbWVMZW5ndGgsICZzeW1ib2wuc2l6ZSwgJnN5bWJvbC5kYXRhVHlwZSwgbmFtZUJ1ZmZl
ci5nZXQoKSwgMCk7CisgICAgICAgIC8vIEEgdW5pZm9ybSBuYW1lIHNob3VsZCBiZSBhdCBsZWFz
dCBvbmUgY2hhcmFjdGVyIGxvbmcuCisgICAgICAgIEFTU0VSVChuYW1lTGVuZ3RoID4gMCk7Cisg
ICAgICAgIHN5bWJvbC5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChuYW1lQnVmZmVyLmdldCgpLCBu
YW1lTGVuZ3RoKTsKKyAgICAgICAgc3ltYm9scy5hcHBlbmQoc3ltYm9sKTsKKyAgICB9Cit9CisK
IH0KIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCmluZGV4IDI2ZjMwMTIuLjM5
Yzg3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xF
V2ViS2l0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5H
TEVXZWJLaXRCcmlkZ2UuaApAQCAtNDIsNiArNDIsMjYgQEAgZW51bSBBTkdMRVNoYWRlclR5cGUg
ewogICAgIFNIQURFUl9UWVBFX0ZSQUdNRU5UID0gU0hfRlJBR01FTlRfU0hBREVSLAogfTsKIAor
ZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGUgeworICAgIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRS
SUJVVEUsCisgICAgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0KK307CisKK3N0cnVjdCBBTkdM
RVNoYWRlclN5bWJvbCB7CisgICAgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGU7Cisg
ICAgU3RyaW5nIG5hbWU7CisgICAgU2hEYXRhVHlwZSBkYXRhVHlwZTsKKyAgICBpbnQgc2l6ZTsK
KworICAgIGJvb2wgaXNTYW1wbGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkYXRhVHlwZSA9
PSBTSF9TQU1QTEVSXzJECisgICAgICAgICAgICB8fCBkYXRhVHlwZSA9PSBTSF9TQU1QTEVSX0NV
QkUKKyAgICAgICAgICAgIHx8IGRhdGFUeXBlID09IFNIX1NBTVBMRVJfMkRfUkVDVF9BUkIKKyAg
ICAgICAgICAgIHx8IGRhdGFUeXBlID09IFNIX1NBTVBMRVJfRVhURVJOQUxfT0VTOworICAgIH0K
K307CisKIGNsYXNzIEFOR0xFV2ViS2l0QnJpZGdlIHsKIHB1YmxpYzoKIApAQCAtNTMsNiArNzMs
MTAgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3Qg
Y2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUsIFN0cmluZyYgdHJhbnNsYXRlZFNo
YWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9nLCBpbnQgZXh0cmFDb21waWxl
T3B0aW9ucyA9IDApOwogCisgICAgLy8gR2V0IHRoZSB1bmlmb3JtcyBmb3IgdGhlIGxhc3QgdmFs
aWRhdGVkIHNoYWRlciBvZiB0eXBlIFNoU2hhZGVyVHlwZS4KKyAgICAvLyBGb3IgdGhpcyBmdW5j
dGlvbiB0byB3b3JrLCB5b3UgbXVzdCB1c2UgdGhlIFNIX0FUVFJJQlVURVNfVU5JRk9STVMgY29t
cGlsZSBvcHRpb24gZHVyaW5nIHZhbGlkYXRpb24uCisgICAgdm9pZCBnZXRVbmlmb3JtcyhTaFNo
YWRlclR5cGUsIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4gJnN5bWJvbHMpOworCiBwcml2YXRl
OgogCiAgICAgdm9pZCBjbGVhbnVwQ29tcGlsZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKaW5kZXggM2M2OTU5Yi4uZWNhMmI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJp
bmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQorQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
OjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0
cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIGJvb2wgbWl4RW5hYmxlZCkKICAgICA6IG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9wcm9ncmFtKDApCiAgICAgLCBtX3Bvc2l0aW9uQXR0
cmliTG9jYXRpb24oLTEpCkBAIC03Myw3ICs3Myw3IEBAIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
CiAgICAgaWYgKCFtX3Byb2dyYW0pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0aWFs
aXplUGFyYW1ldGVyTG9jYXRpb25zKCk7CisgICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9u
cyhtaXhFbmFibGVkKTsKICAgICAKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogfQpAQCAt
MTE3LDcgKzExNyw3IEBAIFBsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHZlcnRlCiAgICAgcmV0dXJuIHByb2dy
YW07CiB9CiAKLXZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFy
YW1ldGVyTG9jYXRpb25zKCkKK3ZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0
aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKGJvb2wgbWl4RW5hYmxlZCkKIHsKICAgICBtX3Bvc2l0
aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3Jh
bSwgImFfcG9zaXRpb24iKTsKICAgICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5n
ZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3JkIik7CkBAIC0xMjksMTIgKzEy
OSwxNSBAQCB2b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6aW5pdGlhbGl6ZVBhcmFt
ZXRlckxvY2F0aW9ucygpCiAgICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25NYXRyaXgiKTsK
ICAgICBtX3NhbXBsZXJTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihtX3Byb2dyYW0sICJ1X3RleHR1cmVTaXplIik7CiAgICAgbV9jb250ZW50U2FtcGxlckxvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9jb250ZW50
VGV4dHVyZSIpOwotICAgIG1faW50ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uID0gbV9jb250
ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJjc3NfYV90ZXhDb29yZCIpOwotICAg
IG1fc2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9n
cmFtLCAiY3NzX3VfdGV4dHVyZSIpOwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGV4dHVyZSBhY2Nl
c3MgdmlhIHVfdGV4dHVyZSBhbmQgY2hhbmdlIHRoZSB0ZXN0cyB0byB1c2UgYmxlbmRpbmcgYW5k
IGNvbXBvc2l0aW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05Mzg3MQotICAgIGlmIChtX3NhbXBsZXJMb2NhdGlvbiA9PSAtMSkKLSAgICAgICAgbV9z
YW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0s
ICJ1X3RleHR1cmUiKTsKKyAgICBpZiAobWl4RW5hYmxlZCkgeworICAgICAgICAvLyBPbmx5IGVu
YWJsZSB0aGVzZSBpbnRlcm5hbCBzeW1ib2xzIGlmIHRoZSBhdXRob3IgaXMgdXNpbmcgdGhlIENT
UyBtaXggZnVuY3Rpb24uCisgICAgICAgIG1faW50ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJjc3NfYV90ZXhDb29y
ZCIpOworICAgICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgImNzc191X3RleHR1cmUiKTsKKworICAgICAgICAvLyBUaGVzZSBp
bnRlcm5hbCBzeW1ib2xzIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHZhbGlkYXRlZCBz
aGFkZXJzLgorICAgICAgICBBU1NFUlQobV9pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb24g
IT0gLTEpOworICAgICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEpOworICAgIH0K
IH0KIAogaW50IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6dW5pZm9ybUxvY2F0aW9uQnlO
YW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbS5oCmluZGV4IGFkOTQ1ZjYuLjcxM2ExMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW0uaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBDdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0OwogCiBjbGFzcyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06IHB1
YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY3JlYXRl
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFs
aWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVy
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY3Jl
YXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hh
ZGVyLCBib29sIG1peEVuYWJsZWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShjb250ZXh0LCB2YWxpZGF0ZWRWZXJ0ZXhTaGFk
ZXIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKGNvbnRleHQsIHZhbGlkYXRlZFZlcnRleFNo
YWRlciwgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIG1peEVuYWJsZWQpKTsKICAgICB9CiAgICAg
CiAgICAgfkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSgpOwpAQCAtNzMsMTEgKzczLDExIEBA
IHB1YmxpYzoKICAgICAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0oKSBjb25zdCB7IHJl
dHVybiBtX3Byb2dyYW07IH0KIHByaXZhdGU6Ci0gICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRl
ZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7Cisg
ICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2
YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgYm9vbCBtaXhFbmFibGVkKTsKICAgICAKICAgICBQbGF0
Zm9ybTNET2JqZWN0IGNvbXBpbGVTaGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSwgY29uc3QgU3Ry
aW5nJiBzaGFkZXJTdHJpbmcpOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbGlua1Byb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFk
ZXIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOworICAgIHZvaWQg
aW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucyhib29sIG1peEVuYWJsZWQpOwogICAgIAogICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgIFBsYXRmb3JtM0RPYmpl
Y3QgbV9wcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS5jcHAKaW5kZXggYTdkYWNkYi4uNDBkZTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCkBAIC04NSwxNCArODUsMjkgQEAgQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShDdXN0b21GaWx0
ZXJHbG9iYWxDb24KICAgICAvLyBTaGFkZXJzIHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBm
dW5jdGlvbiB1c2UgYSBkaWZmZXJlbnQgdmFsaWRhdG9yIHRoYW4gcmVndWxhciBXZWJHTCBzaGFk
ZXJzLiBTZWUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGZvciBtb3JlIGRldGFpbHMuCiAg
ICAgQU5HTEVXZWJLaXRCcmlkZ2UqIHZhbGlkYXRvciA9IHByb2dyYW1JbmZvLm1peFNldHRpbmdz
KCkuZW5hYmxlZCA/IG1fZ2xvYmFsQ29udGV4dC0+bWl4U2hhZGVyVmFsaWRhdG9yKCkgOiBtX2ds
b2JhbENvbnRleHQtPndlYmdsU2hhZGVyVmFsaWRhdG9yKCk7CiAgICAgU3RyaW5nIHZlcnRleFNo
YWRlckxvZywgZnJhZ21lbnRTaGFkZXJMb2c7Ci0gICAgYm9vbCB2ZXJ0ZXhTaGFkZXJWYWxpZCA9
IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3VyY2Uob3JpZ2luYWxWZXJ0ZXhTaGFkZXIudXRm
OCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVYLCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwg
dmVydGV4U2hhZGVyTG9nKTsKLSAgICBib29sIGZyYWdtZW50U2hhZGVyVmFsaWQgPSB2YWxpZGF0
b3ItPnZhbGlkYXRlU2hhZGVyU291cmNlKG9yaWdpbmFsRnJhZ21lbnRTaGFkZXIudXRmOCgpLmRh
dGEoKSwgU0hBREVSX1RZUEVfRlJBR01FTlQsIG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIGZy
YWdtZW50U2hhZGVyTG9nKTsKKyAgICBib29sIHZlcnRleFNoYWRlclZhbGlkID0gdmFsaWRhdG9y
LT52YWxpZGF0ZVNoYWRlclNvdXJjZShvcmlnaW5hbFZlcnRleFNoYWRlci51dGY4KCkuZGF0YSgp
LCBTSEFERVJfVFlQRV9WRVJURVgsIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCB2ZXJ0ZXhTaGFk
ZXJMb2csIFNIX0FUVFJJQlVURVNfVU5JRk9STVMpOworICAgIGJvb2wgZnJhZ21lbnRTaGFkZXJW
YWxpZCA9IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3VyY2Uob3JpZ2luYWxGcmFnbWVudFNo
YWRlci51dGY4KCkuZGF0YSgpLCBTSEFERVJfVFlQRV9GUkFHTUVOVCwgbV92YWxpZGF0ZWRGcmFn
bWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJMb2csIFNIX0FUVFJJQlVURVNfVU5JRk9STVMpOwog
ICAgIGlmICghdmVydGV4U2hhZGVyVmFsaWQgfHwgIWZyYWdtZW50U2hhZGVyVmFsaWQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFJlcG9ydCB0aGUgdmFsaWRhdGlvbiBlcnJvcnMuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgLy8gVmFsaWRhdGUgdGhlIGF1dGhvcidzIHNhbXBsZXJzLgor
ICAgIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4gdW5pZm9ybXM7CisgICAgdmFsaWRhdG9yLT5n
ZXRVbmlmb3JtcyhTSF9WRVJURVhfU0hBREVSLCB1bmlmb3Jtcyk7CisgICAgdmFsaWRhdG9yLT5n
ZXRVbmlmb3JtcyhTSF9GUkFHTUVOVF9TSEFERVIsIHVuaWZvcm1zKTsKKyAgICBmb3IgKFZlY3Rv
cjxBTkdMRVNoYWRlclN5bWJvbD46Oml0ZXJhdG9yIGl0ID0gdW5pZm9ybXMuYmVnaW4oKTsgaXQg
IT0gdW5pZm9ybXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5pc1NhbXBsZXIoKSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHdlIHJlc3RyaWN0IHNoYWRlcnMgd2l0
aCBhbnkgc2FtcGxlciBkZWZpbmVkLgorICAgICAgICAgICAgLy8gV2hlbiB3ZSBpbXBsZW1lbnQg
dGV4dHVyZSBwYXJhbWV0ZXJzLCB3ZSB3aWxsIGFsbG93IHNoYWRlcnMgd2hvc2Ugc2FtcGxlcnMg
YXJlIGJvdW5kIHRvIHZhbGlkIHRleHR1cmVzLgorICAgICAgICAgICAgLy8gV2UgbXVzdCBub3Qg
YWxsb3cgT3BlbkdMIHRvIGdpdmUgdW5ib3VuZCBzYW1wbGVycyBhIGRlZmF1bHQgdmFsdWUgb2Yg
MCBiZWNhdXNlIHRoYXQgcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZSwKKyAgICAg
ICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhlIGF1dGhvcidzIHNo
YWRlciBjb2RlLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2MjMwCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
ICAgICAvLyBXZSBuZWVkIHRvIGFkZCB0ZXh0dXJlIGFjY2VzcywgYmxlbmRpbmcsIGFuZCBjb21w
b3NpdGluZyBjb2RlIHRvIHNoYWRlcnMgdGhhdCBhcmUgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1Mg
bWl4IGZ1bmN0aW9uLgogICAgIGlmIChwcm9ncmFtSW5mby5taXhTZXR0aW5ncygpLmVuYWJsZWQp
IHsKICAgICAgICAgcmV3cml0ZU1peFZlcnRleFNoYWRlcigpOwpAQCAtMTA2LDcgKzEyMSw3IEBA
IFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtOjpjb21waWxlZFByCiB7CiAgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCAm
JiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLmlzTnVsbCgpICYm
ICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKICAgICBpZiAoIW1fY29tcGls
ZWRQcm9ncmFtKQotICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlkYXRl
ZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fY29t
cGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVhdGUobV9nbG9i
YWxDb250ZXh0LT5jb250ZXh0KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRl
ZEZyYWdtZW50U2hhZGVyLCBtX3Byb2dyYW1JbmZvLm1peFNldHRpbmdzKCkuZW5hYmxlZCk7CiAg
ICAgcmV0dXJuIG1fY29tcGlsZWRQcm9ncmFtOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmlu
ZGV4IGQ2NWZmOTcuLjgyOWJkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0zMjksNiAr
MzI5LDkgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFByb2dyYW1BbmRCdWZmZXJzKFVpbnQ4
Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KQogICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbSht
X2NvbXBpbGVkUHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICAKICAgICBpZiAobV9jb21waWxlZFBy
b2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIC8vIFdlIHNob3VsZCBi
ZSBiaW5kaW5nIHRoZSBET00gZWxlbWVudCB0ZXh0dXJlIHNhbXBsZXIgb25seSBpZiB0aGUgYXV0
aG9yIGlzIHVzaW5nIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorICAgICAgICBBU1NFUlQobV92YWxp
ZGF0ZWRQcm9ncmFtLT5wcm9ncmFtSW5mbygpLm1peFNldHRpbmdzKCkuZW5hYmxlZCk7CisKICAg
ICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MCk7CiAgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fY29tcGlsZWRQcm9ncmFtLT5zYW1w
bGVyTG9jYXRpb24oKSwgMCk7CiAjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCg==
</data>
<flag name="review"
          id="174625"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163501</attachid>
            <date>2012-09-11 19:45:08 -0700</date>
            <delta_ts>2012-09-12 09:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93871-4.patch</filename>
            <type>text/plain</type>
            <size>28870</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGQ0NDBjLi4zNGY2M2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDkt
MTEgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gUmVtb3ZlIGRpcmVjdCB0ZXh0dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCB0aGUgInVfdGV4dHVyZSIgc2FtcGxlciBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSB0
byBhdXRob3Igc2hhZGVyCisgICAgICAgIGNvZGUgYmVjYXVzZSBpdCB3YXMgcmVtb3ZlZC4gVGhl
c2UgdGVzdHMgYWxzbyB2ZXJpZnkgdGhhdCBzaGFkZXJzIHdpdGggdW5ib3VuZCBzYW1wbGVycyBk
bworICAgICAgICBub3QgZXhlY3V0ZS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5IHRo
YXQgdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyIGlzIG5vdCBhY2Nlc3NpYmxl
IHRvIGF1dGhvcgorICAgICAgICBzaGFkZXIgY29kZS4gVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0
aGlzIGlzIHRydWUgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTCisg
ICAgICAgIG1peCBmdW5jdGlvbiBhbmQgd2hldGhlciBvciBub3QgdGhlIGF1dGhvciBhdHRlbXB0
cyB0byBkZWZpbmUgY3NzX3VfdGV4dHVyZSBpcyBoaXMgb3IgaGVyCisgICAgICAgIHNoYWRlci4K
KworICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50
LXRleHR1cmUtYWNjZXNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQt
Y3NzLXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNv
dXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS5mczogQWRkZWQuCisgICAgICAgICog
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mczogQWRkZWQuCisg
ICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLmZzOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJj
ZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzOiBBZGRlZC4KKwogMjAxMi0wOS0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBET00g
d3JhcHBlciBjcmVhdGlvbiBpbnZvbHZlcyBhIGJ1bmNoIG9mIHNrZXRjaHkgY29kZSByZWxhdGVk
IHRvIGZpbmRpbmcgdGhlIEZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5v
LWVsZW1lbnQtdGV4dHVyZS1hY2Nlc3MtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xZDg0MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1hY2Nl
c3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgYW4gYXV0aG9yJ3Mgc2hhZGVyIGNvZGUg
Y2Fubm90IHNhbXBsZSBhIHNoYWRlZCBlbGVtZW50J3MgdGV4dHVyZS48L3RpdGxlPgorICAgIDwh
LS0gCisgICAgICAgIFRoaXMgaXMgdGhlIHJlZmVyZW5jZSBmaWxlIGZvciB0aGUgdGVzdC4KKyAg
ICAgICAgSWYgdGhlIHRlc3QgcGFzc2VzLCB5b3Ugc2hvdWxkIHNlZSA2IHZlcnRpY2FsbHktc3Rh
Y2tlZCBncmVlbiBib3hlcy4KKyAgICAtLT4KKyAgICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4
OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48
L2Rpdj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48L2Rpdj4K
KyAgICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1h
Y2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWE4NDkzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT5UZXN0cyB0aGF0IGFuIGF1dGhvcidzIHNoYWRlciBjb2RlIGNhbm5vdCBzYW1wbGUg
YSBzaGFkZWQgZWxlbWVudCdzIHRleHR1cmUuPC90aXRsZT4KKyAgICA8IS0tIElmIHRoZSB0ZXN0
IHBhc3NlcywgeW91IHNob3VsZCBzZWUgNiB2ZXJ0aWNhbGx5LXN0YWNrZWQgZ3JlZW4gYm94ZXMu
IC0tPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1ND
dXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICAvKiBUaGUg
c2hhZGVycyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQncyBjb2xvciBmcm9tIGdyZWVuIHRvIHJlZCBp
ZiB0aGV5IGFyZSBhYmxlIHRvIHNhbXBsZSBpdHMgdGV4dHVyZS4gKi8KKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
ICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICB9CisgICAgLnNhbXBs
ZS11LXRleHR1cmUgeworICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVz
b3VyY2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgdXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4
dHVyZS5mcycpKTsKKyAgICB9CisgICAgLnNhbXBsZS11LXRleHR1cmUtbWl4IHsKKyAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9wYXNzLXRleC1jb29yZC52
cycpIG1peCh1cmwoJy4uL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1h
bCBzb3VyY2UtYXRvcCkpOworICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0
dXJlIHsKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291cmNlcy9w
YXNzLXRleC1jb29yZC52cycpIHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3Nz
LXUtdGV4dHVyZS5mcycpKTsgIAorICAgIH0KKyAgICAuc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10
ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNv
dXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXVu
ZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5mcycpIG5vcm1hbCBzb3VyY2UtYXRvcCkpOworICAg
IH0KKyAgICAuc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZSB7CisgICAgICAgIC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSB1cmwo
Jy4uL3Jlc291cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzJykpOyAgCisgICAg
fQorICAgIC5zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peCB7CisgICAgICAgIC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMnKSBt
aXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMn
KSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgY2xhc3M9InNhbXBsZS11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9InNhbXBsZS11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1w
bGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXgiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNh
bXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNhbXBs
ZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS1taXguZnMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3Vy
Y2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNlZjk4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4
LmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBj
YW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hp
Y2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIGlz
IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQgc2hvdWxkIGZhaWwgdG8g
dmFsaWRhdGUgYmVjYXVzZSBpdCBkZWZpbmVzICJjc3NfdV90ZXh0dXJlIiwKKy8vIHVzaW5nIHRo
ZSByZXN0cmljdGVkICJjc3NfIiBwcmVmaXguCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
Cit1bmlmb3JtIHNhbXBsZXIyRCBjc3NfdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxlbWVu
dCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVyZSwgdl90ZXhD
b29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgorCWNvbG9yLnJn
ID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4
dHVyZS5mcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLWRlZmlu
ZWQtY3NzLXUtdGV4dHVyZS5mcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODQ2ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291
cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0wLDAgKzEsMjAgQEAKKy8v
IFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVhZCBmcm9tIHRoZSBpbnRl
cm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJlbmNlcyB0aGUgRE9NIGVs
ZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGJl
Y2F1c2UgaXQgZGVmaW5lcyAiY3NzX3VfdGV4dHVyZSIsIHdoaWNoIHNob3VsZCBiZSBhbiB1bmJv
dW5kIHNhbXBsZXIsCisvLyBzaW5jZSB0aGlzIHNoYWRlciBpcyBub3QgcmVmZXJlbmNlZCBmcm9t
IHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5p
Zm9ybSBzYW1wbGVyMkQgY3NzX3VfdGV4dHVyZTsKKwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9NIGVsZW1lbnQgdGV4
dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUsIHZfdGV4Q29vcmQp
OworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5yZyA9IGNv
bG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUtbWl4LmZzIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWYzNTIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJl
LW1peC5mcwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFk
ZXIgd2l0aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgor
Ly8gVGhpcyBzaGFkZXIgaXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIGFu
ZCB3cml0ZXMgaXRzIG91dHB1dCB0byBjc3NfTWl4Q29sb3IuCisKK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworCit1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7CisKK3ZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworCS8vIFRyeSB0byBzYW1wbGUgdGhlIERPTSBl
bGVtZW50IHRleHR1cmUuCisJdmVjNCBjb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4
Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5y
ZyA9IGNvbG9yLmdyOworCisJY3NzX01peENvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwMmI4NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS5m
cwpAQCAtMCwwICsxLDE5IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgd2l0
aCBhbiB1bmJvdW5kIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCB0byBleGVjdXRlLgorLy8gVGhp
cyBzaGFkZXIgaXMgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQg
d3JpdGVzIGl0cyBvdXRwdXQgdG8gZ2xfRnJhZ0NvbG9yLgorCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxl
bWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENv
b3JkKTsKKworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29sb3Iucmcg
PSBjb2xvci5ncjsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11LXRl
eHR1cmUtbWl4LmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUt
dW5kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNiOTY2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMKQEAg
LTAsMCArMSwxNyBAQAorLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgc2hhZGVyIGNhbm5vdCBy
ZWFkIGZyb20gdGhlIGludGVybmFsICJjc3NfdV90ZXh0dXJlIiBzYW1wbGVyLCB3aGljaCByZWZl
cmVuY2VzIHRoZSBET00gZWxlbWVudCB0ZXh0dXJlLgorLy8gVGhpcyBzaGFkZXIgc2hvdWxkIGZh
aWwgdG8gdmFsaWRhdGUgYmVjYXVzZSAiY3NzX3VfdGV4dHVyZSIgc2hvdWxkIGJlIHVuZGVmaW5l
ZCB0byB0aGlzIGNvZGUuCisKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBE
T00gZWxlbWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQoY3NzX3VfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgor
CWNvbG9yLnJnID0gY29sb3IuZ3I7CisKKwljc3NfTWl4Q29sb3IgPSBjb2xvcjsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5l
ZC1jc3MtdS10ZXh0dXJlLmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9z
YW1wbGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUuZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDFlMmYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCkBAIC0w
LDAgKzEsMTcgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVh
ZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJl
bmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWls
IHRvIHZhbGlkYXRlIGJlY2F1c2UgImNzc191X3RleHR1cmUiIHNob3VsZCBiZSB1bmRlZmluZWQg
dG8gdGhpcyBjb2RlLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9N
IGVsZW1lbnQgdGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUs
IHZfdGV4Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwlj
b2xvci5yZyA9IGNvbG9yLmdyOworCisJZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMWJjYWFmYS4uNDExZjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEy
LTA5LTExICBNYXggVnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NT
IFNoYWRlcnNdIFJlbW92ZSBkaXJlY3QgdGV4dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGF1
dGhvci1hY2Nlc3NpYmxlICJ1X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNoIHJlZmVyZW5jZWQgdGhl
IERPTSBlbGVtZW50IHRleHR1cmUuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCByZWplY3Qgc2hh
ZGVycyB3aXRoIGF1dGhvci1kZWZpbmVkIHNhbXBsZXIgdW5pZm9ybXMuIFdoZW4gd2UgaW1wbGVt
ZW50IHRleHR1cmUgCisgICAgICAgIHBhcmFtZXRlcnMsIHdlIHdpbGwgYWxsb3cgc2hhZGVycyB3
aG9zZSBzYW1wbGVycyBhcmUgYm91bmQgdG8gdmFsaWQgdGV4dHVyZXMuIFdlIG11c3Qgbm90Cisg
ICAgICAgIGFsbG93IE9wZW5HTCB0byBnaXZlIHVuYm91bmQgc2FtcGxlcnMgYSBkZWZhdWx0IHZh
bHVlIG9mIDAgYmVjYXVzZSB0aGF0IHJlZmVyZW5jZXMgdGhlIERPTQorICAgICAgICBlbGVtZW50
IHRleHR1cmUsIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhlIGF1dGhvcidzIHNo
YWRlciBjb2RlLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNzLmh0bWwKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZh
bGlkYXRpb25SZXN1bHRWYWx1ZSk6CisgICAgICAgICAgICBBZGQgYSBmaWxlLXN0YXRpYyBmdW5j
dGlvbiB0byBlYXNpbHkgcXVlcnkgdGhlIGludGVnZXIgdmFsdWVzIHRoYXQgQU5HTEUgZXhwb3Nl
cyBhYm91dAorICAgICAgICAgICAgdGhlIGxhc3QgdmFsaWRhdGlvbiByZXN1bHQuIFRoZSBuZXcg
Z2V0VW5pZm9ybXMgbWV0aG9kIGFuZCB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgIHZhbGlkYXRl
U2hhZGVyU291cmNlIG1ldGhvZCBub3cgYm90aCB1c2UgZ2V0VmFsaWRhdGlvblJlc3VsdFZhbHVl
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRn
ZTo6dmFsaWRhdGVTaGFkZXJTb3VyY2UpOgorICAgICAgICAgICAgVXNlIHRoZSBuZXcgZ2V0VmFs
aWRhdGlvblJlc3VsdFZhbHVlIGZ1bmN0aW9uIGluc3RlYWQgb2YgQU5HTEUncyBTaEdldEluZm8g
ZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6Z2V0VW5pZm9y
bXMpOgorICAgICAgICAgICAgQWRkIGEgbmV3IHB1YmxpYyBtZXRob2QgdG8gQU5HTEVXZWJLaXRC
cmlkZ2Ugd2hpY2ggZ2V0cyB0aGUgaW5mbyBhYm91dCBhbGwgb2YgdGhlCisgICAgICAgICAgICB1
bmlmb3JtcyBpbiB0aGUgbGFzdCB2YWxpZGF0ZWQgdmVydGV4IHNoYWRlciBvciBmcmFnbWVudCBz
aGFkZXIuIFVuaWZvcm0gaW5mbyBpbmNsdWRlcworICAgICAgICAgICAgbmFtZSwgdHlwZSwgYW5k
IHNpemUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaDoK
KyAgICAgICAgKEFOR0xFU2hhZGVyU3ltYm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFU2hh
ZGVyU3ltYm9sOjppc1NhbXBsZXIpOgorICAgICAgICAgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBz
eW1ib2wncyBkYXRhIHR5cGUgaXMgYSBHTFNMIHNhbXBsZXIgKGUuZy4gc2FtcGxlcjJELCBzYW1w
bGVyQ3ViZSkuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFOR0xFV2ViS2l0QnJpZGdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgICAgICBUYWtlIGlu
IGFuIGFkZGl0aW9uYWwgcHJvZ3JhbVR5cGUgY29uc3RydWN0b3IgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1l
dGVyTG9jYXRpb25zKToKKyAgICAgICAgICAgIFJlbW92ZSB0aGUgYXV0aG9yLWFjY2Vzc2libGUg
RE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVyICJ1X3RleHR1cmUiLiBPbmx5IGZpbmQgdGhlCisg
ICAgICAgICAgICBsb2NhdGlvbiBvZiB0aGUgaW50ZXJuYWwgRE9NIGVsZW1lbnQgdGV4dHVyZSBz
YW1wbGVyICJjc3NfdV90ZXh0dXJlIiBpZiB0aGUgYXV0aG9yIGlzCisgICAgICAgICAgICB1c2lu
ZyB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaDoKKyAgICAgICAgKEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dy
YW1JbmZvOjpwcm9ncmFtVHlwZSk6CisgICAgICAgICAgICBBZGQgdGhlIG5ldyBDdXN0b21GaWx0
ZXJQcm9ncmFtVHlwZSBlbnVtLiBJbiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywgd2UgcGxhbiB0
byByZXBsYWNlCisgICAgICAgICAgICBtaXhTZXR0aW5ncy5lbmFibGVkIHdpdGggYSBwcm9ncmFt
VHlwZS4gU2VlOgorICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk2NDQ4CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgICAgIFJlamVjdCBhbGwgc2hhZGVy
cyB0aGF0IGhhdmUgc2FtcGxlciB1bmlmb3JtcyBkZWZpbmVkLgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21w
aWxlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0
b21GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9n
cmFtQW5kQnVmZmVycyk6CisgICAgICAgICAgICBBZGQgYW4gYXNzZXJ0IHRvIHZlcmlmeSB0aGF0
IHRoZSBET00gZWxlbWVudCB0ZXh0dXJlIGlzIGJvdW5kIG9ubHkgaWYgdGhlIGF1dGhvciBpcwor
ICAgICAgICAgICAgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCisKIDIwMTItMDktMDkgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhdIGNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIG92ZXJsb2FkZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cAppbmRleCA1YzUyOGNmLi5iNjQ3MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0zMiw2ICszMiwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2lubGluZSBzdGF0aWMgaW50IGdldFZhbGlkYXRp
b25SZXN1bHRWYWx1ZShjb25zdCBTaEhhbmRsZSBjb21waWxlciwgU2hTaGFkZXJJbmZvIHNoYWRl
ckluZm8pCit7CisgICAgaW50IHZhbHVlID0gLTE7CisgICAgU2hHZXRJbmZvKGNvbXBpbGVyLCBz
aGFkZXJJbmZvLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogQU5HTEVXZWJLaXRC
cmlkZ2U6OkFOR0xFV2ViS2l0QnJpZGdlKFNoU2hhZGVyT3V0cHV0IHNoYWRlck91dHB1dCwgU2hT
aGFkZXJTcGVjIHNoYWRlclNwZWMpCiAgICAgOiBidWlsdENvbXBpbGVycyhmYWxzZSkKICAgICAs
IG1fZnJhZ21lbnRDb21waWxlcigwKQpAQCAtOTIsOCArOTksNyBAQCBib29sIEFOR0xFV2ViS2l0
QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFO
R0xFU2hhZAogCiAgICAgYm9vbCB2YWxpZGF0ZVN1Y2Nlc3MgPSBTaENvbXBpbGUoY29tcGlsZXIs
IHNoYWRlclNvdXJjZVN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RFIHwgZXh0cmFDb21waWxlT3B0
aW9ucyk7CiAgICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKLSAgICAgICAgaW50IGxvZ1NpemUg
PSAwOwotICAgICAgICBTaEdldEluZm8oY29tcGlsZXIsIFNIX0lORk9fTE9HX0xFTkdUSCwgJmxv
Z1NpemUpOworICAgICAgICBpbnQgbG9nU2l6ZSA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1ZShj
b21waWxlciwgU0hfSU5GT19MT0dfTEVOR1RIKTsKICAgICAgICAgaWYgKGxvZ1NpemUgPiAxKSB7
CiAgICAgICAgICAgICBPd25BcnJheVB0cjxjaGFyPiBsb2dCdWZmZXIgPSBhZG9wdEFycmF5UHRy
KG5ldyBjaGFyW2xvZ1NpemVdKTsKICAgICAgICAgICAgIGlmIChsb2dCdWZmZXIpIHsKQEAgLTEw
NCw4ICsxMTAsNyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJj
ZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hhZAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaW50IHRyYW5zbGF0aW9uTGVuZ3RoID0gMDsKLSAgICBTaEdldElu
Zm8oY29tcGlsZXIsIFNIX09CSkVDVF9DT0RFX0xFTkdUSCwgJnRyYW5zbGF0aW9uTGVuZ3RoKTsK
KyAgICBpbnQgdHJhbnNsYXRpb25MZW5ndGggPSBnZXRWYWxpZGF0aW9uUmVzdWx0VmFsdWUoY29t
cGlsZXIsIFNIX09CSkVDVF9DT0RFX0xFTkdUSCk7CiAgICAgaWYgKHRyYW5zbGF0aW9uTGVuZ3Ro
ID4gMSkgewogICAgICAgICBPd25BcnJheVB0cjxjaGFyPiB0cmFuc2xhdGlvbkJ1ZmZlciA9IGFk
b3B0QXJyYXlQdHIobmV3IGNoYXJbdHJhbnNsYXRpb25MZW5ndGhdKTsKICAgICAgICAgaWYgKCF0
cmFuc2xhdGlvbkJ1ZmZlcikKQEAgLTExNyw2ICsxMjIsMzUgQEAgYm9vbCBBTkdMRVdlYktpdEJy
aWRnZTo6dmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdM
RVNoYWQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBBTkdMRVdlYktpdEJyaWRnZTo6Z2V0
VW5pZm9ybXMoU2hTaGFkZXJUeXBlIHNoYWRlclR5cGUsIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJv
bD4gJnN5bWJvbHMpCit7CisgICAgY29uc3QgU2hIYW5kbGUgY29tcGlsZXIgPSAoc2hhZGVyVHlw
ZSA9PSBTSF9WRVJURVhfU0hBREVSID8gbV92ZXJ0ZXhDb21waWxlciA6IG1fZnJhZ21lbnRDb21w
aWxlcik7CisKKyAgICBpbnQgbnVtVW5pZm9ybXMgPSBnZXRWYWxpZGF0aW9uUmVzdWx0VmFsdWUo
Y29tcGlsZXIsIFNIX0FDVElWRV9VTklGT1JNUyk7CisgICAgaWYgKG51bVVuaWZvcm1zIDwgMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbnVtVW5pZm9ybXMpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaW50IG1heE5hbWVMZW5ndGggPSBnZXRWYWxpZGF0aW9uUmVzdWx0
VmFsdWUoY29tcGlsZXIsIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgpOworICAgIGlmICht
YXhOYW1lTGVuZ3RoIDw9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBPd25BcnJheVB0
cjxjaGFyPiBuYW1lQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hhclttYXhOYW1lTGVuZ3Ro
XSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVVuaWZvcm1zOyArK2kpIHsKKyAgICAg
ICAgQU5HTEVTaGFkZXJTeW1ib2wgc3ltYm9sOworICAgICAgICBzeW1ib2wuc3ltYm9sVHlwZSA9
IFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNOworICAgICAgICBpbnQgbmFtZUxlbmd0aCA9IC0x
OworICAgICAgICBTaEdldEFjdGl2ZVVuaWZvcm0oY29tcGlsZXIsIGksICZuYW1lTGVuZ3RoLCAm
c3ltYm9sLnNpemUsICZzeW1ib2wuZGF0YVR5cGUsIG5hbWVCdWZmZXIuZ2V0KCksIDApOworICAg
ICAgICBpZiAobmFtZUxlbmd0aCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBzeW1ib2wubmFtZSA9IFN0cmluZzo6ZnJvbVVURjgobmFtZUJ1ZmZlci5nZXQoKSwgbmFt
ZUxlbmd0aCk7CisgICAgICAgIHN5bWJvbHMuYXBwZW5kKHN5bWJvbCk7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5o
CmluZGV4IDI2ZjMwMTIuLjE5YzUwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaApAQCAtNDIsNiArNDIsMjYgQEAgZW51
bSBBTkdMRVNoYWRlclR5cGUgewogICAgIFNIQURFUl9UWVBFX0ZSQUdNRU5UID0gU0hfRlJBR01F
TlRfU0hBREVSLAogfTsKIAorZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGUgeworICAgIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsCisgICAgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0K
K307CisKK3N0cnVjdCBBTkdMRVNoYWRlclN5bWJvbCB7CisgICAgQU5HTEVTaGFkZXJTeW1ib2xU
eXBlIHN5bWJvbFR5cGU7CisgICAgU3RyaW5nIG5hbWU7CisgICAgU2hEYXRhVHlwZSBkYXRhVHlw
ZTsKKyAgICBpbnQgc2l6ZTsKKworICAgIGJvb2wgaXNTYW1wbGVyKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBkYXRhVHlwZSA9PSBTSF9TQU1QTEVSXzJECisgICAgICAgICAgICB8fCBkYXRhVHlw
ZSA9PSBTSF9TQU1QTEVSX0NVQkUKKyAgICAgICAgICAgIHx8IGRhdGFUeXBlID09IFNIX1NBTVBM
RVJfMkRfUkVDVF9BUkIKKyAgICAgICAgICAgIHx8IGRhdGFUeXBlID09IFNIX1NBTVBMRVJfRVhU
RVJOQUxfT0VTOworICAgIH0KK307CisKIGNsYXNzIEFOR0xFV2ViS2l0QnJpZGdlIHsKIHB1Ymxp
YzoKIApAQCAtNTMsNiArNzMsMTEgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdmFsaWRhdGVT
aGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUsIFN0
cmluZyYgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9n
LCBpbnQgZXh0cmFDb21waWxlT3B0aW9ucyA9IDApOwogCisgICAgLy8gR2V0IHRoZSB1bmlmb3Jt
cyBmb3IgdGhlIGxhc3QgdmFsaWRhdGVkIHNoYWRlciBvZiB0eXBlIFNoU2hhZGVyVHlwZS4KKyAg
ICAvLyBGb3IgdGhpcyBmdW5jdGlvbiB0byB3b3JrLCB5b3UgbXVzdCB1c2UgdGhlIFNIX0FUVFJJ
QlVURVNfVU5JRk9STVMgY29tcGlsZSBvcHRpb24gZHVyaW5nIHZhbGlkYXRpb24uCisgICAgLy8g
UmV0dXJucyBmYWxzZSBpZiBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIGluIEFOR0xFLgor
ICAgIGJvb2wgZ2V0VW5pZm9ybXMoU2hTaGFkZXJUeXBlLCBWZWN0b3I8QU5HTEVTaGFkZXJTeW1i
b2w+ICZzeW1ib2xzKTsKKwogcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYW51cENvbXBpbGVycygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCmluZGV4IDNj
Njk1OWIuLjdlMjg0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRl
ZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikKK0N1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRh
dGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9wcm9ncmFtKDApCiAgICAgLCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24o
LTEpCkBAIC03Myw3ICs3Myw3IEBAIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250CiAgICAgaWYgKCFt
X3Byb2dyYW0pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0aWFsaXplUGFyYW1ldGVy
TG9jYXRpb25zKCk7CisgICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucyhwcm9ncmFtVHlw
ZSk7CiAgICAgCiAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKIH0KQEAgLTExNyw3ICsxMTcs
NyBAQCBQbGF0Zm9ybTNET2JqZWN0IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6bGlua1By
b2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZQogICAgIHJldHVybiBwcm9ncmFtOwogfQogCi12
b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6aW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0
aW9ucygpCit2b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6aW5pdGlhbGl6ZVBhcmFt
ZXRlckxvY2F0aW9ucyhDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSkKIHsKICAg
ICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9u
KG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKICAgICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9j
b250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3JkIik7CkBAIC0x
MjksMTIgKzEyOSwxNiBAQCB2b2lkIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6aW5pdGlh
bGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpCiAgICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24g
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25N
YXRyaXgiKTsKICAgICBtX3NhbXBsZXJTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3RleHR1cmVTaXplIik7CiAgICAgbV9jb250ZW50U2Ft
cGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAi
dV9jb250ZW50VGV4dHVyZSIpOwotICAgIG1faW50ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJjc3NfYV90ZXhDb29y
ZCIpOwotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24obV9wcm9ncmFtLCAiY3NzX3VfdGV4dHVyZSIpOwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGV4
dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZSBhbmQgY2hhbmdlIHRoZSB0ZXN0cyB0byB1c2UgYmxl
bmRpbmcgYW5kIGNvbXBvc2l0aW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05Mzg3MQotICAgIGlmIChtX3NhbXBsZXJMb2NhdGlvbiA9PSAtMSkKLSAg
ICAgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3Byb2dyYW0sICJ1X3RleHR1cmUiKTsKKyAgICBpZiAocHJvZ3JhbVR5cGUgPT0gUFJPR1JBTV9U
WVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpIHsKKyAgICAgICAgLy8gV2hlbiB0aGUgYXV0aG9y
IHVzZXMgdGhlIENTUyBtaXggZnVuY3Rpb24gaW4gYSBjdXN0b20gZmlsdGVyLCB3ZSBhZGQgaW50
ZXJuYWwgc3ltYm9scyB0byB0aGUgc2hhZGVyIGNvZGUuCisgICAgICAgIC8vIE9uZSBvZiB0aGVt
LCBjc3NfdV90ZXh0dXJlLCByZWZlcmVuY2VzIHRoZSB0ZXh0dXJlIG9mIHRoZSBlbGVtZW50Lgor
ICAgICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KG1fcHJvZ3JhbSwgImNzc191X3RleHR1cmUiKTsKKyAgICAgICAgbV9pbnRlcm5hbFRleENvb3Jk
QXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwg
ImNzc19hX3RleENvb3JkIik7CisKKyAgICAgICAgLy8gVGhlc2UgaW50ZXJuYWwgc3ltYm9scyBz
aG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSB2YWxpZGF0ZWQgc2hhZGVycy4KKyAgICAgICAg
QVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xKTsKKyAgICAgICAgQVNTRVJUKG1faW50ZXJu
YWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uICE9IC0xKTsKKyAgICB9CiB9CiAKIGludCBDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW06OnVuaWZvcm1Mb2NhdGlvbkJ5TmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaAppbmRleCBh
ZDk0NWY2Li5mMzFmZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNF
KDNEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Miw5ICs0Myw5IEBAIGNsYXNz
IEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ7CiAKIGNsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJh
Z21lbnRTaGFkZXIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29u
c3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVk
RnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0oY29udGV4dCwgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCB2YWxpZGF0ZWRGcmFnbWVudFNoYWRl
cikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbShjb250ZXh0LCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRlZEZyYWdtZW50U2hh
ZGVyLCBwcm9ncmFtVHlwZSkpOwogICAgIH0KICAgICAKICAgICB+Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtKCk7CkBAIC03MywxMSArNzQsMTEgQEAgcHVibGljOgogICAgIAogICAgIFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbTsgfQogcHJpdmF0
ZToKLSAgICBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJp
bmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKKyAgICBDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIGNvbnN0IFN0cmluZyYgdmFsaWRh
dGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSk7CiAgICAgCiAgICAgUGxhdGZvcm0zRE9iamVjdCBjb21w
aWxlU2hhZGVyKEdDM0RlbnVtIHNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU3RyaW5n
KTsKICAgICBQbGF0Zm9ybTNET2JqZWN0IGxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgdmVy
dGV4U2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0IGZyYWdtZW50U2hhZGVyKTsKLSAgICB2b2lkIGlu
aXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoKTsKKyAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0
ZXJMb2NhdGlvbnMoQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUpOwogICAgIAogICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9n
cmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oCmluZGV4IDdjNmUxZjQuLjUy
ZmU3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKQEAgLTM4LDYgKzM4
LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBDdXN0b21GaWx0ZXJQcm9ncmFt
VHlwZSB7CisgICAgUFJPR1JBTV9UWVBFX05PX0VMRU1FTlRfVEVYVFVSRSwKKyAgICBQUk9HUkFN
X1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRQorfTsKKwogc3RydWN0IEN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5ncyB7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKCkK
ICAgICAgICAgOiBlbmFibGVkKGZhbHNlKQpAQCAtNzUsNiArODAsOSBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
dGV4U2hhZGVyU3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFkZCBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSB0byBDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyBhbmQgcmVtb3ZlIG1peFNldHRpbmdzLmVuYWJsZWQuCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDQ4CisgICAgQ3VzdG9tRmlsdGVy
UHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21peFNldHRpbmdzLmVu
YWJsZWQgPyBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSA6IFBST0dSQU1fVFlQ
RV9OT19FTEVNRU5UX1RFWFRVUkU7IH0KICAgICBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4
U2V0dGluZ3MmIG1peFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9taXhTZXR0aW5nczsgfQog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAppbmRleCBhN2RhY2RiLi40MjExZTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKQEAg
LTg1LDE0ICs4NSwzMSBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbgogICAgIC8vIFNoYWRlcnMg
cmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIHVzZSBhIGRpZmZlcmVudCB2YWxp
ZGF0b3IgdGhhbiByZWd1bGFyIFdlYkdMIHNoYWRlcnMuIFNlZSBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0LmggZm9yIG1vcmUgZGV0YWlscy4KICAgICBBTkdMRVdlYktpdEJyaWRnZSogdmFsaWRh
dG9yID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVkID8gbV9nbG9iYWxDb250ZXh0
LT5taXhTaGFkZXJWYWxpZGF0b3IoKSA6IG1fZ2xvYmFsQ29udGV4dC0+d2ViZ2xTaGFkZXJWYWxp
ZGF0b3IoKTsKICAgICBTdHJpbmcgdmVydGV4U2hhZGVyTG9nLCBmcmFnbWVudFNoYWRlckxvZzsK
LSAgICBib29sIHZlcnRleFNoYWRlclZhbGlkID0gdmFsaWRhdG9yLT52YWxpZGF0ZVNoYWRlclNv
dXJjZShvcmlnaW5hbFZlcnRleFNoYWRlci51dGY4KCkuZGF0YSgpLCBTSEFERVJfVFlQRV9WRVJU
RVgsIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCB2ZXJ0ZXhTaGFkZXJMb2cpOwotICAgIGJvb2wg
ZnJhZ21lbnRTaGFkZXJWYWxpZCA9IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3VyY2Uob3Jp
Z2luYWxGcmFnbWVudFNoYWRlci51dGY4KCkuZGF0YSgpLCBTSEFERVJfVFlQRV9GUkFHTUVOVCwg
bV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJMb2cpOworICAgIGJvb2wg
dmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPnZhbGlkYXRlU2hhZGVyU291cmNlKG9yaWdp
bmFsVmVydGV4U2hhZGVyLnV0ZjgoKS5kYXRhKCksIFNIQURFUl9UWVBFX1ZFUlRFWCwgbV92YWxp
ZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZlcnRleFNoYWRlckxvZywgU0hfQVRUUklCVVRFU19VTklGT1JN
Uyk7CisgICAgYm9vbCBmcmFnbWVudFNoYWRlclZhbGlkID0gdmFsaWRhdG9yLT52YWxpZGF0ZVNo
YWRlclNvdXJjZShvcmlnaW5hbEZyYWdtZW50U2hhZGVyLnV0ZjgoKS5kYXRhKCksIFNIQURFUl9U
WVBFX0ZSQUdNRU5ULCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBmcmFnbWVudFNoYWRlckxv
ZywgU0hfQVRUUklCVVRFU19VTklGT1JNUyk7CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXJWYWxpZCB8
fCAhZnJhZ21lbnRTaGFkZXJWYWxpZCkgewogICAgICAgICAvLyBGSVhNRTogUmVwb3J0IHRoZSB2
YWxpZGF0aW9uIGVycm9ycy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0NDE2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBWYWxp
ZGF0ZSB0aGUgYXV0aG9yJ3Mgc2FtcGxlcnMuCisgICAgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9s
PiB1bmlmb3JtczsKKyAgICBpZiAoIXZhbGlkYXRvci0+Z2V0VW5pZm9ybXMoU0hfVkVSVEVYX1NI
QURFUiwgdW5pZm9ybXMpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0b3ItPmdl
dFVuaWZvcm1zKFNIX0ZSQUdNRU5UX1NIQURFUiwgdW5pZm9ybXMpKQorICAgICAgICByZXR1cm47
CisgICAgZm9yIChWZWN0b3I8QU5HTEVTaGFkZXJTeW1ib2w+OjppdGVyYXRvciBpdCA9IHVuaWZv
cm1zLmJlZ2luKCk7IGl0ICE9IHVuaWZvcm1zLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChp
dC0+aXNTYW1wbGVyKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSByZXN0
cmljdCBzaGFkZXJzIHdpdGggYW55IHNhbXBsZXIgZGVmaW5lZC4KKyAgICAgICAgICAgIC8vIFdo
ZW4gd2UgaW1wbGVtZW50IHRleHR1cmUgcGFyYW1ldGVycywgd2Ugd2lsbCBhbGxvdyBzaGFkZXJz
IHdob3NlIHNhbXBsZXJzIGFyZSBib3VuZCB0byB2YWxpZCB0ZXh0dXJlcy4KKyAgICAgICAgICAg
IC8vIFdlIG11c3Qgbm90IGFsbG93IE9wZW5HTCB0byBnaXZlIHVuYm91bmQgc2FtcGxlcnMgYSBk
ZWZhdWx0IHZhbHVlIG9mIDAgYmVjYXVzZSB0aGF0IHJlZmVyZW5jZXMgdGhlIERPTSBlbGVtZW50
IHRleHR1cmUsCisgICAgICAgICAgICAvLyB3aGljaCBzaG91bGQgYmUgaW5hY2Nlc3NpYmxlIHRv
IHRoZSBhdXRob3IncyBzaGFkZXIgY29kZS4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjIzMAorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCiAgICAgLy8gV2UgbmVlZCB0byBhZGQgdGV4dHVyZSBhY2Nlc3MsIGJs
ZW5kaW5nLCBhbmQgY29tcG9zaXRpbmcgY29kZSB0byBzaGFkZXJzIHRoYXQgYXJlIHJlZmVyZW5j
ZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KICAgICBpZiAocHJvZ3JhbUluZm8ubWl4U2V0
dGluZ3MoKS5lbmFibGVkKSB7CiAgICAgICAgIHJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoKTsKQEAg
LTEwNiw3ICsxMjMsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4g
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcgogewogICAgIEFTU0VSVCht
X2lzSW5pdGlhbGl6ZWQgJiYgbV9nbG9iYWxDb250ZXh0ICYmICFtX3ZhbGlkYXRlZFZlcnRleFNo
YWRlci5pc051bGwoKSAmJiAhbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CiAg
ICAgaWYgKCFtX2NvbXBpbGVkUHJvZ3JhbSkKLSAgICAgICAgbV9jb21waWxlZFByb2dyYW0gPSBD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmNyZWF0ZShtX2dsb2JhbENvbnRleHQtPmNvbnRl
eHQoKSwgbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIp
OworICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlkYXRlZFZlcnRleFNo
YWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgbV9wcm9ncmFtSW5mby5wcm9ncmFtVHlw
ZSgpKTsKICAgICByZXR1cm4gbV9jb21waWxlZFByb2dyYW07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRl
ci5jcHAKaW5kZXggZDY1ZmY5Ny4uZmQxMjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKQEAg
LTMyOSw2ICszMjksOSBAQCB2b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZl
cnMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkpCiAgICAgbV9jb250ZXh0LT51c2VQ
cm9ncmFtKG1fY29tcGlsZWRQcm9ncmFtLT5wcm9ncmFtKCkpOwogICAgIAogICAgIGlmIChtX2Nv
bXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgLy8gV2Ug
c2hvdWxkIGJlIGJpbmRpbmcgdGhlIERPTSBlbGVtZW50IHRleHR1cmUgc2FtcGxlciBvbmx5IGlm
IHRoZSBhdXRob3IgaXMgdXNpbmcgdGhlIENTUyBtaXggZnVuY3Rpb24uCisgICAgICAgIEFTU0VS
VChtX3ZhbGlkYXRlZFByb2dyYW0tPnByb2dyYW1JbmZvKCkucHJvZ3JhbVR5cGUoKSA9PSBQUk9H
UkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7CisKICAgICAgICAgbV9jb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7CiAgICAgICAgIG1fY29u
dGV4dC0+dW5pZm9ybTFpKG1fY29tcGlsZWRQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7
CiAjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163649</attachid>
            <date>2012-09-12 09:29:28 -0700</date>
            <delta_ts>2012-09-12 10:22:44 -0700</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>93871-5.patch</filename>
            <type>text/plain</type>
            <size>28866</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGQ0NDBjLi41MDRlMzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDkt
MTEgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gUmVtb3ZlIGRpcmVjdCB0ZXh0dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5
IHRoYXQgdGhlICJ1X3RleHR1cmUiIHNhbXBsZXIgaXMgbm8gbG9uZ2VyIGFjY2Vzc2libGUgdG8g
YXV0aG9yIHNoYWRlcgorICAgICAgICBjb2RlIGJlY2F1c2UgaXQgd2FzIHJlbW92ZWQuIFRoZXNl
IHRlc3RzIGFsc28gdmVyaWZ5IHRoYXQgc2hhZGVycyB3aXRoIHVuYm91bmQgc2FtcGxlcnMgZG8K
KyAgICAgICAgbm90IGV4ZWN1dGUuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIHZlcmlmeSB0aGF0
IHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciBpcyBub3QgYWNjZXNzaWJsZSB0
byBhdXRob3IKKyAgICAgICAgc2hhZGVyIGNvZGUuIFRoZXNlIHRlc3RzIGNoZWNrIHRoYXQgdGhp
cyBpcyB0cnVlIHdoZXRoZXIgb3Igbm90IHRoZSBhdXRob3IgaXMgdXNpbmcgdGhlIENTUworICAg
ICAgICBtaXggZnVuY3Rpb24gYW5kIHdoZXRoZXIgb3Igbm90IHRoZSBhdXRob3IgYXR0ZW1wdHMg
dG8gZGVmaW5lIGNzc191X3RleHR1cmUgaXMgaGlzIG9yIGhlcgorICAgICAgICBzaGFkZXIuCisK
KyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10
ZXh0dXJlLWFjY2Vzcy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNz
cy11LXRleHR1cmUtbWl4LmZzOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3Vy
Y2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUuZnM6IEFkZGVkLgorICAgICAgICAqIGNz
czMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS1taXguZnM6IEFkZGVkLgorICAg
ICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS5mczogQWRkZWQu
CisgICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11
LXRleHR1cmUtbWl4LmZzOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2Vz
L3NhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS5mczogQWRkZWQuCisKIDIwMTItMDktMDgg
IEFkYW0gQmFydGggIDxhYmFydGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gRE9NIHdy
YXBwZXIgY3JlYXRpb24gaW52b2x2ZXMgYSBidW5jaCBvZiBza2V0Y2h5IGNvZGUgcmVsYXRlZCB0
byBmaW5kaW5nIHRoZSBGcmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vLWVsZW1lbnQtdGV4dHVyZS1hY2Nlc3MtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1l
bGVtZW50LXRleHR1cmUtYWNjZXNzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWQ4NDA0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNjZXNz
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDx0aXRsZT5UZXN0cyB0aGF0IGFuIGF1dGhvcidzIHNoYWRlciBjb2RlIGNh
bm5vdCBzYW1wbGUgYSBzaGFkZWQgZWxlbWVudCdzIHRleHR1cmUuPC90aXRsZT4KKyAgICA8IS0t
IAorICAgICAgICBUaGlzIGlzIHRoZSByZWZlcmVuY2UgZmlsZSBmb3IgdGhlIHRlc3QuCisgICAg
ICAgIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91IHNob3VsZCBzZWUgNiB2ZXJ0aWNhbGx5LXN0YWNr
ZWQgZ3JlZW4gYm94ZXMuCisgICAgLS0+CisgICAgPHN0eWxlPgorICAgIGRpdiB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAyNTUsIDApOworICAgICAgICB3aWR0aDogNTBweDsK
KyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgfQorICAg
IDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9k
aXY+CisgICAgPGRpdj48L2Rpdj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+Cisg
ICAgPGRpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1uby1lbGVtZW50LXRleHR1cmUtYWNj
ZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXIt
bm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjVhODQ5MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm8tZWxlbWVudC10ZXh0dXJlLWFjY2Vzcy5odG1s
CkBAIC0wLDAgKzEsNDggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
dGl0bGU+VGVzdHMgdGhhdCBhbiBhdXRob3IncyBzaGFkZXIgY29kZSBjYW5ub3Qgc2FtcGxlIGEg
c2hhZGVkIGVsZW1lbnQncyB0ZXh0dXJlLjwvdGl0bGU+CisgICAgPCEtLSBJZiB0aGUgdGVzdCBw
YXNzZXMsIHlvdSBzaG91bGQgc2VlIDYgdmVydGljYWxseS1zdGFja2VkIGdyZWVuIGJveGVzLiAt
LT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTQ3Vz
dG9tRmlsdGVyRW5hYmxlZCIsICIxIik7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICAgIH0K
KyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgLyogVGhlIHNo
YWRlcnMgd2lsbCB0dXJuIHRoZSBlbGVtZW50J3MgY29sb3IgZnJvbSBncmVlbiB0byByZWQgaWYg
dGhleSBhcmUgYWJsZSB0byBzYW1wbGUgaXRzIHRleHR1cmUuICovCisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYigwLCAyNTUsIDApOworICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAg
aGVpZ2h0OiA1MHB4OworICAgICAgICBtYXJnaW46IDEwcHg7CisgICAgfQorICAgIC5zYW1wbGUt
dS10ZXh0dXJlIHsKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJy4uL3Jlc291
cmNlcy9wYXNzLXRleC1jb29yZC52cycpIHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1
cmUuZnMnKSk7CisgICAgfQorICAgIC5zYW1wbGUtdS10ZXh0dXJlLW1peCB7CisgICAgICAgIC13
ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFzcy10ZXgtY29vcmQudnMn
KSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS1taXguZnMnKSBub3JtYWwg
c291cmNlLWF0b3ApKTsKKyAgICB9CisgICAgLnNhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVy
ZSB7CisgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvcGFz
cy10ZXgtY29vcmQudnMnKSB1cmwoJy4uL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11
LXRleHR1cmUuZnMnKSk7ICAKKyAgICB9CisgICAgLnNhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4
dHVyZS1taXggeworICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVzb3Vy
Y2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgbWl4KHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS11bmRl
ZmluZWQtY3NzLXUtdGV4dHVyZS1taXguZnMnKSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICB9
CisgICAgLnNhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUgeworICAgICAgICAtd2Via2l0LWZp
bHRlcjogY3VzdG9tKHVybCgnLi4vcmVzb3VyY2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgdXJsKCcu
Li9yZXNvdXJjZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS5mcycpKTsgIAorICAgIH0K
KyAgICAuc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS1taXggeworICAgICAgICAtd2Via2l0
LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVzb3VyY2VzL3Bhc3MtdGV4LWNvb3JkLnZzJykgbWl4
KHVybCgnLi4vcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzJykg
bm9ybWFsIHNvdXJjZS1hdG9wKSk7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgICA8ZGl2IGNsYXNzPSJzYW1wbGUtdS10ZXh0dXJlIj48L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJzYW1wbGUtdS10ZXh0dXJlLW1peCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2FtcGxl
LXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1wbGUt
dW5kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1w
bGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzYW1wbGUt
ZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVk
LWNzcy11LXRleHR1cmUtbWl4LmZzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNl
cy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5mcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jZWY5ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5m
cwpAQCAtMCwwICsxLDIwIEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgY2Fu
bm90IHJlYWQgZnJvbSB0aGUgaW50ZXJuYWwgImNzc191X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNo
IHJlZmVyZW5jZXMgdGhlIERPTSBlbGVtZW50IHRleHR1cmUuCisvLyBUaGlzIHNoYWRlciBpcyBy
ZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24gYW5kIHNob3VsZCBmYWlsIHRvIHZh
bGlkYXRlIGJlY2F1c2UgaXQgZGVmaW5lcyAiY3NzX3VfdGV4dHVyZSIsCisvLyB1c2luZyB0aGUg
cmVzdHJpY3RlZCAiY3NzXyIgcHJlZml4LgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwor
dW5pZm9ybSBzYW1wbGVyMkQgY3NzX3VfdGV4dHVyZTsKKwordmFyeWluZyB2ZWMyIHZfdGV4Q29v
cmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9NIGVsZW1lbnQg
dGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUsIHZfdGV4Q29v
cmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwljb2xvci5yZyA9
IGNvbG9yLmdyOworCisJY3NzX01peENvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVkLWNzcy11LXRleHR1
cmUuZnMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS1kZWZpbmVk
LWNzcy11LXRleHR1cmUuZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg0
NmQxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJj
ZXMvc2FtcGxlLWRlZmluZWQtY3NzLXUtdGV4dHVyZS5mcwpAQCAtMCwwICsxLDIwIEBACisvLyBU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgY2Fubm90IHJlYWQgZnJvbSB0aGUgaW50ZXJu
YWwgImNzc191X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNoIHJlZmVyZW5jZXMgdGhlIERPTSBlbGVt
ZW50IHRleHR1cmUuCisvLyBUaGlzIHNoYWRlciBzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBiZWNh
dXNlIGl0IGRlZmluZXMgImNzc191X3RleHR1cmUiLCB3aGljaCBzaG91bGQgYmUgYW4gdW5ib3Vu
ZCBzYW1wbGVyLAorLy8gc2luY2UgdGhpcyBzaGFkZXIgaXMgbm90IHJlZmVyZW5jZWQgZnJvbSB0
aGUgQ1NTIG1peCBmdW5jdGlvbi4KKworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZv
cm0gc2FtcGxlcjJEIGNzc191X3RleHR1cmU7CisKK3ZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwor
Cit2b2lkIG1haW4oKQoreworCS8vIFRyeSB0byBzYW1wbGUgdGhlIERPTSBlbGVtZW50IHRleHR1
cmUuCisJdmVjNCBjb2xvciA9IHRleHR1cmUyRChjc3NfdV90ZXh0dXJlLCB2X3RleENvb3JkKTsK
KworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29sb3IucmcgPSBjb2xv
ci5ncjsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLW1peC5mcyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS1taXguZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmMzUyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXUtdGV4dHVyZS1t
aXguZnMKQEAgLTAsMCArMSwxOSBAQAorLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgc2hhZGVy
IHdpdGggYW4gdW5ib3VuZCBzYW1wbGVyIGlzIG5vdCBwZXJtaXR0ZWQgdG8gZXhlY3V0ZS4KKy8v
IFRoaXMgc2hhZGVyIGlzIHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiBhbmQg
d3JpdGVzIGl0cyBvdXRwdXQgdG8gY3NzX01peENvbG9yLgorCitwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOworCit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKwkvLyBUcnkgdG8gc2FtcGxlIHRoZSBET00gZWxl
bWVudCB0ZXh0dXJlLgorCXZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENv
b3JkKTsKKworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29sb3Iucmcg
PSBjb2xvci5ncjsKKworCWNzc19NaXhDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLmZzIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9zYW1wbGUtdS10ZXh0dXJlLmZzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMDJiODUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11LXRleHR1cmUuZnMK
QEAgLTAsMCArMSwxOSBAQAorLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgc2hhZGVyIHdpdGgg
YW4gdW5ib3VuZCBzYW1wbGVyIGlzIG5vdCBwZXJtaXR0ZWQgdG8gZXhlY3V0ZS4KKy8vIFRoaXMg
c2hhZGVyIGlzIG5vdCByZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24gYW5kIHdy
aXRlcyBpdHMgb3V0cHV0IHRvIGdsX0ZyYWdDb2xvci4KKworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKK3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTsKKwordmFyeWluZyB2ZWMyIHZfdGV4
Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9NIGVsZW1l
bnQgdGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhDb29y
ZCk7CisKKwkvLyBTd2FwIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgorCWNvbG9yLnJnID0g
Y29sb3IuZ3I7CisKKwlnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0
dXJlLW1peC5mcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2FtcGxlLXVu
ZGVmaW5lZC1jc3MtdS10ZXh0dXJlLW1peC5mcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jYjk2NmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0
ZXJzL3Jlc291cmNlcy9zYW1wbGUtdW5kZWZpbmVkLWNzcy11LXRleHR1cmUtbWl4LmZzCkBAIC0w
LDAgKzEsMTcgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIHNoYWRlciBjYW5ub3QgcmVh
ZCBmcm9tIHRoZSBpbnRlcm5hbCAiY3NzX3VfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJl
bmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZS4KKy8vIFRoaXMgc2hhZGVyIHNob3VsZCBmYWls
IHRvIHZhbGlkYXRlIGJlY2F1c2UgImNzc191X3RleHR1cmUiIHNob3VsZCBiZSB1bmRlZmluZWQg
dG8gdGhpcyBjb2RlLgorCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisJLy8gVHJ5IHRvIHNhbXBsZSB0aGUgRE9N
IGVsZW1lbnQgdGV4dHVyZS4KKwl2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNzc191X3RleHR1cmUs
IHZfdGV4Q29vcmQpOworCisJLy8gU3dhcCB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KKwlj
b2xvci5yZyA9IGNvbG9yLmdyOworCisJY3NzX01peENvbG9yID0gY29sb3I7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQt
Y3NzLXUtdGV4dHVyZS5mcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvc2Ft
cGxlLXVuZGVmaW5lZC1jc3MtdS10ZXh0dXJlLmZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmQxZTJmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3NhbXBsZS11bmRlZmluZWQtY3NzLXUtdGV4dHVyZS5mcwpAQCAtMCww
ICsxLDE3IEBACisvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBzaGFkZXIgY2Fubm90IHJlYWQg
ZnJvbSB0aGUgaW50ZXJuYWwgImNzc191X3RleHR1cmUiIHNhbXBsZXIsIHdoaWNoIHJlZmVyZW5j
ZXMgdGhlIERPTSBlbGVtZW50IHRleHR1cmUuCisvLyBUaGlzIHNoYWRlciBzaG91bGQgZmFpbCB0
byB2YWxpZGF0ZSBiZWNhdXNlICJjc3NfdV90ZXh0dXJlIiBzaG91bGQgYmUgdW5kZWZpbmVkIHRv
IHRoaXMgY29kZS4KKworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3ZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworCS8vIFRyeSB0byBzYW1wbGUgdGhlIERPTSBl
bGVtZW50IHRleHR1cmUuCisJdmVjNCBjb2xvciA9IHRleHR1cmUyRChjc3NfdV90ZXh0dXJlLCB2
X3RleENvb3JkKTsKKworCS8vIFN3YXAgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMuCisJY29s
b3IucmcgPSBjb2xvci5ncjsKKworCWdsX0ZyYWdDb2xvciA9IGNvbG9yOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDFiY2FhZmEuLmFlOTE1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMi0w
OS0xMSAgTWF4IFZ1am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBT
aGFkZXJzXSBSZW1vdmUgZGlyZWN0IHRleHR1cmUgYWNjZXNzIHZpYSB1X3RleHR1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFJlbW92ZSB0aGUgYXV0aG9y
LWFjY2Vzc2libGUgInVfdGV4dHVyZSIgc2FtcGxlciwgd2hpY2ggcmVmZXJlbmNlZCB0aGUgRE9N
IGVsZW1lbnQgdGV4dHVyZS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHJlamVjdCBzaGFkZXJz
IHdpdGggYXV0aG9yLWRlZmluZWQgc2FtcGxlciB1bmlmb3Jtcy4gV2hlbiB3ZSBpbXBsZW1lbnQg
dGV4dHVyZSAKKyAgICAgICAgcGFyYW1ldGVycywgd2Ugd2lsbCBhbGxvdyBzaGFkZXJzIHdob3Nl
IHNhbXBsZXJzIGFyZSBib3VuZCB0byB2YWxpZCB0ZXh0dXJlcy4gV2UgbXVzdCBub3QKKyAgICAg
ICAgYWxsb3cgT3BlbkdMIHRvIGdpdmUgdW5ib3VuZCBzYW1wbGVycyBhIGRlZmF1bHQgdmFsdWUg
b2YgMCBiZWNhdXNlIHRoYXQgcmVmZXJlbmNlcyB0aGUgRE9NCisgICAgICAgIGVsZW1lbnQgdGV4
dHVyZSwgd2hpY2ggc2hvdWxkIGJlIGluYWNjZXNzaWJsZSB0byB0aGUgYXV0aG9yJ3Mgc2hhZGVy
IGNvZGUuCisKKyAgICAgICAgVGVzdDogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LW5vLWVsZW1lbnQtdGV4dHVyZS1hY2Nlc3MuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmFsaWRh
dGlvblJlc3VsdFZhbHVlKToKKyAgICAgICAgICAgIEFkZCBhIGZpbGUtc3RhdGljIGZ1bmN0aW9u
IHRvIGVhc2lseSBxdWVyeSB0aGUgaW50ZWdlciB2YWx1ZXMgdGhhdCBBTkdMRSBleHBvc2VzIGFi
b3V0CisgICAgICAgICAgICB0aGUgbGFzdCB2YWxpZGF0aW9uIHJlc3VsdC4gVGhlIG5ldyBnZXRV
bmlmb3JtcyBtZXRob2QgYW5kIHRoZSBleGlzdGluZworICAgICAgICAgICAgdmFsaWRhdGVTaGFk
ZXJTb3VyY2UgbWV0aG9kIG5vdyBib3RoIHVzZSBnZXRWYWxpZGF0aW9uUmVzdWx0VmFsdWUuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjp2
YWxpZGF0ZVNoYWRlclNvdXJjZSk6CisgICAgICAgICAgICBVc2UgdGhlIG5ldyBnZXRWYWxpZGF0
aW9uUmVzdWx0VmFsdWUgZnVuY3Rpb24gaW5zdGVhZCBvZiBBTkdMRSdzIFNoR2V0SW5mbyBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpnZXRVbmlmb3Jtcyk6
CisgICAgICAgICAgICBBZGQgYSBuZXcgcHVibGljIG1ldGhvZCB0byBBTkdMRVdlYktpdEJyaWRn
ZSB3aGljaCBnZXRzIHRoZSBpbmZvIGFib3V0IGFsbCBvZiB0aGUKKyAgICAgICAgICAgIHVuaWZv
cm1zIGluIHRoZSBsYXN0IHZhbGlkYXRlZCB2ZXJ0ZXggc2hhZGVyIG9yIGZyYWdtZW50IHNoYWRl
ci4gVW5pZm9ybSBpbmZvIGluY2x1ZGVzCisgICAgICAgICAgICBuYW1lLCB0eXBlLCBhbmQgc2l6
ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oOgorICAg
ICAgICAoQU5HTEVTaGFkZXJTeW1ib2wpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVTaGFkZXJT
eW1ib2w6OmlzU2FtcGxlcik6CisgICAgICAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHN5bWJv
bCdzIGRhdGEgdHlwZSBpcyBhIEdMU0wgc2FtcGxlciAoZS5nLiBzYW1wbGVyMkQsIHNhbXBsZXJD
dWJlKS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQU5HTEVXZWJLaXRCcmlkZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKToKKyAgICAgICAgICAgIFRha2UgaW4gYW4g
YWRkaXRpb25hbCBwcm9ncmFtVHlwZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmluaXRpYWxpemVQYXJhbWV0ZXJM
b2NhdGlvbnMpOgorICAgICAgICAgICAgUmVtb3ZlIHRoZSBhdXRob3ItYWNjZXNzaWJsZSBET00g
ZWxlbWVudCB0ZXh0dXJlIHNhbXBsZXIgInVfdGV4dHVyZSIuIE9ubHkgZmluZCB0aGUKKyAgICAg
ICAgICAgIGxvY2F0aW9uIG9mIHRoZSBpbnRlcm5hbCBET00gZWxlbWVudCB0ZXh0dXJlIHNhbXBs
ZXIgImNzc191X3RleHR1cmUiIGlmIHRoZSBhdXRob3IgaXMKKyAgICAgICAgICAgIHVzaW5nIHRo
ZSBDU1MgbWl4IGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oOgorICAgICAgICAoQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm86OnByb2dyYW1UeXBlKToKKyAgICAgICAgICAgIEFkZCB0aGUgbmV3IEN1c3RvbUZpbHRlclBy
b2dyYW1UeXBlIGVudW0uIEluIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLCB3ZSBwbGFuIHRvIHJl
cGxhY2UKKyAgICAgICAgICAgIG1peFNldHRpbmdzLmVuYWJsZWQgd2l0aCBhIHByb2dyYW1UeXBl
LiBTZWU6CisgICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY0NDgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0uY3BwOgorICAgICAgICAgICAgUmVqZWN0IGFsbCBzaGFkZXJzIHRo
YXQgaGF2ZSBzYW1wbGVyIHVuaWZvcm1zIGRlZmluZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNvbXBpbGVk
UHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6YmluZFByb2dyYW1B
bmRCdWZmZXJzKToKKyAgICAgICAgICAgIEFkZCBhbiBhc3NlcnQgdG8gdmVyaWZ5IHRoYXQgdGhl
IERPTSBlbGVtZW50IHRleHR1cmUgaXMgYm91bmQgb25seSBpZiB0aGUgYXV0aG9yIGlzCisgICAg
ICAgICAgICB1c2luZyB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KKwogMjAxMi0wOS0wOSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtWOF0gY29udmVydEV2ZW50VGFy
Z2V0VG9WOE9iamVjdCBkb2Vzbid0IG5lZWQgdG8gYmUgb3ZlcmxvYWRlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmlu
ZGV4IDVjNTI4Y2YuLmI2NDcyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKQEAgLTMyLDYgKzMyLDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAoraW5saW5lIHN0YXRpYyBpbnQgZ2V0VmFsaWRhdGlvblJl
c3VsdFZhbHVlKGNvbnN0IFNoSGFuZGxlIGNvbXBpbGVyLCBTaFNoYWRlckluZm8gc2hhZGVySW5m
bykKK3sKKyAgICBpbnQgdmFsdWUgPSAtMTsKKyAgICBTaEdldEluZm8oY29tcGlsZXIsIHNoYWRl
ckluZm8sICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBBTkdMRVdlYktpdEJyaWRn
ZTo6QU5HTEVXZWJLaXRCcmlkZ2UoU2hTaGFkZXJPdXRwdXQgc2hhZGVyT3V0cHV0LCBTaFNoYWRl
clNwZWMgc2hhZGVyU3BlYykKICAgICA6IGJ1aWx0Q29tcGlsZXJzKGZhbHNlKQogICAgICwgbV9m
cmFnbWVudENvbXBpbGVyKDApCkBAIC05Miw4ICs5OSw3IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlk
Z2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVT
aGFkCiAKICAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IFNoQ29tcGlsZShjb21waWxlciwgc2hh
ZGVyU291cmNlU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUgfCBleHRyYUNvbXBpbGVPcHRpb25z
KTsKICAgICBpZiAoIXZhbGlkYXRlU3VjY2VzcykgewotICAgICAgICBpbnQgbG9nU2l6ZSA9IDA7
Ci0gICAgICAgIFNoR2V0SW5mbyhjb21waWxlciwgU0hfSU5GT19MT0dfTEVOR1RILCAmbG9nU2l6
ZSk7CisgICAgICAgIGludCBsb2dTaXplID0gZ2V0VmFsaWRhdGlvblJlc3VsdFZhbHVlKGNvbXBp
bGVyLCBTSF9JTkZPX0xPR19MRU5HVEgpOwogICAgICAgICBpZiAobG9nU2l6ZSA+IDEpIHsKICAg
ICAgICAgICAgIE93bkFycmF5UHRyPGNoYXI+IGxvZ0J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3
IGNoYXJbbG9nU2l6ZV0pOwogICAgICAgICAgICAgaWYgKGxvZ0J1ZmZlcikgewpAQCAtMTA0LDgg
KzExMCw3IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKGNv
bnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpbnQgdHJhbnNsYXRpb25MZW5ndGggPSAwOwotICAgIFNoR2V0SW5mbyhj
b21waWxlciwgU0hfT0JKRUNUX0NPREVfTEVOR1RILCAmdHJhbnNsYXRpb25MZW5ndGgpOworICAg
IGludCB0cmFuc2xhdGlvbkxlbmd0aCA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1ZShjb21waWxl
ciwgU0hfT0JKRUNUX0NPREVfTEVOR1RIKTsKICAgICBpZiAodHJhbnNsYXRpb25MZW5ndGggPiAx
KSB7CiAgICAgICAgIE93bkFycmF5UHRyPGNoYXI+IHRyYW5zbGF0aW9uQnVmZmVyID0gYWRvcHRB
cnJheVB0cihuZXcgY2hhclt0cmFuc2xhdGlvbkxlbmd0aF0pOwogICAgICAgICBpZiAoIXRyYW5z
bGF0aW9uQnVmZmVyKQpAQCAtMTE3LDYgKzEyMiwzNSBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdl
Ojp2YWxpZGF0ZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hh
ZAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpnZXRVbmlm
b3JtcyhTaFNoYWRlclR5cGUgc2hhZGVyVHlwZSwgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiAm
c3ltYm9scykKK3sKKyAgICBjb25zdCBTaEhhbmRsZSBjb21waWxlciA9IChzaGFkZXJUeXBlID09
IFNIX1ZFUlRFWF9TSEFERVIgPyBtX3ZlcnRleENvbXBpbGVyIDogbV9mcmFnbWVudENvbXBpbGVy
KTsKKworICAgIGludCBudW1Vbmlmb3JtcyA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1ZShjb21w
aWxlciwgU0hfQUNUSVZFX1VOSUZPUk1TKTsKKyAgICBpZiAobnVtVW5pZm9ybXMgPCAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFudW1Vbmlmb3JtcykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpbnQgbWF4TmFtZUxlbmd0aCA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1
ZShjb21waWxlciwgU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCk7CisgICAgaWYgKG1heE5h
bWVMZW5ndGggPD0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE93bkFycmF5UHRyPGNo
YXI+IG5hbWVCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW21heE5hbWVMZW5ndGhdKTsK
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVW5pZm9ybXM7ICsraSkgeworICAgICAgICBB
TkdMRVNoYWRlclN5bWJvbCBzeW1ib2w7CisgICAgICAgIHN5bWJvbC5zeW1ib2xUeXBlID0gU0hB
REVSX1NZTUJPTF9UWVBFX1VOSUZPUk07CisgICAgICAgIGludCBuYW1lTGVuZ3RoID0gLTE7Cisg
ICAgICAgIFNoR2V0QWN0aXZlVW5pZm9ybShjb21waWxlciwgaSwgJm5hbWVMZW5ndGgsICZzeW1i
b2wuc2l6ZSwgJnN5bWJvbC5kYXRhVHlwZSwgbmFtZUJ1ZmZlci5nZXQoKSwgMCk7CisgICAgICAg
IGlmIChuYW1lTGVuZ3RoIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHN5bWJvbC5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChuYW1lQnVmZmVyLmdldCgpLCBuYW1lTGVu
Z3RoKTsKKyAgICAgICAgc3ltYm9scy5hcHBlbmQoc3ltYm9sKTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKaW5k
ZXggMjZmMzAxMi4uMTljNTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCkBAIC00Miw2ICs0MiwyNiBAQCBlbnVtIEFO
R0xFU2hhZGVyVHlwZSB7CiAgICAgU0hBREVSX1RZUEVfRlJBR01FTlQgPSBTSF9GUkFHTUVOVF9T
SEFERVIsCiB9OwogCitlbnVtIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSB7CisgICAgU0hBREVSX1NZ
TUJPTF9UWVBFX0FUVFJJQlVURSwKKyAgICBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STQorfTsK
Kworc3RydWN0IEFOR0xFU2hhZGVyU3ltYm9sIHsKKyAgICBBTkdMRVNoYWRlclN5bWJvbFR5cGUg
c3ltYm9sVHlwZTsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTaERhdGFUeXBlIGRhdGFUeXBlOwor
ICAgIGludCBzaXplOworCisgICAgYm9vbCBpc1NhbXBsZXIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRhdGFUeXBlID09IFNIX1NBTVBMRVJfMkQKKyAgICAgICAgICAgIHx8IGRhdGFUeXBlID09
IFNIX1NBTVBMRVJfQ1VCRQorICAgICAgICAgICAgfHwgZGF0YVR5cGUgPT0gU0hfU0FNUExFUl8y
RF9SRUNUX0FSQgorICAgICAgICAgICAgfHwgZGF0YVR5cGUgPT0gU0hfU0FNUExFUl9FWFRFUk5B
TF9PRVM7CisgICAgfQorfTsKKwogY2xhc3MgQU5HTEVXZWJLaXRCcmlkZ2UgewogcHVibGljOgog
CkBAIC01Myw2ICs3MywxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCB2YWxpZGF0ZVNoYWRl
clNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hhZGVyVHlwZSwgU3RyaW5n
JiB0cmFuc2xhdGVkU2hhZGVyU291cmNlLCBTdHJpbmcmIHNoYWRlclZhbGlkYXRpb25Mb2csIGlu
dCBleHRyYUNvbXBpbGVPcHRpb25zID0gMCk7CiAKKyAgICAvLyBHZXQgdGhlIHVuaWZvcm1zIGZv
ciB0aGUgbGFzdCB2YWxpZGF0ZWQgc2hhZGVyIG9mIHR5cGUgU2hTaGFkZXJUeXBlLgorICAgIC8v
IEZvciB0aGlzIGZ1bmN0aW9uIHRvIHdvcmssIHlvdSBtdXN0IHVzZSB0aGUgU0hfQVRUUklCVVRF
U19VTklGT1JNUyBjb21waWxlIG9wdGlvbiBkdXJpbmcgdmFsaWRhdGlvbi4KKyAgICAvLyBSZXR1
cm5zIGZhbHNlIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgaW4gQU5HTEUuCisgICAg
Ym9vbCBnZXRVbmlmb3JtcyhTaFNoYWRlclR5cGUsIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4g
JnN5bWJvbHMpOworCiBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhbnVwQ29tcGlsZXJzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKaW5kZXggM2M2OTU5
Yi4uN2UyODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVy
dGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQorQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRW
ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIEN1c3Rv
bUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CiAgICAgLCBtX3Byb2dyYW0oMCkKICAgICAsIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbigtMSkK
QEAgLTczLDcgKzczLDcgQEAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnQKICAgICBpZiAoIW1fcHJv
Z3JhbSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGluaXRpYWxpemVQYXJhbWV0ZXJMb2Nh
dGlvbnMoKTsKKyAgICBpbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKHByb2dyYW1UeXBlKTsK
ICAgICAKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogfQpAQCAtMTE3LDcgKzExNyw3IEBA
IFBsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpsaW5rUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0IHZlcnRlCiAgICAgcmV0dXJuIHByb2dyYW07CiB9CiAKLXZvaWQg
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25z
KCkKK3ZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVy
TG9jYXRpb25zKEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlKQogewogICAgIG1f
cG9zaXRpb25BdHRyaWJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9w
cm9ncmFtLCAiYV9wb3NpdGlvbiIpOwogICAgIG1fdGV4QXR0cmliTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfdGV4Q29vcmQiKTsKQEAgLTEyOSwx
MiArMTI5LDE2IEBAIHZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXpl
UGFyYW1ldGVyTG9jYXRpb25zKCkKICAgICBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbiA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfcHJvamVjdGlvbk1hdHJp
eCIpOwogICAgIG1fc2FtcGxlclNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZVNpemUiKTsKICAgICBtX2NvbnRlbnRTYW1wbGVy
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X2Nv
bnRlbnRUZXh0dXJlIik7Ci0gICAgbV9pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImNzc19hX3RleENvb3JkIik7
Ci0gICAgbV9zYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3Byb2dyYW0sICJjc3NfdV90ZXh0dXJlIik7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0ZXh0dXJl
IGFjY2VzcyB2aWEgdV90ZXh0dXJlIGFuZCBjaGFuZ2UgdGhlIHRlc3RzIHRvIHVzZSBibGVuZGlu
ZyBhbmQgY29tcG9zaXRpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzODcxCi0gICAgaWYgKG1fc2FtcGxlckxvY2F0aW9uID09IC0xKQotICAgICAg
ICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJv
Z3JhbSwgInVfdGV4dHVyZSIpOworICAgIGlmIChwcm9ncmFtVHlwZSA9PSBQUk9HUkFNX1RZUEVf
QkxFTkRTX0VMRU1FTlRfVEVYVFVSRSkgeworICAgICAgICAvLyBXaGVuIHRoZSBhdXRob3IgdXNl
cyB0aGUgQ1NTIG1peCBmdW5jdGlvbiBpbiBhIGN1c3RvbSBmaWx0ZXIsIHdlIGFkZCBpbnRlcm5h
bCBzeW1ib2xzIHRvIHRoZSBzaGFkZXIgY29kZS4KKyAgICAgICAgLy8gT25lIG9mIHRoZW0sIGNz
c191X3RleHR1cmUsIHJlZmVyZW5jZXMgdGhlIHRleHR1cmUgb2YgdGhlIGVsZW1lbnQuCisgICAg
ICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9w
cm9ncmFtLCAiY3NzX3VfdGV4dHVyZSIpOworICAgICAgICBtX2ludGVybmFsVGV4Q29vcmRBdHRy
aWJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiY3Nz
X2FfdGV4Q29vcmQiKTsKKworICAgICAgICAvLyBUaGVzZSBpbnRlcm5hbCBzeW1ib2xzIHNob3Vs
ZCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHZhbGlkYXRlZCBzaGFkZXJzLgorICAgICAgICBBU1NF
UlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEpOworICAgICAgICBBU1NFUlQobV9pbnRlcm5hbFRl
eENvb3JkQXR0cmliTG9jYXRpb24gIT0gLTEpOworICAgIH0KIH0KIAogaW50IEN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbTo6dW5pZm9ybUxvY2F0aW9uQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCmluZGV4IGFkOTQ1
ZjYuLmYzMWZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0u
aApAQCAtMzIsNiArMzIsNyBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0Rf
R1JBUEhJQ1MpCiAKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQyLDkgKzQzLDkgQEAgY2xhc3MgQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dDsKIAogY2xhc3MgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+
IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVu
dFNoYWRlcikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFn
bWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShj
b250ZXh0LCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
KGNvbnRleHQsIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIs
IHByb2dyYW1UeXBlKSk7CiAgICAgfQogICAgIAogICAgIH5DdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0oKTsKQEAgLTczLDExICs3NCwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CiBwcml2YXRlOgot
ICAgIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYg
dmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpOworICAgIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRW
ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIEN1c3Rv
bUZpbHRlclByb2dyYW1UeXBlKTsKICAgICAKICAgICBQbGF0Zm9ybTNET2JqZWN0IGNvbXBpbGVT
aGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcpOwog
ICAgIFBsYXRmb3JtM0RPYmplY3QgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhT
aGFkZXIsIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpOwotICAgIHZvaWQgaW5pdGlh
bGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOworICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlckxv
Y2F0aW9ucyhDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSk7CiAgICAgCiAgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3Byb2dyYW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKaW5kZXggN2M2ZTFmNC4uNTJmZTc3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaApAQCAtMzgsNiArMzgsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIEN1c3RvbUZpbHRlclByb2dyYW1UeXBl
IHsKKyAgICBQUk9HUkFNX1RZUEVfTk9fRUxFTUVOVF9URVhUVVJFLAorICAgIFBST0dSQU1fVFlQ
RV9CTEVORFNfRUxFTUVOVF9URVhUVVJFCit9OworCiBzdHJ1Y3QgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bU1peFNldHRpbmdzIHsKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MoKQogICAg
ICAgICA6IGVuYWJsZWQoZmFsc2UpCkBAIC03NSw2ICs4MCw5IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhT
aGFkZXJTdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0cmluZzsgfQorICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYWRkIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHRvIEN1c3RvbUZpbHRlclByb2dy
YW1JbmZvIGFuZCByZW1vdmUgbWl4U2V0dGluZ3MuZW5hYmxlZC4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NDgKKyAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtVHlwZSBwcm9ncmFtVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWl4U2V0dGluZ3MuZW5hYmxl
ZCA/IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFIDogUFJPR1JBTV9UWVBFX05P
X0VMRU1FTlRfVEVYVFVSRTsgfQogICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0
aW5ncyYgbWl4U2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX21peFNldHRpbmdzOyB9CiBwcml2
YXRlOgogICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlclN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCmluZGV4IGE3ZGFjZGIuLjQyMTFlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtODUs
MTQgKzg1LDMxIEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAgICAgLy8gU2hhZGVycyByZWZl
cmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24gdXNlIGEgZGlmZmVyZW50IHZhbGlkYXRv
ciB0aGFuIHJlZ3VsYXIgV2ViR0wgc2hhZGVycy4gU2VlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuaCBmb3IgbW9yZSBkZXRhaWxzLgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKiB2YWxpZGF0b3Ig
PSBwcm9ncmFtSW5mby5taXhTZXR0aW5ncygpLmVuYWJsZWQgPyBtX2dsb2JhbENvbnRleHQtPm1p
eFNoYWRlclZhbGlkYXRvcigpIDogbV9nbG9iYWxDb250ZXh0LT53ZWJnbFNoYWRlclZhbGlkYXRv
cigpOwogICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJMb2csIGZyYWdtZW50U2hhZGVyTG9nOwotICAg
IGJvb2wgdmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPnZhbGlkYXRlU2hhZGVyU291cmNl
KG9yaWdpbmFsVmVydGV4U2hhZGVyLnV0ZjgoKS5kYXRhKCksIFNIQURFUl9UWVBFX1ZFUlRFWCwg
bV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZlcnRleFNoYWRlckxvZyk7Ci0gICAgYm9vbCBmcmFn
bWVudFNoYWRlclZhbGlkID0gdmFsaWRhdG9yLT52YWxpZGF0ZVNoYWRlclNvdXJjZShvcmlnaW5h
bEZyYWdtZW50U2hhZGVyLnV0ZjgoKS5kYXRhKCksIFNIQURFUl9UWVBFX0ZSQUdNRU5ULCBtX3Zh
bGlkYXRlZEZyYWdtZW50U2hhZGVyLCBmcmFnbWVudFNoYWRlckxvZyk7CisgICAgYm9vbCB2ZXJ0
ZXhTaGFkZXJWYWxpZCA9IHZhbGlkYXRvci0+dmFsaWRhdGVTaGFkZXJTb3VyY2Uob3JpZ2luYWxW
ZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVYLCBtX3ZhbGlkYXRl
ZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nLCBTSF9BVFRSSUJVVEVTX1VOSUZPUk1TKTsK
KyAgICBib29sIGZyYWdtZW50U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPnZhbGlkYXRlU2hhZGVy
U291cmNlKG9yaWdpbmFsRnJhZ21lbnRTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVf
RlJBR01FTlQsIG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTG9nLCBT
SF9BVFRSSUJVVEVTX1VOSUZPUk1TKTsKICAgICBpZiAoIXZlcnRleFNoYWRlclZhbGlkIHx8ICFm
cmFnbWVudFNoYWRlclZhbGlkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgdGhlIHZhbGlk
YXRpb24gZXJyb3JzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ0MTYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFZhbGlkYXRl
IHRoZSBhdXRob3IncyBzYW1wbGVycy4KKyAgICBWZWN0b3I8QU5HTEVTaGFkZXJTeW1ib2w+IHVu
aWZvcm1zOworICAgIGlmICghdmFsaWRhdG9yLT5nZXRVbmlmb3JtcyhTSF9WRVJURVhfU0hBREVS
LCB1bmlmb3JtcykpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZhbGlkYXRvci0+Z2V0VW5p
Zm9ybXMoU0hfRlJBR01FTlRfU0hBREVSLCB1bmlmb3JtcykpCisgICAgICAgIHJldHVybjsKKyAg
ICBmb3IgKFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD46Oml0ZXJhdG9yIGl0ID0gdW5pZm9ybXMu
YmVnaW4oKTsgaXQgIT0gdW5pZm9ybXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5p
c1NhbXBsZXIoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHdlIHJlc3RyaWN0
IHNoYWRlcnMgd2l0aCBhbnkgc2FtcGxlciBkZWZpbmVkLgorICAgICAgICAgICAgLy8gV2hlbiB3
ZSBpbXBsZW1lbnQgdGV4dHVyZSBwYXJhbWV0ZXJzLCB3ZSB3aWxsIGFsbG93IHNoYWRlcnMgd2hv
c2Ugc2FtcGxlcnMgYXJlIGJvdW5kIHRvIHZhbGlkIHRleHR1cmVzLgorICAgICAgICAgICAgLy8g
V2UgbXVzdCBub3QgYWxsb3cgT3BlbkdMIHRvIGdpdmUgdW5ib3VuZCBzYW1wbGVycyBhIGRlZmF1
bHQgdmFsdWUgb2YgMCBiZWNhdXNlIHRoYXQgcmVmZXJlbmNlcyB0aGUgRE9NIGVsZW1lbnQgdGV4
dHVyZSwKKyAgICAgICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBpbmFjY2Vzc2libGUgdG8gdGhl
IGF1dGhvcidzIHNoYWRlciBjb2RlLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjMwCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKICAgICAvLyBXZSBuZWVkIHRvIGFkZCB0ZXh0dXJlIGFjY2VzcywgYmxlbmRp
bmcsIGFuZCBjb21wb3NpdGluZyBjb2RlIHRvIHNoYWRlcnMgdGhhdCBhcmUgcmVmZXJlbmNlZCBm
cm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgogICAgIGlmIChwcm9ncmFtSW5mby5taXhTZXR0aW5n
cygpLmVuYWJsZWQpIHsKICAgICAgICAgcmV3cml0ZU1peFZlcnRleFNoYWRlcigpOwpAQCAtMTA2
LDcgKzEyMyw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21waWxlZFByCiB7CiAgICAgQVNTRVJUKG1faXNJ
bml0aWFsaXplZCAmJiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKICAgICBp
ZiAoIW1fY29tcGlsZWRQcm9ncmFtKQotICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgp
LCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7Cisg
ICAgICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpj
cmVhdGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCkp
OwogICAgIHJldHVybiBtX2NvbXBpbGVkUHJvZ3JhbTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNw
cAppbmRleCBkNjVmZjk3Li5mZDEyNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApAQCAtMzI5
LDYgKzMyOSw5IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycyhV
aW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSkKICAgICBtX2NvbnRleHQtPnVzZVByb2dy
YW0obV9jb21waWxlZFByb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgCiAgICAgaWYgKG1fY29tcGls
ZWRQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICAvLyBXZSBzaG91
bGQgYmUgYmluZGluZyB0aGUgRE9NIGVsZW1lbnQgdGV4dHVyZSBzYW1wbGVyIG9ubHkgaWYgdGhl
IGF1dGhvciBpcyB1c2luZyB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KKyAgICAgICAgQVNTRVJUKG1f
dmFsaWRhdGVkUHJvZ3JhbS0+cHJvZ3JhbUluZm8oKS5wcm9ncmFtVHlwZSgpID09IFBST0dSQU1f
VFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFKTsKKwogICAgICAgICBtX2NvbnRleHQtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKICAgICAgICAgbV9jb250ZXh0
LT51bmlmb3JtMWkobV9jb21waWxlZFByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKICNp
ZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>