<?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>78937</bug_id>
          
          <creation_ts>2012-02-17 14:45:45 -0800</creation_ts>
          <short_desc>Implement static compression curve parameters for DynamicsCompressorNode</short_desc>
          <delta_ts>2012-02-27 14:15:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>abarth</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559561</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-17 14:45:45 -0800</bug_when>
    <thetext>Implement static compression curve parameters for DynamicsCompressorNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559583</commentid>
    <comment_count>1</comment_count>
      <attachid>127665</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-17 15:15:36 -0800</bug_when>
    <thetext>Created attachment 127665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559591</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-17 15:21:53 -0800</bug_when>
    <thetext>Dynamic range compression has parametric control of the static compression curve:
threshold: the dB value above which the compression will start taking effect
knee: historically this has often been simply &quot;hard&quot; or &quot;soft&quot; knee, but this is a value (in dB) representing the range above the threshold where the curve smoothly transitions to the &quot;ratio&quot; portion
ratio: this value represents the amount of dB change in input for a 1 dB change in output

The &quot;reduction&quot; parameter is a read-only value for metering purposes, representing the current amount of gain reduction that the compressor is applying to the signal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559612</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-17 15:54:13 -0800</bug_when>
    <thetext>Here&apos;s an interactive graphing app to show the parametric curve:
http://chromium.googlecode.com/svn/trunk/samples/audio/compression-curve2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564776</commentid>
    <comment_count>4</comment_count>
      <attachid>128832</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-24 17:12:49 -0800</bug_when>
    <thetext>Created attachment 128832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564805</commentid>
    <comment_count>5</comment_count>
      <attachid>128832</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-24 18:32:21 -0800</bug_when>
    <thetext>Comment on attachment 128832
Patch

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

This looks fine per your walking through the algorithm with me offline. A couple of minor nits. r=me

&gt; Source/WebCore/platform/audio/DynamicsCompressor.cpp:58
&gt; +    if (parameterID &lt; ParamLast)

Is this worth an ASSERT?

&gt; Source/WebCore/platform/audio/DynamicsCompressorKernel.cpp:174
&gt; +        k = sqrt(minK * maxK);

sqrtf?

&gt; Source/WebCore/webaudio/DynamicsCompressorNode.idl:33
&gt; +        readonly attribute AudioParam reduction; // in Decibels

I assume these changes are being specified?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565975</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-27 14:15:22 -0800</bug_when>
    <thetext>Committed r109023: &lt;http://trac.webkit.org/changeset/109023&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127665</attachid>
            <date>2012-02-17 15:15:36 -0800</date>
            <delta_ts>2012-02-24 17:12:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78937-20120217151535.patch</filename>
            <type>text/plain</type>
            <size>20747</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RjZTA1YTU4N2M5NTM0
ZDBjYjJkNzcxZTkwNzAwM2IzNjg5MTYxNC4uNDhiNzQ5N2JlNmVhYWZlY2Q4YWI5ZWI0MmM2ZWUw
MWIyZDdhYTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE3ICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN0YXRp
YyBjb21wcmVzc2lvbiBjdXJ2ZSBwYXJhbWV0ZXJzIGZvciBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODkzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFt
aWNzQ29tcHJlc3Nvcjo6c2V0UGFyYW1ldGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OmluaXRpYWxpemVQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpEeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjprbmVlQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpzYXR1cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWw6OnNsb3BlQXQpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsOjprQXRTbG9wZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnVwZGF0ZVN0YXRpY0N1cnZlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoRHluYW1pY3NDb21w
cmVzc29yS2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bDo6bWV0ZXJpbmdHYWluKToKKyAgICAgICAgKiB3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2Rl
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiB3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvck5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChEeW5hbWljc0NvbXByZXNzb3JOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnRocmVzaG9sZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjprbmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnJlZHVjdGlvbik6CisgICAgICAgICogd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw6CisKIDIwMTItMDItMDcgIE1hdHRoZXcgRGVsYW5l
eSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5MTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGE1NTIwNTcwNWQ5NTEwYmYyMGQ5
ZGIzNTQ4NzkzOTY1ZWUwMmVlMWQuLjgzY2Y5NmE2ZTY3MmE3ZGJjZTY4MGQ0ZjZlNjVmZWI0YzUy
ZjNmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmNwcApAQCAtNTMsMTIgKzUzLDE5IEBAIER5bmFtaWNzQ29tcHJlc3Nvcjo6
RHluYW1pY3NDb21wcmVzc29yKGJvb2wgaXNTdGVyZW8sIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
aW5pdGlhbGl6ZVBhcmFtZXRlcnMoKTsKIH0KIAordm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNl
dFBhcmFtZXRlclZhbHVlKHVuc2lnbmVkIHBhcmFtZXRlcklELCBmbG9hdCB2YWx1ZSkKK3sKKyAg
ICBpZiAocGFyYW1ldGVySUQgPCBQYXJhbUxhc3QpCisgICAgICAgIG1fcGFyYW1ldGVyc1twYXJh
bWV0ZXJJRF0gPSB2YWx1ZTsKK30KKwogdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OmluaXRpYWxp
emVQYXJhbWV0ZXJzKCkKIHsKICAgICAvLyBJbml0aWFsaXplcyBjb21wcmVzc29yIHRvIGRlZmF1
bHQgdmFsdWVzLgogICAgIAogICAgIG1fcGFyYW1ldGVyc1tQYXJhbVRocmVzaG9sZF0gPSAtMjQ7
IC8vIGRCCi0gICAgbV9wYXJhbWV0ZXJzW1BhcmFtSGVhZHJvb21dID0gMjE7IC8vIGRCCisgICAg
bV9wYXJhbWV0ZXJzW1BhcmFtS25lZV0gPSAzMzsgLy8gZEIKKyAgICBtX3BhcmFtZXRlcnNbUGFy
YW1SYXRpb10gPSAxNDsgLy8gdW5pdC1sZXNzCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtQXR0YWNr
XSA9IDAuMDAzZjsgLy8gc2Vjb25kcwogICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2VdID0g
MC4yNTBmOyAvLyBzZWNvbmRzCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUHJlRGVsYXldID0gMC4w
MDZmOyAvLyBzZWNvbmRzCkBAIC03NCw2ICs4MSw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29y
Ojppbml0aWFsaXplUGFyYW1ldGVycygpCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtRmlsdGVyQW5j
aG9yXSA9IDE1MDAwIC8gbnlxdWlzdCgpOwogICAgIAogICAgIG1fcGFyYW1ldGVyc1tQYXJhbVBv
c3RHYWluXSA9IDA7IC8vIGRCCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUmVkdWN0aW9uXSA9IDA7
CiAKICAgICAvLyBMaW5lYXIgY3Jvc3NmYWRlICgwIC0+IDEpLgogICAgIG1fcGFyYW1ldGVyc1tQ
YXJhbUVmZmVjdEJsZW5kXSA9IDE7CkBAIC0xNTcsNyArMTY1LDggQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRl
c3RpbmF0aW8KICAgICB9CiAKICAgICBmbG9hdCBkYlRocmVzaG9sZCA9IHBhcmFtZXRlclZhbHVl
KFBhcmFtVGhyZXNob2xkKTsKLSAgICBmbG9hdCBkYkhlYWRyb29tID0gcGFyYW1ldGVyVmFsdWUo
UGFyYW1IZWFkcm9vbSk7CisgICAgZmxvYXQgZGJLbmVlID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1L
bmVlKTsKKyAgICBmbG9hdCByYXRpbyA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmF0aW8pOwogICAg
IGZsb2F0IGF0dGFja1RpbWUgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUF0dGFjayk7CiAgICAgZmxv
YXQgcmVsZWFzZVRpbWUgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2UpOwogICAgIGZsb2F0
IHByZURlbGF5VGltZSA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUHJlRGVsYXkpOwpAQCAtMTg0LDcg
KzE5Myw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWVzVG9Qcm9jZXNzLAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGJUaHJlc2hv
bGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGJIZWFkcm9vbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBkYktuZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aW8sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0YWNrVGltZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxlYXNlVGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVEZWxheVRpbWUsCkBA
IC0xOTYsNiArMjA2LDkgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnByb2Nlc3MoY29uc3Qg
QXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW8KICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWxlYXNlWm9uZTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFz
ZVpvbmU0CiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICAvLyBVcGRhdGUgdGhlIGNvbXByZXNzaW9uIGFtb3VudC4gICAgICAgICAgICAg
ICAgICAgICAKKyAgICBzZXRQYXJhbWV0ZXJWYWx1ZShQYXJhbVJlZHVjdGlvbiwgbV9jb21wcmVz
c29yLm1ldGVyaW5nR2FpbigpKTsKIAogICAgIC8vIEFwcGx5IGRlLWVtcGhhc2lzIGZpbHRlci4K
ICAgICBtX3Bvc3RGaWx0ZXJbMF0ucHJvY2VzcyhkZXN0aW5hdGlvbkwsIGRlc3RpbmF0aW9uTCwg
ZnJhbWVzVG9Qcm9jZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggZTAxMTVlZTI3M2U0MzBmOWMyOGY1NjRiZmM5Y2M0
NGViYzY2YzY5ZS4uNGU5NDk5NDEwZWQ2MDBjMTUzNGZmMTg1NDNmYWQ4MzQ4ZmI5ZDY2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
LmgKQEAgLTQ2LDcgKzQ2LDggQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKIHB1YmxpYzoK
ICAgICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCi0gICAgICAgIFBhcmFtSGVhZHJv
b20sCisgICAgICAgIFBhcmFtS25lZSwKKyAgICAgICAgUGFyYW1SYXRpbywKICAgICAgICAgUGFy
YW1BdHRhY2ssCiAgICAgICAgIFBhcmFtUmVsZWFzZSwKICAgICAgICAgUGFyYW1QcmVEZWxheSwK
QEAgLTU5LDYgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBQYXJhbUZpbHRlclN0YWdlUmF0aW8s
CiAgICAgICAgIFBhcmFtRmlsdGVyQW5jaG9yLAogICAgICAgICBQYXJhbUVmZmVjdEJsZW5kLAor
ICAgICAgICBQYXJhbVJlZHVjdGlvbiwKICAgICAgICAgUGFyYW1MYXN0CiAgICAgfTsKIApAQCAt
NjcsNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBz
b3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5zaWduZWQgZnJhbWVzVG9Qcm9j
ZXNzKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICB2b2lkIHNldFBhcmFtZXRlclZhbHVlKHVu
c2lnbmVkIHBhcmFtZXRlcklELCBmbG9hdCB2YWx1ZSk7CiAgICAgZmxvYXQgcGFyYW1ldGVyVmFs
dWUodW5zaWduZWQgcGFyYW1ldGVySUQpOwogCiAgICAgYm9vbCBpc1N0ZXJlbygpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdGVyZW87IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCmluZGV4IGE3YTRjMTIxMjc1
MjAyZWNmM2JhYjJlMTVlMDVmY2M0YjRhZGEwZjkuLjI2YTM5YWYwYmM2MDg2YjA0MTJiYzlmZDI2
NDQzOWIyY2U0ZDI0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcApAQCAtNDUsMTIgKzQ1LDggQEAg
dXNpbmcgbmFtZXNwYWNlIEF1ZGlvVXRpbGl0aWVzOwogCiAvLyBNZXRlcmluZyBoaXRzIHBlYWtz
IGluc3RhbnRseSwgYnV0IHJlbGVhc2VzIHRoaXMgZmFzdCAoaW4gc2Vjb25kcykuCiBjb25zdCBm
bG9hdCBtZXRlcmluZ1JlbGVhc2VUaW1lQ29uc3RhbnQgPSAwLjMyNWY7Ci0gICAgCi0vLyBFeHBv
bmVudGlhbCBzYXR1cmF0aW9uIGN1cnZlLgotc3RhdGljIGZsb2F0IHNhdHVyYXRlKGZsb2F0IHgs
IGZsb2F0IGspCi17Ci0gICAgcmV0dXJuIDEgLSBleHAoLWsgKiB4KTsKLX0KKworY29uc3QgZmxv
YXQgdW5pbml0aWFsaXplZFZhbHVlID0gLTE7CiAKIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6
RHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX3NhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSkKQEAgLTU5LDIwICs1NSwxMzQgQEAgRHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAs
IG1fcHJlRGVsYXlCdWZmZXJSKE1heFByZURlbGF5RnJhbWVzKQogICAgICwgbV9wcmVEZWxheVJl
YWRJbmRleCgwKQogICAgICwgbV9wcmVEZWxheVdyaXRlSW5kZXgoRGVmYXVsdFByZURlbGF5RnJh
bWVzKQorICAgICwgbV9yYXRpbyh1bmluaXRpYWxpemVkVmFsdWUpCisgICAgLCBtX3Nsb3BlKHVu
aW5pdGlhbGl6ZWRWYWx1ZSkKKyAgICAsIG1fbGluZWFyVGhyZXNob2xkKHVuaW5pdGlhbGl6ZWRW
YWx1ZSkKKyAgICAsIG1fZGJUaHJlc2hvbGQodW5pbml0aWFsaXplZFZhbHVlKQorICAgICwgbV9k
YktuZWUodW5pbml0aWFsaXplZFZhbHVlKQorICAgICwgbV9rbmVlVGhyZXNob2xkKHVuaW5pdGlh
bGl6ZWRWYWx1ZSkKKyAgICAsIG1fa25lZVRocmVzaG9sZERiKHVuaW5pdGlhbGl6ZWRWYWx1ZSkK
KyAgICAsIG1feWtuZWVUaHJlc2hvbGREYih1bmluaXRpYWxpemVkVmFsdWUpCisgICAgLCBtX0so
dW5pbml0aWFsaXplZFZhbHVlKQogewogICAgIC8vIEluaXRpYWxpemVzIG1vc3QgbWVtYmVyIHZh
cmlhYmxlcwogICAgIHJlc2V0KCk7Ci0gICAgCisKICAgICBtX21ldGVyaW5nUmVsZWFzZUsgPSBk
aXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUobWV0ZXJpbmdSZWxlYXNlVGltZUNvbnN0
YW50LCBzYW1wbGVSYXRlKTsKIH0KIAorLy8gRXhwb25lbnRpYWwgY3VydmUgZm9yIHRoZSBrbmVl
LgorLy8gSXQgaXMgMXN0IGRlcml2YXRpdmUgbWF0Y2hlZCBhdCBtX2xpbmVhclRocmVzaG9sZCBh
bmQgYXN5bXB0b3RpY2FsbHkgYXBwcm9hY2hlcyB0aGUgdmFsdWUgbV9saW5lYXJUaHJlc2hvbGQg
KyAxIC8gay4KK2Zsb2F0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6a25lZUN1cnZlKGZsb2F0
IHgsIGZsb2F0IGspCit7CisgICAgLy8gTGluZWFyIHVwIHRvIHRocmVzaG9sZC4KKyAgICBpZiAo
eCA8IG1fbGluZWFyVGhyZXNob2xkKQorICAgICAgICByZXR1cm4geDsKKworICAgIHJldHVybiBt
X2xpbmVhclRocmVzaG9sZCArICgxIC0gZXhwZigtayAqICh4IC0gbV9saW5lYXJUaHJlc2hvbGQp
KSkgLyBrOworfQorCisvLyBGdWxsIGNvbXByZXNzaW9uIGN1cnZlIHdpdGggY29uc3RhbnQgcmF0
aW8gYWZ0ZXIga25lZS4KK2Zsb2F0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2F0dXJhdGUo
ZmxvYXQgeCwgZmxvYXQgaykKK3sKKyAgICBmbG9hdCB5OworCisgICAgaWYgKHggPCBtX2tuZWVU
aHJlc2hvbGQpCisgICAgICAgIHkgPSBrbmVlQ3VydmUoeCwgayk7CisgICAgZWxzZSB7CisgICAg
ICAgIC8vIENvbnN0YW50IHJhdGlvIGFmdGVyIGtuZWUuCisgICAgICAgIGZsb2F0IHhEYiA9IGxp
bmVhclRvRGVjaWJlbHMoeCk7CisgICAgICAgIGZsb2F0IHlEYiA9IG1feWtuZWVUaHJlc2hvbGRE
YiArIG1fc2xvcGUgKiAoeERiIC0gbV9rbmVlVGhyZXNob2xkRGIpOworCisgICAgICAgIHkgPSBk
ZWNpYmVsc1RvTGluZWFyKHlEYik7CisgICAgfQorCisgICAgcmV0dXJuIHk7Cit9CisKKy8vIEFw
cHJveGltYXRlIDFzdCBkZXJpdmF0aXZlIHdpdGggaW5wdXQgYW5kIG91dHB1dCBleHByZXNzZWQg
aW4gZEIuCisvLyBUaGlzIHNsb3BlIGlzIGVxdWFsIHRvIHRoZSBpbnZlcnNlIG9mIHRoZSBjb21w
cmVzc2lvbiAicmF0aW8iLgorLy8gSW4gb3RoZXIgd29yZHMsIGEgY29tcHJlc3Npb24gcmF0aW8g
b2YgMjAgd291bGQgYmUgYSBzbG9wZSBvZiAxLzIwLgorZmxvYXQgRHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpzbG9wZUF0KGZsb2F0IHgsIGZsb2F0IGspCit7CisgICAgaWYgKHggPCBtX2xpbmVh
clRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBmbG9hdCB4MiA9IHggKiAxLjAw
MTsKKworICAgIGZsb2F0IHhEYiA9IGxpbmVhclRvRGVjaWJlbHMoeCk7CisgICAgZmxvYXQgeDJE
YiA9IGxpbmVhclRvRGVjaWJlbHMoeDIpOworCisgICAgZmxvYXQgeURiID0gbGluZWFyVG9EZWNp
YmVscyhrbmVlQ3VydmUoeCwgaykpOworICAgIGZsb2F0IHkyRGIgPSBsaW5lYXJUb0RlY2liZWxz
KGtuZWVDdXJ2ZSh4MiwgaykpOworCisgICAgZmxvYXQgbSA9ICh5MkRiIC0geURiKSAvICh4MkRi
IC0geERiKTsKKworICAgIHJldHVybiBtOworfQorCitmbG9hdCBEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWw6OmtBdFNsb3BlKGZsb2F0IGRlc2lyZWRTbG9wZSkKK3sKKyAgICBmbG9hdCB4RGIgPSBt
X2RiVGhyZXNob2xkICsgbV9kYktuZWU7CisgICAgZmxvYXQgeCA9IGRlY2liZWxzVG9MaW5lYXIo
eERiKTsKKworICAgIC8vIEFwcHJveGltYXRlIGsgZ2l2ZW4gaW5pdGlhbCB2YWx1ZXMuCisgICAg
ZmxvYXQgbWluSyA9IDAuMTsKKyAgICBmbG9hdCBtYXhLID0gMTAwMDA7CisgICAgZmxvYXQgayA9
IDU7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE1OyArK2kpIHsKKyAgICAgICAgLy8gQSBo
aWdoIHZhbHVlIGZvciBrIHdpbGwgbW9yZSBxdWlja2x5IGFzeW1wdG90aWNhbGx5IGFwcHJvYWNo
IGEgc2xvcGUgb2YgMC4KKyAgICAgICAgZmxvYXQgc2xvcGUgPSBzbG9wZUF0KHgsIGspOworCisg
ICAgICAgIGlmIChzbG9wZSA8IGRlc2lyZWRTbG9wZSkgeworICAgICAgICAgICAgLy8gayBpcyB0
b28gaGlnaC4KKyAgICAgICAgICAgIG1heEsgPSBrOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gayBpcyB0b28gbG93LgorICAgICAgICAgICAgbWluSyA9IGs7CisgICAgICAgIH0K
KworICAgICAgICAvLyBSZS1jYWxjdWxhdGUgYmFzZWQgb24gZ2VvbWV0cmljIG1lYW4uCisgICAg
ICAgIGsgPSBzcXJ0KG1pbksgKiBtYXhLKTsKKyAgICB9CisKKyAgICByZXR1cm4gazsKK30KKwor
ZmxvYXQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjp1cGRhdGVTdGF0aWNDdXJ2ZVBhcmFtZXRl
cnMoZmxvYXQgZGJUaHJlc2hvbGQsIGZsb2F0IGRiS25lZSwgZmxvYXQgcmF0aW8pCit7CisgICAg
aWYgKGRiVGhyZXNob2xkICE9IG1fZGJUaHJlc2hvbGQgfHwgZGJLbmVlICE9IG1fZGJLbmVlIHx8
IHJhdGlvICE9IG1fcmF0aW8pIHsKKyAgICAgICAgLy8gVGhyZXNob2xkIGFuZCBrbmVlLgorICAg
ICAgICBtX2RiVGhyZXNob2xkID0gZGJUaHJlc2hvbGQ7CisgICAgICAgIG1fbGluZWFyVGhyZXNo
b2xkID0gZGVjaWJlbHNUb0xpbmVhcihkYlRocmVzaG9sZCk7CisgICAgICAgIG1fZGJLbmVlID0g
ZGJLbmVlOworCisgICAgICAgIC8vIENvbXB1dGUga25lZSBwYXJhbWV0ZXJzLgorICAgICAgICBt
X3JhdGlvID0gcmF0aW87CisgICAgICAgIG1fc2xvcGUgPSAxIC8gbV9yYXRpbzsKKworICAgICAg
ICBmbG9hdCBrID0ga0F0U2xvcGUoMSAvIG1fcmF0aW8pOworCisgICAgICAgIG1fa25lZVRocmVz
aG9sZERiID0gZGJUaHJlc2hvbGQgKyBkYktuZWU7CisgICAgICAgIG1fa25lZVRocmVzaG9sZCA9
IGRlY2liZWxzVG9MaW5lYXIobV9rbmVlVGhyZXNob2xkRGIpOworCisgICAgICAgIG1feWtuZWVU
aHJlc2hvbGREYiA9IGxpbmVhclRvRGVjaWJlbHMoa25lZUN1cnZlKG1fa25lZVRocmVzaG9sZCwg
aykpOworICAgICAgICAKKyAgICAgICAgbV9LID0gazsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IG1fSzsKK30KKwogdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGlt
ZShmbG9hdCBwcmVEZWxheVRpbWUpCiB7CiAgICAgLy8gUmUtY29uZmlndXJlIGxvb2stYWhlYWQg
c2VjdGlvbiBwcmUtZGVsYXkgaWYgZGVsYXkgdGltZSBoYXMgY2hhbmdlZC4KLSAgICB1bnNpZ25l
ZCBwcmVEZWxheUZyYW1lcyA9IHByZURlbGF5VGltZSAvIHNhbXBsZVJhdGUoKTsKKyAgICB1bnNp
Z25lZCBwcmVEZWxheUZyYW1lcyA9IHByZURlbGF5VGltZSAqIHNhbXBsZVJhdGUoKTsKKwogICAg
IGlmIChwcmVEZWxheUZyYW1lcyA+IE1heFByZURlbGF5RnJhbWVzIC0gMSkKICAgICAgICAgcHJl
RGVsYXlGcmFtZXMgPSBNYXhQcmVEZWxheUZyYW1lcyAtIDE7Ci0gICAgICAgIAorCiAgICAgaWYg
KG1fbGFzdFByZURlbGF5RnJhbWVzICE9IHByZURlbGF5RnJhbWVzKSB7CiAgICAgICAgIG1fbGFz
dFByZURlbGF5RnJhbWVzID0gcHJlRGVsYXlGcmFtZXM7CiAgICAgICAgIG1fcHJlRGVsYXlCdWZm
ZXJMLnplcm8oKTsKQEAgLTg5LDcgKzE5OSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzLAogCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkYlRocmVzaG9sZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRiSGVhZHJvb20sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkYktuZWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByYXRpbywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGF0dGFja1RpbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByZWxlYXNlVGltZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHByZURlbGF5VGltZSwKQEAgLTEwOCwx
NyArMjE5LDEyIEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGNvbnN0
IGZsb2F0KiBzb3VyY2VMLAogICAgIGZsb2F0IGRyeU1peCA9IDEgLSBlZmZlY3RCbGVuZDsKICAg
ICBmbG9hdCB3ZXRNaXggPSBlZmZlY3RCbGVuZDsKIAotICAgIC8vIFRocmVzaG9sZCBhbmQgaGVh
ZHJvb20uCi0gICAgZmxvYXQgbGluZWFyVGhyZXNob2xkID0gZGVjaWJlbHNUb0xpbmVhcihkYlRo
cmVzaG9sZCk7Ci0gICAgZmxvYXQgbGluZWFySGVhZHJvb20gPSBkZWNpYmVsc1RvTGluZWFyKGRi
SGVhZHJvb20pOworICAgIGZsb2F0IGsgPSB1cGRhdGVTdGF0aWNDdXJ2ZVBhcmFtZXRlcnMoZGJU
aHJlc2hvbGQsIGRiS25lZSwgcmF0aW8pOwogCiAgICAgLy8gTWFrZXVwIGdhaW4uCi0gICAgZmxv
YXQgbWF4aW11bSA9IDEuMDVmICogbGluZWFySGVhZHJvb20gKiBsaW5lYXJUaHJlc2hvbGQ7Ci0g
ICAgZmxvYXQga2sgPSAobWF4aW11bSAtIGxpbmVhclRocmVzaG9sZCk7Ci0gICAgZmxvYXQgaW52
ZXJzZUtLID0gMSAvIGtrOwotCi0gICAgZmxvYXQgZnVsbFJhbmdlR2FpbiA9IChsaW5lYXJUaHJl
c2hvbGQgKyBrayAqIHNhdHVyYXRlKDEgLSBsaW5lYXJUaHJlc2hvbGQsIDEpKTsKKyAgICBmbG9h
dCBmdWxsUmFuZ2VHYWluID0gc2F0dXJhdGUoMSwgayk7CiAgICAgZmxvYXQgZnVsbFJhbmdlTWFr
ZXVwR2FpbiA9IDEgLyBmdWxsUmFuZ2VHYWluOworCiAgICAgLy8gRW1waXJpY2FsL3BlcmNlcHR1
YWwgdHVuaW5nLgogICAgIGZ1bGxSYW5nZU1ha2V1cEdhaW4gPSBwb3dmKGZ1bGxSYW5nZU1ha2V1
cEdhaW4sIDAuNmYpOwogCkBAIC0xMzAsNyArMjM2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWw6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZUwsCiAKICAgICAvLyBSZWxlYXNl
IHBhcmFtZXRlcnMuCiAgICAgZmxvYXQgcmVsZWFzZUZyYW1lcyA9IHNhbXBsZVJhdGUgKiByZWxl
YXNlVGltZTsKLSAgICAKKwogICAgIC8vIERldGVjdG9yIHJlbGVhc2UgdGltZS4KICAgICBmbG9h
dCBzYXRSZWxlYXNlVGltZSA9IDAuMDAyNWY7CiAgICAgZmxvYXQgc2F0UmVsZWFzZUZyYW1lcyA9
IHNhdFJlbGVhc2VUaW1lICogc2FtcGxlUmF0ZTsKQEAgLTE1OSw3ICsyNjUsNyBAQCB2b2lkIER5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlTCwKICAg
ICAvLyB5IGNhbGN1bGF0ZXMgYWRhcHRpdmUgcmVsZWFzZSBmcmFtZXMgZGVwZW5kaW5nIG9uIHRo
ZSBhbW91bnQgb2YgY29tcHJlc3Npb24uCiAKICAgICBzZXRQcmVEZWxheVRpbWUocHJlRGVsYXlU
aW1lKTsKLSAgICAKKwogICAgIGNvbnN0IGludCBuRGl2aXNpb25GcmFtZXMgPSAzMjsKIAogICAg
IGNvbnN0IGludCBuRGl2aXNpb25zID0gZnJhbWVzVG9Qcm9jZXNzIC8gbkRpdmlzaW9uRnJhbWVz
OwpAQCAtMjg4LDkgKzM5NCwxMCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJv
Y2Vzcyhjb25zdCBmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgICAgICBmbG9hdCBhYnNJbnB1
dCA9IHNjYWxlZElucHV0ID4gMCA/IHNjYWxlZElucHV0IDogLXNjYWxlZElucHV0OwogCiAgICAg
ICAgICAgICAgICAgLy8gUHV0IHRocm91Z2ggc2hhcGluZyBjdXJ2ZS4KLSAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGxpbmVhciB1cCB0byB0aGUgdGhyZXNob2xkLCB0aGVuIGV4cG9uZW50aWFs
bHkgYXBwcm9hY2hlcyB0aGUgbWF4aW11bSAoaGVhZHJvb20gYW1vdW50IGFib3ZlIHRocmVzaG9s
ZCkuCi0gICAgICAgICAgICAgICAgLy8gVGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgdGhyZXNob2xk
IHRvIHRoZSBleHBvbmVudGlhbCBwb3J0aW9uIGlzIHNtb290aCAoMXN0IGRlcml2YXRpdmUgbWF0
Y2hlZCkuCi0gICAgICAgICAgICAgICAgZmxvYXQgc2hhcGVkSW5wdXQgPSBhYnNJbnB1dCA8IGxp
bmVhclRocmVzaG9sZCA/IGFic0lucHV0IDogbGluZWFyVGhyZXNob2xkICsga2sgKiBzYXR1cmF0
ZShhYnNJbnB1dCAtIGxpbmVhclRocmVzaG9sZCwgaW52ZXJzZUtLKTsKKyAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGxpbmVhciB1cCB0byB0aGUgdGhyZXNob2xkLCB0aGVuIGVudGVycyBhICJr
bmVlIiBwb3J0aW9uIGZvbGxvd2VkIGJ5IHRoZSAicmF0aW8iIHBvcnRpb24uCisgICAgICAgICAg
ICAgICAgLy8gVGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgdGhyZXNob2xkIHRvIHRoZSBrbmVlIGlz
IHNtb290aCAoMXN0IGRlcml2YXRpdmUgbWF0Y2hlZCkuCisgICAgICAgICAgICAgICAgLy8gVGhl
IHRyYW5zaXRpb24gZnJvbSB0aGUga25lZSB0byB0aGUgcmF0aW8gcG9ydGlvbiBpcyBzbW9vdGgg
KDFzdCBkZXJpdmF0aXZlIG1hdGNoZWQpLgorICAgICAgICAgICAgICAgIGZsb2F0IHNoYXBlZElu
cHV0ID0gc2F0dXJhdGUoYWJzSW5wdXQsIGspOwogCiAgICAgICAgICAgICAgICAgZmxvYXQgYXR0
ZW51YXRpb24gPSBhYnNJbnB1dCA8PSAwLjAwMDFmID8gMSA6IHNoYXBlZElucHV0IC8gYWJzSW5w
dXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsLmgKaW5kZXggY2YzMTliMzc4YWRlYjU5MDYyOTUzZGVhYjA5MmUz
MzM5YzZmNjg4MC4uMjNhMDk1MWU0OWQ0NjdkZDgxMWI1M2E5YzE1ZjUyNWUzMTdjNmM4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
S2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yS2VybmVsLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MsCiAKICAgICAgICAgICAgICAgICAgZmxvYXQgZGJU
aHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgIGZsb2F0IGRiSGVhZHJvb20sCisgICAgICAgICAg
ICAgICAgIGZsb2F0IGRiS25lZSwKKyAgICAgICAgICAgICAgICAgZmxvYXQgcmF0aW8sCiAgICAg
ICAgICAgICAgICAgIGZsb2F0IGF0dGFja1RpbWUsCiAgICAgICAgICAgICAgICAgIGZsb2F0IHJl
bGVhc2VUaW1lLAogICAgICAgICAgICAgICAgICBmbG9hdCBwcmVEZWxheVRpbWUsCkBAIC02NCw5
ICs2NSwxMSBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVSYXRlOyB9CiAKKyAgICBmbG9hdCBtZXRlcmluZ0dhaW4oKSBjb25zdCB7IHJl
dHVybiBtX21ldGVyaW5nR2FpbjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZmxvYXQgbV9zYW1wbGVS
YXRlOwotICAgIAorCiAgICAgZmxvYXQgbV9kZXRlY3RvckF2ZXJhZ2U7CiAgICAgZmxvYXQgbV9j
b21wcmVzc29yR2FpbjsKIApAQCAtODcsNiArOTAsMzUgQEAgcHJvdGVjdGVkOgogICAgIGludCBt
X3ByZURlbGF5V3JpdGVJbmRleDsKIAogICAgIGZsb2F0IG1fbWF4QXR0YWNrQ29tcHJlc3Npb25E
aWZmRGI7CisKKyAgICAvLyBTdGF0aWMgY29tcHJlc3Npb24gY3VydmUuCisgICAgZmxvYXQga25l
ZUN1cnZlKGZsb2F0IHgsIGZsb2F0IGspOworICAgIGZsb2F0IHNhdHVyYXRlKGZsb2F0IHgsIGZs
b2F0IGspOworICAgIGZsb2F0IHNsb3BlQXQoZmxvYXQgeCwgZmxvYXQgayk7CisgICAgZmxvYXQg
a0F0U2xvcGUoZmxvYXQgZGVzaXJlZFNsb3BlKTsKKworICAgIGZsb2F0IHVwZGF0ZVN0YXRpY0N1
cnZlUGFyYW1ldGVycyhmbG9hdCBkYlRocmVzaG9sZCwgZmxvYXQgZGJLbmVlLCBmbG9hdCByYXRp
byk7CisKKyAgICAvLyBBbW91bnQgb2YgaW5wdXQgY2hhbmdlIGluIGRCIHJlcXVpcmVkIGZvciAx
IGRCIG9mIG91dHB1dCBjaGFuZ2UuCisgICAgLy8gVGhpcyBhcHBsaWVzIHRvIHRoZSBwb3J0aW9u
IG9mIHRoZSBjdXJ2ZSBhYm92ZSBtX2tuZWVUaHJlc2hvbGREYiAoc2VlIGJlbG93KS4KKyAgICBm
bG9hdCBtX3JhdGlvOworICAgIGZsb2F0IG1fc2xvcGU7IC8vIEludmVyc2UgcmF0aW8uCisgICAg
CisgICAgLy8gVGhlIGlucHV0IHRvIG91dHB1dCBjaGFuZ2UgYmVsb3cgdGhlIHRocmVzaG9sZCBp
cyBsaW5lYXIgMToxLgorICAgIGZsb2F0IG1fbGluZWFyVGhyZXNob2xkOworICAgIGZsb2F0IG1f
ZGJUaHJlc2hvbGQ7CisgICAgCisgICAgLy8gbV9kYktuZWUgaXMgdGhlIG51bWJlciBvZiBkQiBh
Ym92ZSB0aGUgdGhyZXNob2xkIGJlZm9yZSB3ZSBlbnRlciB0aGUgInJhdGlvIiBwb3J0aW9uIG9m
IHRoZSBjdXJ2ZS4KKyAgICAvLyBtX2tuZWVUaHJlc2hvbGREYiA9IG1fZGJUaHJlc2hvbGQgKyBt
X2RiS25lZQorICAgIC8vIFRoZSBwb3J0aW9uIGJldHdlZW4gbV9kYlRocmVzaG9sZCBhbmQgbV9r
bmVlVGhyZXNob2xkRGIgaXMgdGhlICJzb2Z0IGtuZWUiIHBvcnRpb24gb2YgdGhlIGN1cnZlCisg
ICAgLy8gd2hpY2ggdHJhbnNpdGlvbnMgc21vb3RobHkgZnJvbSB0aGUgbGluZWFyIHBvcnRpb24g
dG8gdGhlIHJhdGlvIHBvcnRpb24uCisgICAgZmxvYXQgbV9kYktuZWU7CisgICAgZmxvYXQgbV9r
bmVlVGhyZXNob2xkOworICAgIGZsb2F0IG1fa25lZVRocmVzaG9sZERiOworICAgIGZsb2F0IG1f
eWtuZWVUaHJlc2hvbGREYjsKKworICAgIC8vIEludGVybmFsIHBhcmFtZXRlciBmb3IgdGhlIGtu
ZWUgcG9ydGlvbiBvZiB0aGUgY3VydmUuCisgICAgZmxvYXQgbV9LOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmNwcAppbmRleCBlYThiNTg5MjIzNTZhYTEzNjUxMzJhZWYzMWZhYWY2MDNm
NzQ1NDI3Li4wNDYwOTk4ZTBhYTA1OTkxMTA0ZjhhNTlhYmQ0NTk5MWJhYTczYTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApA
QCAtNDAsOSArNDAsMTkgQEAgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVz
c29yTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXAKIHsKICAgICBhZGRJbnB1
dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKICAgICBhZGRPdXRwdXQoYWRv
cHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAyKSkpOwotICAgIAorCiAgICAgc2V0Tm9k
ZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwotICAgIAorCisgICAgbV90aHJlc2hv
bGQgPSBBdWRpb1BhcmFtOjpjcmVhdGUoInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CisgICAg
bV9rbmVlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKCJrbmVlIiwgMzMsIDAsIDQwKTsKKyAgICBtX3Jh
dGlvID0gQXVkaW9QYXJhbTo6Y3JlYXRlKCJyYXRpbyIsIDE0LCAxLCAyMCk7CisgICAgbV9yZWR1
Y3Rpb24gPSBBdWRpb1BhcmFtOjpjcmVhdGUoInJlZHVjdGlvbiIsIDAsIC0yMCwgMCk7CisKKyAg
ICBtX3RocmVzaG9sZC0+c2V0Q29udGV4dChjb250ZXh0KTsKKyAgICBtX2tuZWUtPnNldENvbnRl
eHQoY29udGV4dCk7CisgICAgbV9yYXRpby0+c2V0Q29udGV4dChjb250ZXh0KTsKKyAgICBtX3Jl
ZHVjdGlvbi0+c2V0Q29udGV4dChjb250ZXh0KTsKKwogICAgIGluaXRpYWxpemUoKTsKIH0KIApA
QCAtNTYsNyArNjYsMTggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpwcm9jZXNzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IG91dHB1dCgw
KS0+YnVzKCk7CiAgICAgQVNTRVJUKG91dHB1dEJ1cyk7CiAKKyAgICBmbG9hdCB0aHJlc2hvbGQg
PSBtX3RocmVzaG9sZC0+dmFsdWUoKTsKKyAgICBmbG9hdCBrbmVlID0gbV9rbmVlLT52YWx1ZSgp
OworICAgIGZsb2F0IHJhdGlvID0gbV9yYXRpby0+dmFsdWUoKTsKKworICAgIG1fZHluYW1pY3ND
b21wcmVzc29yLT5zZXRQYXJhbWV0ZXJWYWx1ZShEeW5hbWljc0NvbXByZXNzb3I6OlBhcmFtVGhy
ZXNob2xkLCB0aHJlc2hvbGQpOworICAgIG1fZHluYW1pY3NDb21wcmVzc29yLT5zZXRQYXJhbWV0
ZXJWYWx1ZShEeW5hbWljc0NvbXByZXNzb3I6OlBhcmFtS25lZSwga25lZSk7CisgICAgbV9keW5h
bWljc0NvbXByZXNzb3ItPnNldFBhcmFtZXRlclZhbHVlKER5bmFtaWNzQ29tcHJlc3Nvcjo6UGFy
YW1SYXRpbywgcmF0aW8pOworCiAgICAgbV9keW5hbWljc0NvbXByZXNzb3ItPnByb2Nlc3MoaW5w
dXQoMCktPmJ1cygpLCBvdXRwdXRCdXMsIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICBmbG9hdCBy
ZWR1Y3Rpb24gPSBtX2R5bmFtaWNzQ29tcHJlc3Nvci0+cGFyYW1ldGVyVmFsdWUoRHluYW1pY3ND
b21wcmVzc29yOjpQYXJhbVJlZHVjdGlvbik7CisgICAgbV9yZWR1Y3Rpb24tPnNldFZhbHVlKHJl
ZHVjdGlvbik7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6cmVzZXQoKQpAQCAt
NjksNyArOTAsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmluaXRpYWxpemUoKQog
ICAgIGlmIChpc0luaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF1ZGlvTm9k
ZTo6aW5pdGlhbGl6ZSgpOyAgICAKKyAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKICAgICBt
X2R5bmFtaWNzQ29tcHJlc3NvciA9IGFkb3B0UHRyKG5ldyBEeW5hbWljc0NvbXByZXNzb3IodHJ1
ZSwgc2FtcGxlUmF0ZSgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCBkNzE4YWIzNDFjYzAxZTE4OGNmMjEzMDU2NzQ2
NWYwNDhiZGEwNWNiLi4zMmQzY2IxNzM1ZDMwODAyYmMzMWMwMzVmZGQxZDE5MjRkOTNiMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
CkBAIC0yNiwzMSArMjYsNDQgQEAKICNkZWZpbmUgRHluYW1pY3NDb21wcmVzc29yTm9kZV9oCiAK
ICNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIER5bmFtaWNz
Q29tcHJlc3NvcjsKLSAgICAKKwogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZSA6IHB1Ymxp
YyBBdWRpb05vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAorICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAg
IH0KLSAgICAKKwogICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoKTsKLSAgICAK
KwogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogCisgICAg
Ly8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCisgICAgQXVkaW9QYXJhbSog
dGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFt
KiBrbmVlKCkgeyByZXR1cm4gbV9rbmVlLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogcmF0aW8o
KSB7IHJldHVybiBtX3JhdGlvLmdldCgpOyB9CisKKyAgICAvLyBBbW91bnQgYnkgd2hpY2ggdGhl
IGNvbXByZXNzb3IgaXMgY3VycmVudGx5IGNvbXByZXNzaW5nIHRoZSBzaWduYWwgaW4gZGVjaWJl
bHMuCisgICAgQXVkaW9QYXJhbSogcmVkdWN0aW9uKCkgeyByZXR1cm4gbV9yZWR1Y3Rpb24uZ2V0
KCk7IH0KKwogcHJpdmF0ZToKICAgICBEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4
dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgT3duUHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4g
bV9keW5hbWljc0NvbXByZXNzb3I7CisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xk
OworICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2tuZWU7CisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+
IG1fcmF0aW87CisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fcmVkdWN0aW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmlkbAppbmRleCBkZDI1ZjEwYWJkYjNlOGRhNzU1OGMzZDY1ZTZk
M2M3MTViNmM2NDA5Li4xYjYyOGZjYTJhZTljYmQ2NGFlOWFlNTFkY2ExMTdiZWY1MmE0MjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmlkbApAQCAtMjcsNSArMjcsOSBAQCBtb2R1bGUgYXVkaW8gewogICAgICAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCiAgICAgICAgIEpTR2VuZXJhdGVUb0pTCiAgICAgXSBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlv
UGFyYW0gdGhyZXNob2xkOyAvLyBpbiBEZWNpYmVscworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9QYXJhbSByYXRpbzsgLy8gdW5pdC1sZXNzCisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1BhcmFtIHJlZHVjdGlvbjsgLy8gaW4gRGVjaWJlbHMKICAgICB9OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128832</attachid>
            <date>2012-02-24 17:12:49 -0800</date>
            <delta_ts>2012-02-24 18:32:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78937-20120224171251.patch</filename>
            <type>text/plain</type>
            <size>20431</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkNmFkMTE5NzAxMTQ1
N2U2Yzc1NDZlZWMwMmU4YmFlNjkwMDkwMi4uOTJiYzVkMGRjZjIyMTZiYjNjM2UwZWY1NDA4ZDI3
Y2Q3NzEwMWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTI0ICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN0YXRp
YyBjb21wcmVzc2lvbiBjdXJ2ZSBwYXJhbWV0ZXJzIGZvciBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODkzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFt
aWNzQ29tcHJlc3Nvcjo6c2V0UGFyYW1ldGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OmluaXRpYWxpemVQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpEeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpzZXRQcmVEZWxheVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yS2VybmVsOjprbmVlQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yS2VybmVsOjpzYXR1cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWw6OnNsb3BlQXQpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yS2VybmVsOjprQXRTbG9wZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWw6OnVwZGF0ZVN0YXRpY0N1cnZlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoRHluYW1pY3NDb21w
cmVzc29yS2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bDo6bWV0ZXJpbmdHYWluKToKKyAgICAgICAgKiB3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6cHJvY2Vzcyk6CisgICAgICAgICogd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoRHluYW1pY3NDb21wcmVzc29yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjp0aHJlc2hvbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6a25lZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpyYXRpbyk6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpyZWR1Y3Rpb24pOgorICAgICAgICAqIHdlYmF1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsOgorCiAyMDEyLTAyLTI0ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBUZXh0VHJhY2tDdWUg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmNwcAppbmRleCBkMGYyN2IwNWYzMDliODFjMTI1NzI3Zjk1ZWY0NzEwMjRjYjJkMjQw
Li5iYzA4M2Y0ZGY4MjdmNmMzNWVkMDNhODIxYWI3NjkyMTI3NDRhODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAg
LTUzLDEyICs1MywxOSBAQCBEeW5hbWljc0NvbXByZXNzb3I6OkR5bmFtaWNzQ29tcHJlc3Nvcihm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZQogICAgIGluaXRpYWxpemVQ
YXJhbWV0ZXJzKCk7CiB9CiAKK3ZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXRQYXJhbWV0ZXJW
YWx1ZSh1bnNpZ25lZCBwYXJhbWV0ZXJJRCwgZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKHBhcmFt
ZXRlcklEIDwgUGFyYW1MYXN0KQorICAgICAgICBtX3BhcmFtZXRlcnNbcGFyYW1ldGVySURdID0g
dmFsdWU7Cit9CisKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjppbml0aWFsaXplUGFyYW1ldGVy
cygpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZXMgY29tcHJlc3NvciB0byBkZWZhdWx0IHZhbHVlcy4K
ICAgICAKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1UaHJlc2hvbGRdID0gLTI0OyAvLyBkQgotICAg
IG1fcGFyYW1ldGVyc1tQYXJhbUhlYWRyb29tXSA9IDIxOyAvLyBkQgorICAgIG1fcGFyYW1ldGVy
c1tQYXJhbUtuZWVdID0gMzA7IC8vIGRCCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUmF0aW9dID0g
MTI7IC8vIHVuaXQtbGVzcwogICAgIG1fcGFyYW1ldGVyc1tQYXJhbUF0dGFja10gPSAwLjAwM2Y7
IC8vIHNlY29uZHMKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxlYXNlXSA9IDAuMjUwZjsgLy8g
c2Vjb25kcwogICAgIG1fcGFyYW1ldGVyc1tQYXJhbVByZURlbGF5XSA9IDAuMDA2ZjsgLy8gc2Vj
b25kcwpAQCAtNzQsNiArODEsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6aW5pdGlhbGl6
ZVBhcmFtZXRlcnMoKQogICAgIG1fcGFyYW1ldGVyc1tQYXJhbUZpbHRlckFuY2hvcl0gPSAxNTAw
MCAvIG55cXVpc3QoKTsKICAgICAKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1Qb3N0R2Fpbl0gPSAw
OyAvLyBkQgorICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlZHVjdGlvbl0gPSAwOyAvLyBkQgogCiAg
ICAgLy8gTGluZWFyIGNyb3NzZmFkZSAoMCAtPiAxKS4KICAgICBtX3BhcmFtZXRlcnNbUGFyYW1F
ZmZlY3RCbGVuZF0gPSAxOwpAQCAtMTgwLDcgKzE4OCw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVz
c29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvCiAgICAgfQogCiAgICAgZmxvYXQgZGJUaHJlc2hvbGQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJh
bVRocmVzaG9sZCk7Ci0gICAgZmxvYXQgZGJIZWFkcm9vbSA9IHBhcmFtZXRlclZhbHVlKFBhcmFt
SGVhZHJvb20pOworICAgIGZsb2F0IGRiS25lZSA9IHBhcmFtZXRlclZhbHVlKFBhcmFtS25lZSk7
CisgICAgZmxvYXQgcmF0aW8gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJhdGlvKTsKICAgICBmbG9h
dCBhdHRhY2tUaW1lID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1BdHRhY2spOwogICAgIGZsb2F0IHJl
bGVhc2VUaW1lID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNlKTsKICAgICBmbG9hdCBwcmVE
ZWxheVRpbWUgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVByZURlbGF5KTsKQEAgLTIwNiw3ICsyMTUs
OCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291
cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpbwogICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lc1RvUHJvY2VzcywKIAogICAgICAgICAgICAgICAgICAgICAgICAgIGRiVGhyZXNob2xkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGRiSGVhZHJvb20sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgZGJLbmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGlvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGF0dGFja1RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVs
ZWFzZVRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlRGVsYXlUaW1lLApAQCAtMjE4
LDYgKzIyOCw5IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlv
QnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVsZWFzZVpvbmUzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2Vab25l
NAogICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
CisgICAgLy8gVXBkYXRlIHRoZSBjb21wcmVzc2lvbiBhbW91bnQuICAgICAgICAgICAgICAgICAg
ICAgCisgICAgc2V0UGFyYW1ldGVyVmFsdWUoUGFyYW1SZWR1Y3Rpb24sIG1fY29tcHJlc3Nvci5t
ZXRlcmluZ0dhaW4oKSk7CiAKICAgICAvLyBBcHBseSBkZS1lbXBoYXNpcyBmaWx0ZXIuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRl
eCBkOTQ5ZjMwNjg5ZjBhODVmNzVlM2MwMzEzNzlkODZkNTc3ZWRlOTQ3Li5iMzUyOTRkNmFiY2Qz
MTg0MDA1MjhjMjcyNzRhNzdmM2Q1NmQzMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDgsNyArNDgsOCBAQCBjbGFz
cyBEeW5hbWljc0NvbXByZXNzb3IgewogcHVibGljOgogICAgIGVudW0gewogICAgICAgICBQYXJh
bVRocmVzaG9sZCwKLSAgICAgICAgUGFyYW1IZWFkcm9vbSwKKyAgICAgICAgUGFyYW1LbmVlLAor
ICAgICAgICBQYXJhbVJhdGlvLAogICAgICAgICBQYXJhbUF0dGFjaywKICAgICAgICAgUGFyYW1S
ZWxlYXNlLAogICAgICAgICBQYXJhbVByZURlbGF5LApAQCAtNjEsNiArNjIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFBhcmFtRmlsdGVyU3RhZ2VSYXRpbywKICAgICAgICAgUGFyYW1GaWx0ZXJBbmNo
b3IsCiAgICAgICAgIFBhcmFtRWZmZWN0QmxlbmQsCisgICAgICAgIFBhcmFtUmVkdWN0aW9uLAog
ICAgICAgICBQYXJhbUxhc3QKICAgICB9OwogCkBAIC03MCw2ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkKTsK
IAorICAgIHZvaWQgc2V0UGFyYW1ldGVyVmFsdWUodW5zaWduZWQgcGFyYW1ldGVySUQsIGZsb2F0
IHZhbHVlKTsKICAgICBmbG9hdCBwYXJhbWV0ZXJWYWx1ZSh1bnNpZ25lZCBwYXJhbWV0ZXJJRCk7
CiAKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcAppbmRleCAzZTk0M2QxMjA3NTdhYTdlOWZmMTZlYjU0NTA3YmNh
ZDU1YzQzOGIxLi45YTU3NGM4MjA2ZjE1MDZhMzEwYmM3NDQ5NDczMjI3ZWUyOTZiYjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5jcHAKQEAgLTQ1LDI0ICs0NSwyOSBAQCB1c2luZyBuYW1lc3BhY2UgQXVk
aW9VdGlsaXRpZXM7CiAKIC8vIE1ldGVyaW5nIGhpdHMgcGVha3MgaW5zdGFudGx5LCBidXQgcmVs
ZWFzZXMgdGhpcyBmYXN0IChpbiBzZWNvbmRzKS4KIGNvbnN0IGZsb2F0IG1ldGVyaW5nUmVsZWFz
ZVRpbWVDb25zdGFudCA9IDAuMzI1ZjsKLSAgICAKLS8vIEV4cG9uZW50aWFsIHNhdHVyYXRpb24g
Y3VydmUuCi1zdGF0aWMgZmxvYXQgc2F0dXJhdGUoZmxvYXQgeCwgZmxvYXQgaykKLXsKLSAgICBy
ZXR1cm4gMSAtIGV4cCgtayAqIHgpOwotfQorCitjb25zdCBmbG9hdCB1bmluaXRpYWxpemVkVmFs
dWUgPSAtMTsKIAogRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6
IG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9sYXN0UHJlRGVsYXlGcmFtZXMoRGVm
YXVsdFByZURlbGF5RnJhbWVzKQogICAgICwgbV9wcmVEZWxheVJlYWRJbmRleCgwKQogICAgICwg
bV9wcmVEZWxheVdyaXRlSW5kZXgoRGVmYXVsdFByZURlbGF5RnJhbWVzKQorICAgICwgbV9yYXRp
byh1bmluaXRpYWxpemVkVmFsdWUpCisgICAgLCBtX3Nsb3BlKHVuaW5pdGlhbGl6ZWRWYWx1ZSkK
KyAgICAsIG1fbGluZWFyVGhyZXNob2xkKHVuaW5pdGlhbGl6ZWRWYWx1ZSkKKyAgICAsIG1fZGJU
aHJlc2hvbGQodW5pbml0aWFsaXplZFZhbHVlKQorICAgICwgbV9kYktuZWUodW5pbml0aWFsaXpl
ZFZhbHVlKQorICAgICwgbV9rbmVlVGhyZXNob2xkKHVuaW5pdGlhbGl6ZWRWYWx1ZSkKKyAgICAs
IG1fa25lZVRocmVzaG9sZERiKHVuaW5pdGlhbGl6ZWRWYWx1ZSkKKyAgICAsIG1feWtuZWVUaHJl
c2hvbGREYih1bmluaXRpYWxpemVkVmFsdWUpCisgICAgLCBtX0sodW5pbml0aWFsaXplZFZhbHVl
KQogewogICAgIHNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICAv
LyBJbml0aWFsaXplcyBtb3N0IG1lbWJlciB2YXJpYWJsZXMKICAgICByZXNldCgpOwotICAgIAor
CiAgICAgbV9tZXRlcmluZ1JlbGVhc2VLID0gZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVS
YXRlKG1ldGVyaW5nUmVsZWFzZVRpbWVDb25zdGFudCwgc2FtcGxlUmF0ZSk7CiB9CiAKQEAgLTgy
LDcgKzg3LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGlt
ZShmbG9hdCBwcmVEZWxheVRpbWUpCiAgICAgdW5zaWduZWQgcHJlRGVsYXlGcmFtZXMgPSBwcmVE
ZWxheVRpbWUgKiBzYW1wbGVSYXRlKCk7CiAgICAgaWYgKHByZURlbGF5RnJhbWVzID4gTWF4UHJl
RGVsYXlGcmFtZXMgLSAxKQogICAgICAgICBwcmVEZWxheUZyYW1lcyA9IE1heFByZURlbGF5RnJh
bWVzIC0gMTsKLSAgICAgICAgCisKICAgICBpZiAobV9sYXN0UHJlRGVsYXlGcmFtZXMgIT0gcHJl
RGVsYXlGcmFtZXMpIHsKICAgICAgICAgbV9sYXN0UHJlRGVsYXlGcmFtZXMgPSBwcmVEZWxheUZy
YW1lczsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJlRGVsYXlCdWZmZXJz
LnNpemUoKTsgKytpKQpAQCAtOTMsMTMgKzk4LDExNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0IHByZURlbGF5VGltZSkKICAgICB9CiB9CiAK
Ky8vIEV4cG9uZW50aWFsIGN1cnZlIGZvciB0aGUga25lZS4KKy8vIEl0IGlzIDFzdCBkZXJpdmF0
aXZlIG1hdGNoZWQgYXQgbV9saW5lYXJUaHJlc2hvbGQgYW5kIGFzeW1wdG90aWNhbGx5IGFwcHJv
YWNoZXMgdGhlIHZhbHVlIG1fbGluZWFyVGhyZXNob2xkICsgMSAvIGsuCitmbG9hdCBEeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWw6OmtuZWVDdXJ2ZShmbG9hdCB4LCBmbG9hdCBrKQoreworICAgIC8v
IExpbmVhciB1cCB0byB0aHJlc2hvbGQuCisgICAgaWYgKHggPCBtX2xpbmVhclRocmVzaG9sZCkK
KyAgICAgICAgcmV0dXJuIHg7CisKKyAgICByZXR1cm4gbV9saW5lYXJUaHJlc2hvbGQgKyAoMSAt
IGV4cGYoLWsgKiAoeCAtIG1fbGluZWFyVGhyZXNob2xkKSkpIC8gazsKK30KKworLy8gRnVsbCBj
b21wcmVzc2lvbiBjdXJ2ZSB3aXRoIGNvbnN0YW50IHJhdGlvIGFmdGVyIGtuZWUuCitmbG9hdCBE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNhdHVyYXRlKGZsb2F0IHgsIGZsb2F0IGspCit7Cisg
ICAgZmxvYXQgeTsKKworICAgIGlmICh4IDwgbV9rbmVlVGhyZXNob2xkKQorICAgICAgICB5ID0g
a25lZUN1cnZlKHgsIGspOworICAgIGVsc2UgeworICAgICAgICAvLyBDb25zdGFudCByYXRpbyBh
ZnRlciBrbmVlLgorICAgICAgICBmbG9hdCB4RGIgPSBsaW5lYXJUb0RlY2liZWxzKHgpOworICAg
ICAgICBmbG9hdCB5RGIgPSBtX3lrbmVlVGhyZXNob2xkRGIgKyBtX3Nsb3BlICogKHhEYiAtIG1f
a25lZVRocmVzaG9sZERiKTsKKworICAgICAgICB5ID0gZGVjaWJlbHNUb0xpbmVhcih5RGIpOwor
ICAgIH0KKworICAgIHJldHVybiB5OworfQorCisvLyBBcHByb3hpbWF0ZSAxc3QgZGVyaXZhdGl2
ZSB3aXRoIGlucHV0IGFuZCBvdXRwdXQgZXhwcmVzc2VkIGluIGRCLgorLy8gVGhpcyBzbG9wZSBp
cyBlcXVhbCB0byB0aGUgaW52ZXJzZSBvZiB0aGUgY29tcHJlc3Npb24gInJhdGlvIi4KKy8vIElu
IG90aGVyIHdvcmRzLCBhIGNvbXByZXNzaW9uIHJhdGlvIG9mIDIwIHdvdWxkIGJlIGEgc2xvcGUg
b2YgMS8yMC4KK2Zsb2F0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2xvcGVBdChmbG9hdCB4
LCBmbG9hdCBrKQoreworICAgIGlmICh4IDwgbV9saW5lYXJUaHJlc2hvbGQpCisgICAgICAgIHJl
dHVybiAxOworCisgICAgZmxvYXQgeDIgPSB4ICogMS4wMDE7CisKKyAgICBmbG9hdCB4RGIgPSBs
aW5lYXJUb0RlY2liZWxzKHgpOworICAgIGZsb2F0IHgyRGIgPSBsaW5lYXJUb0RlY2liZWxzKHgy
KTsKKworICAgIGZsb2F0IHlEYiA9IGxpbmVhclRvRGVjaWJlbHMoa25lZUN1cnZlKHgsIGspKTsK
KyAgICBmbG9hdCB5MkRiID0gbGluZWFyVG9EZWNpYmVscyhrbmVlQ3VydmUoeDIsIGspKTsKKwor
ICAgIGZsb2F0IG0gPSAoeTJEYiAtIHlEYikgLyAoeDJEYiAtIHhEYik7CisKKyAgICByZXR1cm4g
bTsKK30KKworZmxvYXQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjprQXRTbG9wZShmbG9hdCBk
ZXNpcmVkU2xvcGUpCit7CisgICAgZmxvYXQgeERiID0gbV9kYlRocmVzaG9sZCArIG1fZGJLbmVl
OworICAgIGZsb2F0IHggPSBkZWNpYmVsc1RvTGluZWFyKHhEYik7CisKKyAgICAvLyBBcHByb3hp
bWF0ZSBrIGdpdmVuIGluaXRpYWwgdmFsdWVzLgorICAgIGZsb2F0IG1pbksgPSAwLjE7CisgICAg
ZmxvYXQgbWF4SyA9IDEwMDAwOworICAgIGZsb2F0IGsgPSA1OworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAxNTsgKytpKSB7CisgICAgICAgIC8vIEEgaGlnaCB2YWx1ZSBmb3IgayB3aWxsIG1v
cmUgcXVpY2tseSBhc3ltcHRvdGljYWxseSBhcHByb2FjaCBhIHNsb3BlIG9mIDAuCisgICAgICAg
IGZsb2F0IHNsb3BlID0gc2xvcGVBdCh4LCBrKTsKKworICAgICAgICBpZiAoc2xvcGUgPCBkZXNp
cmVkU2xvcGUpIHsKKyAgICAgICAgICAgIC8vIGsgaXMgdG9vIGhpZ2guCisgICAgICAgICAgICBt
YXhLID0gazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGsgaXMgdG9vIGxvdy4K
KyAgICAgICAgICAgIG1pbksgPSBrOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmUtY2FsY3Vs
YXRlIGJhc2VkIG9uIGdlb21ldHJpYyBtZWFuLgorICAgICAgICBrID0gc3FydChtaW5LICogbWF4
Syk7CisgICAgfQorCisgICAgcmV0dXJuIGs7Cit9CisKK2Zsb2F0IER5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbDo6dXBkYXRlU3RhdGljQ3VydmVQYXJhbWV0ZXJzKGZsb2F0IGRiVGhyZXNob2xkLCBm
bG9hdCBkYktuZWUsIGZsb2F0IHJhdGlvKQoreworICAgIGlmIChkYlRocmVzaG9sZCAhPSBtX2Ri
VGhyZXNob2xkIHx8IGRiS25lZSAhPSBtX2RiS25lZSB8fCByYXRpbyAhPSBtX3JhdGlvKSB7Cisg
ICAgICAgIC8vIFRocmVzaG9sZCBhbmQga25lZS4KKyAgICAgICAgbV9kYlRocmVzaG9sZCA9IGRi
VGhyZXNob2xkOworICAgICAgICBtX2xpbmVhclRocmVzaG9sZCA9IGRlY2liZWxzVG9MaW5lYXIo
ZGJUaHJlc2hvbGQpOworICAgICAgICBtX2RiS25lZSA9IGRiS25lZTsKKworICAgICAgICAvLyBD
b21wdXRlIGtuZWUgcGFyYW1ldGVycy4KKyAgICAgICAgbV9yYXRpbyA9IHJhdGlvOworICAgICAg
ICBtX3Nsb3BlID0gMSAvIG1fcmF0aW87CisKKyAgICAgICAgZmxvYXQgayA9IGtBdFNsb3BlKDEg
LyBtX3JhdGlvKTsKKworICAgICAgICBtX2tuZWVUaHJlc2hvbGREYiA9IGRiVGhyZXNob2xkICsg
ZGJLbmVlOworICAgICAgICBtX2tuZWVUaHJlc2hvbGQgPSBkZWNpYmVsc1RvTGluZWFyKG1fa25l
ZVRocmVzaG9sZERiKTsKKworICAgICAgICBtX3lrbmVlVGhyZXNob2xkRGIgPSBsaW5lYXJUb0Rl
Y2liZWxzKGtuZWVDdXJ2ZShtX2tuZWVUaHJlc2hvbGQsIGspKTsKKworICAgICAgICBtX0sgPSBr
OworICAgIH0KKyAgICByZXR1cm4gbV9LOworfQorCiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlQ2hhbm5lbHNbXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbkNoYW5uZWxzW10sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJh
bWVzVG9Qcm9jZXNzLAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBkYlRocmVzaG9sZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IGRiSGVhZHJvb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBkYktuZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCByYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IGF0dGFja1RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCByZWxlYXNlVGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHByZURlbGF5VGltZSwKQEAgLTExOSwxNyArMjI4LDEyIEBAIHZvaWQgRHluYW1pY3NDb21w
cmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VDaGFubmVsc1tdLAogICAgIGZsb2F0
IGRyeU1peCA9IDEgLSBlZmZlY3RCbGVuZDsKICAgICBmbG9hdCB3ZXRNaXggPSBlZmZlY3RCbGVu
ZDsKIAotICAgIC8vIFRocmVzaG9sZCBhbmQgaGVhZHJvb20uCi0gICAgZmxvYXQgbGluZWFyVGhy
ZXNob2xkID0gZGVjaWJlbHNUb0xpbmVhcihkYlRocmVzaG9sZCk7Ci0gICAgZmxvYXQgbGluZWFy
SGVhZHJvb20gPSBkZWNpYmVsc1RvTGluZWFyKGRiSGVhZHJvb20pOworICAgIGZsb2F0IGsgPSB1
cGRhdGVTdGF0aWNDdXJ2ZVBhcmFtZXRlcnMoZGJUaHJlc2hvbGQsIGRiS25lZSwgcmF0aW8pOwog
CiAgICAgLy8gTWFrZXVwIGdhaW4uCi0gICAgZmxvYXQgbWF4aW11bSA9IDEuMDVmICogbGluZWFy
SGVhZHJvb20gKiBsaW5lYXJUaHJlc2hvbGQ7Ci0gICAgZmxvYXQga2sgPSAobWF4aW11bSAtIGxp
bmVhclRocmVzaG9sZCk7Ci0gICAgZmxvYXQgaW52ZXJzZUtLID0gMSAvIGtrOwotCi0gICAgZmxv
YXQgZnVsbFJhbmdlR2FpbiA9IChsaW5lYXJUaHJlc2hvbGQgKyBrayAqIHNhdHVyYXRlKDEgLSBs
aW5lYXJUaHJlc2hvbGQsIDEpKTsKKyAgICBmbG9hdCBmdWxsUmFuZ2VHYWluID0gc2F0dXJhdGUo
MSwgayk7CiAgICAgZmxvYXQgZnVsbFJhbmdlTWFrZXVwR2FpbiA9IDEgLyBmdWxsUmFuZ2VHYWlu
OworCiAgICAgLy8gRW1waXJpY2FsL3BlcmNlcHR1YWwgdHVuaW5nLgogICAgIGZ1bGxSYW5nZU1h
a2V1cEdhaW4gPSBwb3dmKGZ1bGxSYW5nZU1ha2V1cEdhaW4sIDAuNmYpOwogCkBAIC0xNDEsNyAr
MjQ1LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNv
dXJjZUNoYW5uZWxzW10sCiAKICAgICAvLyBSZWxlYXNlIHBhcmFtZXRlcnMuCiAgICAgZmxvYXQg
cmVsZWFzZUZyYW1lcyA9IHNhbXBsZVJhdGUgKiByZWxlYXNlVGltZTsKLSAgICAKKwogICAgIC8v
IERldGVjdG9yIHJlbGVhc2UgdGltZS4KICAgICBmbG9hdCBzYXRSZWxlYXNlVGltZSA9IDAuMDAy
NWY7CiAgICAgZmxvYXQgc2F0UmVsZWFzZUZyYW1lcyA9IHNhdFJlbGVhc2VUaW1lICogc2FtcGxl
UmF0ZTsKQEAgLTE3MCw3ICsyNzQsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6
cHJvY2VzcyhmbG9hdCogc291cmNlQ2hhbm5lbHNbXSwKICAgICAvLyB5IGNhbGN1bGF0ZXMgYWRh
cHRpdmUgcmVsZWFzZSBmcmFtZXMgZGVwZW5kaW5nIG9uIHRoZSBhbW91bnQgb2YgY29tcHJlc3Np
b24uCiAKICAgICBzZXRQcmVEZWxheVRpbWUocHJlRGVsYXlUaW1lKTsKLSAgICAKKwogICAgIGNv
bnN0IGludCBuRGl2aXNpb25GcmFtZXMgPSAzMjsKIAogICAgIGNvbnN0IGludCBuRGl2aXNpb25z
ID0gZnJhbWVzVG9Qcm9jZXNzIC8gbkRpdmlzaW9uRnJhbWVzOwpAQCAtMjg1LDkgKzM4OSwxMCBA
QCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlQ2hh
bm5lbHNbXSwKICAgICAgICAgICAgICAgICBmbG9hdCBhYnNJbnB1dCA9IHNjYWxlZElucHV0ID4g
MCA/IHNjYWxlZElucHV0IDogLXNjYWxlZElucHV0OwogCiAgICAgICAgICAgICAgICAgLy8gUHV0
IHRocm91Z2ggc2hhcGluZyBjdXJ2ZS4KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGxpbmVh
ciB1cCB0byB0aGUgdGhyZXNob2xkLCB0aGVuIGV4cG9uZW50aWFsbHkgYXBwcm9hY2hlcyB0aGUg
bWF4aW11bSAoaGVhZHJvb20gYW1vdW50IGFib3ZlIHRocmVzaG9sZCkuCi0gICAgICAgICAgICAg
ICAgLy8gVGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgdGhyZXNob2xkIHRvIHRoZSBleHBvbmVudGlh
bCBwb3J0aW9uIGlzIHNtb290aCAoMXN0IGRlcml2YXRpdmUgbWF0Y2hlZCkuCi0gICAgICAgICAg
ICAgICAgZmxvYXQgc2hhcGVkSW5wdXQgPSBhYnNJbnB1dCA8IGxpbmVhclRocmVzaG9sZCA/IGFi
c0lucHV0IDogbGluZWFyVGhyZXNob2xkICsga2sgKiBzYXR1cmF0ZShhYnNJbnB1dCAtIGxpbmVh
clRocmVzaG9sZCwgaW52ZXJzZUtLKTsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGxpbmVh
ciB1cCB0byB0aGUgdGhyZXNob2xkLCB0aGVuIGVudGVycyBhICJrbmVlIiBwb3J0aW9uIGZvbGxv
d2VkIGJ5IHRoZSAicmF0aW8iIHBvcnRpb24uCisgICAgICAgICAgICAgICAgLy8gVGhlIHRyYW5z
aXRpb24gZnJvbSB0aGUgdGhyZXNob2xkIHRvIHRoZSBrbmVlIGlzIHNtb290aCAoMXN0IGRlcml2
YXRpdmUgbWF0Y2hlZCkuCisgICAgICAgICAgICAgICAgLy8gVGhlIHRyYW5zaXRpb24gZnJvbSB0
aGUga25lZSB0byB0aGUgcmF0aW8gcG9ydGlvbiBpcyBzbW9vdGggKDFzdCBkZXJpdmF0aXZlIG1h
dGNoZWQpLgorICAgICAgICAgICAgICAgIGZsb2F0IHNoYXBlZElucHV0ID0gc2F0dXJhdGUoYWJz
SW5wdXQsIGspOwogCiAgICAgICAgICAgICAgICAgZmxvYXQgYXR0ZW51YXRpb24gPSBhYnNJbnB1
dCA8PSAwLjAwMDFmID8gMSA6IHNoYXBlZElucHV0IC8gYWJzSW5wdXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVs
LmgKaW5kZXggZGE4ZTRjOGJlZTljNWQxNzlhODg0NDA3MDVlMjJjM2Y2MTk5ZGEyZi4uNjQ1NDI1
MTA0YmQ0MzIyZDkyMGQ5ZGFiZWUwYzAyMTZhYTdkODI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKQEAg
LTQ5LDcgKzQ5LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNU
b1Byb2Nlc3MsCiAKICAgICAgICAgICAgICAgICAgZmxvYXQgZGJUaHJlc2hvbGQsCi0gICAgICAg
ICAgICAgICAgIGZsb2F0IGRiSGVhZHJvb20sCisgICAgICAgICAgICAgICAgIGZsb2F0IGRiS25l
ZSwKKyAgICAgICAgICAgICAgICAgZmxvYXQgcmF0aW8sCiAgICAgICAgICAgICAgICAgIGZsb2F0
IGF0dGFja1RpbWUsCiAgICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2VUaW1lLAogICAgICAg
ICAgICAgICAgICBmbG9hdCBwcmVEZWxheVRpbWUsCkBAIC02OCw2ICs2OSw4IEBAIHB1YmxpYzoK
IAogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
IAorICAgIGZsb2F0IG1ldGVyaW5nR2FpbigpIGNvbnN0IHsgcmV0dXJuIG1fbWV0ZXJpbmdHYWlu
OyB9CisKIHByb3RlY3RlZDoKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAKQEAgLTkwLDYgKzkz
LDM1IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9wcmVEZWxheVdyaXRlSW5kZXg7CiAKICAgICBm
bG9hdCBtX21heEF0dGFja0NvbXByZXNzaW9uRGlmZkRiOworCisgICAgLy8gU3RhdGljIGNvbXBy
ZXNzaW9uIGN1cnZlLgorICAgIGZsb2F0IGtuZWVDdXJ2ZShmbG9hdCB4LCBmbG9hdCBrKTsKKyAg
ICBmbG9hdCBzYXR1cmF0ZShmbG9hdCB4LCBmbG9hdCBrKTsKKyAgICBmbG9hdCBzbG9wZUF0KGZs
b2F0IHgsIGZsb2F0IGspOworICAgIGZsb2F0IGtBdFNsb3BlKGZsb2F0IGRlc2lyZWRTbG9wZSk7
CisKKyAgICBmbG9hdCB1cGRhdGVTdGF0aWNDdXJ2ZVBhcmFtZXRlcnMoZmxvYXQgZGJUaHJlc2hv
bGQsIGZsb2F0IGRiS25lZSwgZmxvYXQgcmF0aW8pOworCisgICAgLy8gQW1vdW50IG9mIGlucHV0
IGNoYW5nZSBpbiBkQiByZXF1aXJlZCBmb3IgMSBkQiBvZiBvdXRwdXQgY2hhbmdlLgorICAgIC8v
IFRoaXMgYXBwbGllcyB0byB0aGUgcG9ydGlvbiBvZiB0aGUgY3VydmUgYWJvdmUgbV9rbmVlVGhy
ZXNob2xkRGIgKHNlZSBiZWxvdykuCisgICAgZmxvYXQgbV9yYXRpbzsKKyAgICBmbG9hdCBtX3Ns
b3BlOyAvLyBJbnZlcnNlIHJhdGlvLgorCisgICAgLy8gVGhlIGlucHV0IHRvIG91dHB1dCBjaGFu
Z2UgYmVsb3cgdGhlIHRocmVzaG9sZCBpcyBsaW5lYXIgMToxLgorICAgIGZsb2F0IG1fbGluZWFy
VGhyZXNob2xkOworICAgIGZsb2F0IG1fZGJUaHJlc2hvbGQ7CisKKyAgICAvLyBtX2RiS25lZSBp
cyB0aGUgbnVtYmVyIG9mIGRCIGFib3ZlIHRoZSB0aHJlc2hvbGQgYmVmb3JlIHdlIGVudGVyIHRo
ZSAicmF0aW8iIHBvcnRpb24gb2YgdGhlIGN1cnZlLgorICAgIC8vIG1fa25lZVRocmVzaG9sZERi
ID0gbV9kYlRocmVzaG9sZCArIG1fZGJLbmVlCisgICAgLy8gVGhlIHBvcnRpb24gYmV0d2VlbiBt
X2RiVGhyZXNob2xkIGFuZCBtX2tuZWVUaHJlc2hvbGREYiBpcyB0aGUgInNvZnQga25lZSIgcG9y
dGlvbiBvZiB0aGUgY3VydmUKKyAgICAvLyB3aGljaCB0cmFuc2l0aW9ucyBzbW9vdGhseSBmcm9t
IHRoZSBsaW5lYXIgcG9ydGlvbiB0byB0aGUgcmF0aW8gcG9ydGlvbi4KKyAgICBmbG9hdCBtX2Ri
S25lZTsKKyAgICBmbG9hdCBtX2tuZWVUaHJlc2hvbGQ7CisgICAgZmxvYXQgbV9rbmVlVGhyZXNo
b2xkRGI7CisgICAgZmxvYXQgbV95a25lZVRocmVzaG9sZERiOworCisgICAgLy8gSW50ZXJuYWwg
cGFyYW1ldGVyIGZvciB0aGUga25lZSBwb3J0aW9uIG9mIHRoZSBjdXJ2ZS4KKyAgICBmbG9hdCBt
X0s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDI2Mzc1NTU5NWNlM2Q4
ZTU5OTg3ZmQ4MDJiYTc5MjlhODk1ODYzZmUuLjVhZmUyZDY4MzExNjNmZTYzYzA0MjJkOTRmZTg0
YWM2NWU5NWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCkBAIC00Myw5ICs0MywxOSBAQCBEeW5hbWljc0NvbXByZXNzb3JO
b2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQg
c2FtcAogewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkp
OwogICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIGRlZmF1
bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSkpOwotICAgIAorCiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwotICAgIAorCisgICAgbV90aHJlc2hvbGQgPSBBdWRp
b1BhcmFtOjpjcmVhdGUoInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CisgICAgbV9rbmVlID0g
QXVkaW9QYXJhbTo6Y3JlYXRlKCJrbmVlIiwgMzAsIDAsIDQwKTsKKyAgICBtX3JhdGlvID0gQXVk
aW9QYXJhbTo6Y3JlYXRlKCJyYXRpbyIsIDEyLCAxLCAyMCk7CisgICAgbV9yZWR1Y3Rpb24gPSBB
dWRpb1BhcmFtOjpjcmVhdGUoInJlZHVjdGlvbiIsIDAsIC0yMCwgMCk7CisKKyAgICBtX3RocmVz
aG9sZC0+c2V0Q29udGV4dChjb250ZXh0KTsKKyAgICBtX2tuZWUtPnNldENvbnRleHQoY29udGV4
dCk7CisgICAgbV9yYXRpby0+c2V0Q29udGV4dChjb250ZXh0KTsKKyAgICBtX3JlZHVjdGlvbi0+
c2V0Q29udGV4dChjb250ZXh0KTsKKwogICAgIGluaXRpYWxpemUoKTsKIH0KIApAQCAtNTksNyAr
NjksMTggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCiAgICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IG91dHB1dCgwKS0+YnVzKCk7
CiAgICAgQVNTRVJUKG91dHB1dEJ1cyk7CiAKKyAgICBmbG9hdCB0aHJlc2hvbGQgPSBtX3RocmVz
aG9sZC0+dmFsdWUoKTsKKyAgICBmbG9hdCBrbmVlID0gbV9rbmVlLT52YWx1ZSgpOworICAgIGZs
b2F0IHJhdGlvID0gbV9yYXRpby0+dmFsdWUoKTsKKworICAgIG1fZHluYW1pY3NDb21wcmVzc29y
LT5zZXRQYXJhbWV0ZXJWYWx1ZShEeW5hbWljc0NvbXByZXNzb3I6OlBhcmFtVGhyZXNob2xkLCB0
aHJlc2hvbGQpOworICAgIG1fZHluYW1pY3NDb21wcmVzc29yLT5zZXRQYXJhbWV0ZXJWYWx1ZShE
eW5hbWljc0NvbXByZXNzb3I6OlBhcmFtS25lZSwga25lZSk7CisgICAgbV9keW5hbWljc0NvbXBy
ZXNzb3ItPnNldFBhcmFtZXRlclZhbHVlKER5bmFtaWNzQ29tcHJlc3Nvcjo6UGFyYW1SYXRpbywg
cmF0aW8pOworCiAgICAgbV9keW5hbWljc0NvbXByZXNzb3ItPnByb2Nlc3MoaW5wdXQoMCktPmJ1
cygpLCBvdXRwdXRCdXMsIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICBmbG9hdCByZWR1Y3Rpb24g
PSBtX2R5bmFtaWNzQ29tcHJlc3Nvci0+cGFyYW1ldGVyVmFsdWUoRHluYW1pY3NDb21wcmVzc29y
OjpQYXJhbVJlZHVjdGlvbik7CisgICAgbV9yZWR1Y3Rpb24tPnNldFZhbHVlKHJlZHVjdGlvbik7
CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IGQ3MThhYjM0
MWNjMDFlMTg4Y2YyMTMwNTY3NDY1ZjA0OGJkYTA1Y2IuLjMyZDNjYjE3MzVkMzA4MDJiYzMxYzAz
NWZkZDFkMTkyNGQ5M2IxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmgKQEAgLTI2LDMxICsyNiw0NCBAQAogI2RlZmluZSBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlX2gKIAogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgIkF1
ZGlvUGFyYW0uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwotICAgIAorCiBjbGFzcyBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQotICAgIAorCiAgICAgdmlydHVhbCB+RHluYW1pY3NDb21w
cmVzc29yTm9kZSgpOwotICAgIAorCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5p
bml0aWFsaXplKCk7CiAKKyAgICAvLyBTdGF0aWMgY29tcHJlc3Npb24gY3VydmUgcGFyYW1ldGVy
cy4KKyAgICBBdWRpb1BhcmFtKiB0aHJlc2hvbGQoKSB7IHJldHVybiBtX3RocmVzaG9sZC5nZXQo
KTsgfQorICAgIEF1ZGlvUGFyYW0qIGtuZWUoKSB7IHJldHVybiBtX2tuZWUuZ2V0KCk7IH0KKyAg
ICBBdWRpb1BhcmFtKiByYXRpbygpIHsgcmV0dXJuIG1fcmF0aW8uZ2V0KCk7IH0KKworICAgIC8v
IEFtb3VudCBieSB3aGljaCB0aGUgY29tcHJlc3NvciBpcyBjdXJyZW50bHkgY29tcHJlc3Npbmcg
dGhlIHNpZ25hbCBpbiBkZWNpYmVscy4KKyAgICBBdWRpb1BhcmFtKiByZWR1Y3Rpb24oKSB7IHJl
dHVybiBtX3JlZHVjdGlvbi5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBPd25QdHI8
RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsKKyAgICBSZWZQdHI8QXVk
aW9QYXJhbT4gbV90aHJlc2hvbGQ7CisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fa25lZTsKKyAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9yYXRpbzsKKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9y
ZWR1Y3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCmluZGV4IGZhYWQxM2Uz
YzNiMGM4NzBjNzBmZThlYTJmMjlmN2RmYjZiMzBmMDEuLjYwZDY0ZmRhMDc3ZTRhYzE3MGJjMDNj
MWVlOTZhM2IyZDgwMThiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCkBAIC0yNyw1ICsyNyw5IEBAIG1vZHVsZSBhdWRpbyB7
CiAgICAgICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QKICAgICBdIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgeworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSB0aHJlc2hvbGQ7IC8vIGluIERlY2liZWxz
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGtuZWU7IC8vIGluIERlY2li
ZWxzCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHJhdGlvOyAvLyB1bml0
LWxlc3MKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gcmVkdWN0aW9uOyAv
LyBpbiBEZWNpYmVscwogICAgIH07CiB9Cg==
</data>
<flag name="review"
          id="131332"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>