<?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>171431</bug_id>
          
          <creation_ts>2017-04-28 07:11:10 -0700</creation_ts>
          <short_desc>[GTK] Add GTK+ implementation of WebAutomationSession</short_desc>
          <delta_ts>2017-05-03 01:56:06 -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>WebKitGTK</component>
          <version>WebKit 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>171107</dependson>
    
    <dependson>171428</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>joepeck</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302565</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 07:11:10 -0700</bug_when>
    <thetext>Add platform dependent methods for GTK+ to synthesize events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302567</commentid>
    <comment_count>1</comment_count>
      <attachid>308528</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-28 07:14:22 -0700</bug_when>
    <thetext>Created attachment 308528
Patch

This won&apos;t apply because it depends on two other patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303313</commentid>
    <comment_count>2</comment_count>
      <attachid>308528</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-05-01 11:53:07 -0700</bug_when>
    <thetext>Comment on attachment 308528
Patch

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

This looks good to me, though I cannot really assess bugs in usage of GTK platform specifics. You probably want a GTK reviewer too.

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:231
&gt; +    // GTK+ doesn&apos;t keep track of the active modifiers when using synthesizez events.

Typo: synthesized.

&gt; Source/WebKit2/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:36
&gt; +static inline unsigned modifiersToEventState(WebEvent::Modifiers modifiers)

These probably don&apos;t need to be &apos;inline&apos;.

&gt; Source/WebKit2/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:51
&gt; +static inline unsigned mouseButtonToGdkButton(Inspector::Protocol::Automation::MouseButton button)

Ditto.

&gt; Source/WebKit2/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:86
&gt; +static void doMotionEvent(GtkWidget* widget, const WebCore::IntPoint&amp; location, unsigned state)

Just FYI, on Mac we don&apos;t interpolate intermediate mouse positions. We might do so once the Actions API is implemented since it naturally specifies a duration for transitions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303612</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-02 01:01:25 -0700</bug_when>
    <thetext>Brian, this patch depends on bug #171107, could you cq+ the patch there when you are around to make sure it doesn&apos;t break anything on your side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303974</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-03 01:56:06 -0700</bug_when>
    <thetext>Committed r216114: &lt;http://trac.webkit.org/changeset/216114&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308528</attachid>
            <date>2017-04-28 07:14:22 -0700</date>
            <delta_ts>2017-05-01 12:10:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-automation-gtk.diff</filename>
            <type>text/plain</type>
            <size>23273</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyZTA5OWVlMTczYS4uZmJkNmE5YWY3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxNy0wNC0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEdUSysgaW1wbGVtZW50YXRpb24gb2YgV2Vi
QXV0b21hdGlvblNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBwbGF0Zm9ybSBkZXBlbmRlbnQgbWV0aG9kcyBmb3IgR1RLKyB0byBzeW50
aGVzaXplIGV2ZW50cy4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogQWx3YXlzIHJlc2l6ZSB0aGUg
d2luZG93IGZvciB3ZWIgdmlld3MgY29udHJvbGxlZCBieSBhdXRvbWF0aW9uLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1vdmVXaW5kb3dP
ZkJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc1RvRXZlbnRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Om1vdXNlQnV0dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0Ojpkb01vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViS2l0Ojpkb01vdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6ZG9LZXlTdHJva2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OmtleUNv
ZGVGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEp
OgorCiAyMDE3LTA0LTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBXZWIgQXV0b21hdGlvbjogZ2VuZXJhdGUgcmVzaXplV2luZG93T2ZCcm93
c2luZ0NvbnRleHQgYW5kIG1vdmVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCBmb3IgYWxsIHBsYXRm
b3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiMDgwNWQwOTRhNS4uYTJiODBlM2Rl
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zMDQsNiArMzA0LDggQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93
UHJvcGVydGllc1ByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAogCisg
ICAgVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcAor
CiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCiAKICAg
ICBVSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDA2
MjI5Y2QyZTBmLi5lYzcxZDQ1ZjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMTM5LDcgKzEzOSwxNCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBmcmFtZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdka1JlY3Rhbmds
ZSBnZW9tZXRyeSA9IFdlYkNvcmU6OkludFJlY3QoZnJhbWUpOwotICAgICAgICB3ZWJraXRXaW5k
b3dQcm9wZXJ0aWVzU2V0R2VvbWV0cnkod2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVy
dGllcyhtX3dlYlZpZXcpLCAmZ2VvbWV0cnkpOworICAgICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgICAg
IGlmICh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKG1fd2ViVmll
dykgJiYgV2ViQ29yZTo6d2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRvdykgJiYg
Z3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aW5kb3cpKSB7CisgICAgICAgICAgICBpZiAoZ2VvbWV0
cnkueCA+PSAwICYmIGdlb21ldHJ5LnkgPj0gMCkKKyAgICAgICAgICAgICAgICBndGtfd2luZG93
X21vdmUoR1RLX1dJTkRPVyh3aW5kb3cpLCBnZW9tZXRyeS54LCBnZW9tZXRyeS55KTsKKyAgICAg
ICAgICAgIGlmIChnZW9tZXRyeS53aWR0aCA+IDAgJiYgZ2VvbWV0cnkuaGVpZ2h0ID4gMCkKKyAg
ICAgICAgICAgICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIGdlb21l
dHJ5LndpZHRoLCBnZW9tZXRyeS5oZWlnaHQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNTZXRHZW9tZXRyeSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dp
bmRvd19wcm9wZXJ0aWVzKG1fd2ViVmlldyksICZnZW9tZXRyeSk7CiAgICAgfQogCiAgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNjA5MTJmYmQwZmUuLmY5ZjlkZjIwODJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCkBAIC0zMjAsNiArMzIwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYKIAogICAgIHBhZ2UtPnNldFdpbmRvd0ZyYW1lKG5ld0ZyYW1lKTsKIAorI2lmICFQTEFU
Rk9STShHVEspCiAgICAgLy8gSWYgbm90aGluZyBjaGFuZ2VkIGF0IGFsbCwgaXQncyBwcm9iYWJs
eSBmYWlyIHRvIHJlcG9ydCB0aGF0IHNvbWV0aGluZyB3ZW50IHdyb25nLgogICAgIC8vIChXZSBj
YW4ndCBhc3N1bWUgdGhhdCB0aGUgcmVxdWVzdGVkIGZyYW1lIHNpemUgd2lsbCBiZSBob25vcmVk
IGV4YWN0bHksIGhvd2V2ZXIuKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB1cGRhdGVkRnJhbWU7
CkBAIC0zMjcsNiArMzI4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzaXplV2lu
ZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYKICAgICBpZiAob3Jp
Z2luYWxGcmFtZSA9PSB1cGRhdGVkRnJhbWUpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJUaGUgd2luZG93IHNpemUgd2FzIGV4
cGVjdGVkIHRvIGhhdmUgY2hhbmdlZCwgYnV0IGRpZCBub3QuIik7CiAjZW5kaWYKKyNlbmRpZgog
fQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRl
eHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFu
ZGxlLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcG9zaXRpb25PYmplY3QpCkBA
IC0zNjEsNiArMzYzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW92ZVdpbmRvd09m
QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGUKIAogICAgIHBhZ2UtPnNl
dFdpbmRvd0ZyYW1lKG5ld0ZyYW1lKTsKIAorI2lmICFQTEFURk9STShHVEspCiAgICAgLy8gSWYg
bm90aGluZyBjaGFuZ2VkIGF0IGFsbCwgaXQncyBwcm9iYWJseSBmYWlyIHRvIHJlcG9ydCB0aGF0
IHNvbWV0aGluZyB3ZW50IHdyb25nLgogICAgIC8vIChXZSBjYW4ndCBhc3N1bWUgdGhhdCB0aGUg
cmVxdWVzdGVkIGZyYW1lIHNpemUgd2lsbCBiZSBob25vcmVkIGV4YWN0bHksIGhvd2V2ZXIuKQog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB1cGRhdGVkRnJhbWU7CkBAIC0zNjgsNiArMzcxLDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGUKICAgICBpZiAob3JpZ2luYWxGcmFtZSA9PSB1cGRhdGVk
RnJhbWUpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKElu
dGVybmFsRXJyb3IsICJUaGUgd2luZG93IHBvc2l0aW9uIHdhcyBleHBlY3RlZCB0byBoYXZlIGNo
YW5nZWQsIGJ1dCBkaWQgbm90LiIpOwogI2VuZGlmCisjZW5kaWYKIH0KIAogdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgUmVmPE5hdmlnYXRlQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC04
MzMsNyArODM3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2ll
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBjb29raWVNYW5hZ2Vy
LT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCksIGFjdGl2ZVVSTC5ob3N0KCkpOwogfQogCi0jaWYgVVNFKEFQUEtJVCkKKyNpZiBV
U0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCiBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBw
cm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleU1vZGlmaWVyIG1vZGlmaWVyKQogewogICAgIHN3aXRjaCAobW9kaWZpZXIp
IHsKQEAgLTg1Myw3ICs4NTcsNyBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2Nv
bE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogCiB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdCwgY29uc3QgU3Ry
aW5nJiBtb3VzZUJ1dHRvblN0cmluZywgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9uU3Ry
aW5nLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBrZXlNb2RpZmllclN0cmluZ3Ms
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludD4mIHVwZGF0ZWRQ
b3NpdGlvbk9iamVjdCkKIHsKLSNpZiAhVVNFKEFQUEtJVCkKKyNpZiAhVVNFKEFQUEtJVCkgJiYg
IVBMQVRGT1JNKEdUSykKICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb3RJbXBsZW1l
bnRlZCk7CiAjZWxzZQogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhh
bmRsZShoYW5kbGUpOwpAQCAtOTA4LDcgKzkxMiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9y
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9u
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBpbnRlcmFjdGlvbnMsIFJlZjxQZXJmb3JtS2V5Ym9h
cmRJbnRlcmFjdGlvbnNDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSNpZiAhUExBVEZPUk0oQ09D
T0EpCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oR1RLKQogICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKICNlbHNlCiAgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CkBAIC0xMDE1LDEzICsx
MDE5LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsCiAKIC8vIFBsYXRmb3JtLWRlcGVuZGVu
dCBJbXBsZW1lbnRhdGlvbiBTdHVicy4KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRG
T1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycykKIHsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
KQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRG
T1JNKEdUSykKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlT
dHJva2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5
Ym9hcmRJbnRlcmFjdGlvblR5cGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCBhNGNhODYxMGMxNi4uMWI1
ODk2MzA2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMjI1LDkgKzIyNSwxMCBAQCBwcml2
YXRlOgogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX3JlbW90ZUNoYW5uZWwgeyBu
dWxscHRyIH07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKEdUSykKICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBhY3RpdmUg
bW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBrZXlzdHJva2VzLgogICAgIC8vIFdlIGRvbid0IHN5
bnRoZXNpemUgcGxhdGZvcm0ga2V5Ym9hcmQgZXZlbnRzIG9uIGlPUywgc28gd2UgbmVlZCB0byB0
cmFjayBpdCBvdXJzZWx2ZXMuCisgICAgLy8gR1RLKyBkb2Vzbid0IGtlZXAgdHJhY2sgb2YgdGhl
IGFjdGl2ZSBtb2RpZmllcnMgd2hlbiB1c2luZyBzeW50aGVzaXpleiBldmVudHMuCiAgICAgdW5z
aWduZWQgbV9jdXJyZW50TW9kaWZpZXJzIHsgMCB9OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNz
aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmRhMWMxMDFmNmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcApAQCAtMCww
ICsxLDMxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24u
aCIKKworI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBtb2RpZmllcnNUb0V2ZW50U3RhdGUo
V2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAgdW5zaWduZWQgc3RhdGUgPSAw
OworCisgICAgaWYgKG1vZGlmaWVycyAmIFdlYkV2ZW50OjpDb250cm9sS2V5KQorICAgICAgICBz
dGF0ZSB8PSBHREtfQ09OVFJPTF9NQVNLOworICAgIGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6
U2hpZnRLZXkpCisgICAgICAgIHN0YXRlIHw9IEdES19TSElGVF9NQVNLOworICAgIGlmIChtb2Rp
ZmllcnMgJiBXZWJFdmVudDo6QWx0S2V5KQorICAgICAgICBzdGF0ZSB8PSBHREtfTUVUQV9NQVNL
OworICAgIGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6Q2Fwc0xvY2tLZXkpCisgICAgICAgIHN0
YXRlIHw9IEdES19MT0NLX01BU0s7CisgICAgcmV0dXJuIHN0YXRlOworfQorCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIG1vdXNlQnV0dG9uVG9HZGtCdXR0b24oSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b24gYnV0dG9uKQoreworICAgIHN3aXRjaCAoYnV0dG9uKSB7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
Tm9uZToKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0
dG9uOjpMZWZ0OgorICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9QUklNQVJZOworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToKKyAg
ICAgICAgcmV0dXJuIEdES19CVVRUT05fTUlERExFOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gR0RL
X0JVVFRPTl9TRUNPTkRBUlk7CisgICAgfQorICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7
Cit9CisKK3N0YXRpYyB2b2lkIGRvTW91c2VFdmVudChHZGtFdmVudFR5cGUgdHlwZSwgR3RrV2lk
Z2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbiwgdW5zaWduZWQg
YnV0dG9uLCB1bnNpZ25lZCBzdGF0ZSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBHREtfQlVUVE9O
X1BSRVNTIHx8IHR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKTsKKworICAgIEdVbmlxdWVQdHI8
R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcodHlwZSkpOworICAgIGV2ZW50LT5idXR0b24u
d2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCk7CisgICAgZ19vYmplY3RfcmVm
KGV2ZW50LT5idXR0b24ud2luZG93KTsKKyAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBHREtfQ1VS
UkVOVF9USU1FOworICAgIGV2ZW50LT5idXR0b24ueCA9IGxvY2F0aW9uLngoKTsKKyAgICBldmVu
dC0+YnV0dG9uLnkgPSBsb2NhdGlvbi55KCk7CisgICAgZXZlbnQtPmJ1dHRvbi5heGVzID0gMDsK
KyAgICBldmVudC0+YnV0dG9uLnN0YXRlID0gc3RhdGU7CisgICAgZXZlbnQtPmJ1dHRvbi5idXR0
b24gPSBidXR0b247CisgICAgZXZlbnQtPmJ1dHRvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFn
ZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtf
d2lkZ2V0X2dldF9kaXNwbGF5KHdpZGdldCkpKTsKKyAgICBpbnQgeFJvb3QsIHlSb290OworICAg
IGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQp
LCBsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSwgJnhSb290LCAmeVJvb3QpOworICAgIGV2ZW50
LT5idXR0b24ueF9yb290ID0geFJvb3Q7CisgICAgZXZlbnQtPmJ1dHRvbi55X3Jvb3QgPSB5Um9v
dDsKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGRvTW90aW9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBsb2NhdGlvbiwgdW5zaWduZWQgc3RhdGUpCit7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4g
ZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkpOworICAgIGV2ZW50LT5tb3Rp
b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCk7CisgICAgZ19vYmplY3Rf
cmVmKGV2ZW50LT5tb3Rpb24ud2luZG93KTsKKyAgICBldmVudC0+bW90aW9uLnRpbWUgPSBHREtf
Q1VSUkVOVF9USU1FOworICAgIGV2ZW50LT5tb3Rpb24ueCA9IGxvY2F0aW9uLngoKTsKKyAgICBl
dmVudC0+bW90aW9uLnkgPSBsb2NhdGlvbi55KCk7CisgICAgZXZlbnQtPm1vdGlvbi5heGVzID0g
MDsKKyAgICBldmVudC0+bW90aW9uLnN0YXRlID0gc3RhdGU7CisgICAgZXZlbnQtPm1vdGlvbi5k
ZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5
X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHdpZGdldCkpKTsKKyAg
ICBpbnQgeFJvb3QsIHlSb290OworICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKGd0a193
aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQpLCBsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSwgJnhS
b290LCAmeVJvb3QpOworICAgIGV2ZW50LT5tb3Rpb24ueF9yb290ID0geFJvb3Q7CisgICAgZXZl
bnQtPm1vdGlvbi55X3Jvb3QgPSB5Um9vdDsKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5n
ZXQoKSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVN
b3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
TW91c2VCdXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKK3sK
KyAgICB1bnNpZ25lZCBnZGtCdXR0b24gPSBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKGJ1dHRvbik7
CisgICAgdW5zaWduZWQgc3RhdGUgPSBtb2RpZmllcnNUb0V2ZW50U3RhdGUoa2V5TW9kaWZpZXJz
KTsKKworICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CisgICAgICAgIGRvTW90
aW9uRXZlbnQocGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgc3RhdGUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
SW50ZXJhY3Rpb246OkRvd246CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNT
LCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uOjpVcDoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVM
RUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChH
REtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0
b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFn
ZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRl
KTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lk
Z2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBn
ZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZG9LZXlTdHJva2VFdmVudChH
ZGtFdmVudFR5cGUgdHlwZSwgR3RrV2lkZ2V0KiB3aWRnZXQsIHVuc2lnbmVkIGtleVZhbCwgdW5z
aWduZWQgc3RhdGUsIGJvb2wgZG9SZWxlYXNlQWZ0ZXJQcmVzcyA9IGZhbHNlKQoreworICAgIEFT
U0VSVCh0eXBlID09IEdES19LRVlfUFJFU1MgfHwgdHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpOwor
CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyh0eXBlKSk7Cisg
ICAgZXZlbnQtPmtleS5rZXl2YWwgPSBrZXlWYWw7CisKKyAgICBldmVudC0+a2V5LnRpbWUgPSBH
REtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LT5rZXkud2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
d2luZG93KHdpZGdldCk7CisgICAgZ19vYmplY3RfcmVmKGV2ZW50LT5rZXkud2luZG93KTsKKyAg
ICBnZGtfZXZlbnRfc2V0X2RldmljZShldmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5hZ2VyX2dl
dF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ3RrX3dpZGdl
dF9nZXRfZGlzcGxheSh3aWRnZXQpKSkpOworICAgIGV2ZW50LT5rZXkuc3RhdGUgPSBzdGF0ZTsK
KworICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJl
X2tleWNvZGUgdmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHVEsr
LgorICAgIEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAgIGludCBrZXlzQ291
bnQ7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFw
X2dldF9kZWZhdWx0KCksIGtleVZhbCwgJmtleXMub3V0UHRyKCksICZrZXlzQ291bnQpKQorICAg
ICAgICBldmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7
CisKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7CisgICAgaWYgKGRvUmVsZWFz
ZUFmdGVyUHJlc3MpIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gR0RLX0tFWV9QUkVTUyk7Cisg
ICAgICAgIGV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFTRTsKKyAgICAgICAgZ3RrX21h
aW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBpbnQg
a2V5Q29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleSBrZXksIEdka01vZGlmaWVyVHlwZSYgc3RhdGUpCit7CisgICAgc3RhdGUgPSBzdGF0
aWNfY2FzdDxHZGtNb2RpZmllclR5cGU+KDApOworICAgIHN3aXRjaCAoa2V5KSB7CisgICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAg
ICAgICAgc3RhdGUgPSBHREtfU0hJRlRfTUFTSzsKKyAgICAgICAgcmV0dXJuIEdES19LRVlfU2hp
ZnRfUjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkNvbnRyb2w6CisgICAgICAgIHN0YXRlID0gR0RLX0NPTlRST0xfTUFTSzsKKyAgICAgICAg
cmV0dXJuIEdES19LRVlfQ29udHJvbF9SOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgICAgICBzdGF0ZSA9IEdES19N
T0QxX01BU0s7CisgICAgICAgIHJldHVybiBHREtfS0VZX0FsdF9MOworICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKKyAgICAgICAgc3Rh
dGUgPSBHREtfTUVUQV9NQVNLOworICAgICAgICByZXR1cm4gR0RLX0tFWV9NZXRhX1I7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5k
OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9FeGVjdXRlOworICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SGVscDoKKyAgICAgICAgcmV0dXJuIEdE
S19LRVlfSGVscDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkJhY2tzcGFjZToKKyAgICAgICAgcmV0dXJuIEdES19LRVlfQmFja1NwYWNlOwor
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VGFi
OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9UYWI7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVhcjoKKyAgICAgICAgcmV0dXJuIEdES19L
RVlfQ2xlYXI7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpFbnRlcjoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfUmV0dXJuOworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGF1c2U6CisgICAg
ICAgIHJldHVybiBHREtfS0VZX1BhdXNlOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q2FuY2VsOgorICAgICAgICByZXR1cm4gR0RLX0tFWV9D
YW5jZWw7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpFc2NhcGU6CisgICAgICAgIHJldHVybiBHREtfS0VZX0VzY2FwZTsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VVcDoKKyAgICAg
ICAgcmV0dXJuIEdES19LRVlfUGFnZV9VcDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAgICAgICByZXR1cm4gR0RLX0tF
WV9QYWdlX0Rvd247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpFbmQ6CisgICAgICAgIHJldHVybiBHREtfS0VZX0VuZDsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhvbWU6CisgICAgICAg
IHJldHVybiBHREtfS0VZX0hvbWU7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgIHJldHVybiBHREtfS0VZX0xl
ZnQ7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpVcEFycm93OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9VcDsKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAg
IHJldHVybiBHREtfS0VZX1JpZ2h0OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9E
b3duOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6SW5zZXJ0OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9JbnNlcnQ7CisgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEZWxldGU6CisgICAgICAg
IHJldHVybiBHREtfS0VZX0RlbGV0ZTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OlNwYWNlOgorICAgICAgICByZXR1cm4gR0RLX0tFWV9zcGFj
ZTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OlNlbWljb2xvbjoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfc2VtaWNvbG9uOworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXF1YWxzOgorICAg
ICAgICByZXR1cm4gR0RLX0tFWV9lcXVhbDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJldHVybjoKKyAgICAgICAgcmV0dXJuIEdES19LRVlf
UmV0dXJuOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TnVtYmVyUGFkMDoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfMDsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDE6
CisgICAgICAgIHJldHVybiBHREtfS0VZX0tQXzE7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAgICAgICByZXR1cm4g
R0RLX0tFWV9LUF8yOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkMzoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfMzsKKyAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJl
clBhZDQ6CisgICAgICAgIHJldHVybiBHREtfS0VZX0tQXzQ7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgorICAgICAgICBy
ZXR1cm4gR0RLX0tFWV9LUF81OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfS1Bf
NjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZDc6CisgICAgICAgIHJldHVybiBHREtfS0VZX0tQXzc7CisgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgorICAg
ICAgICByZXR1cm4gR0RLX0tFWV9LUF84OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkOToKKyAgICAgICAgcmV0dXJuIEdES19L
RVlfS1BfOTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9NdWx0
aXBseTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZEFkZDoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfS1BfQWRkOworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
U3VidHJhY3Q6CisgICAgICAgIHJldHVybiBHREtfS0VZX0tQX1N1YnRyYWN0OworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2Vw
YXJhdG9yOgorICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9TZXBhcmF0b3I7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNp
bWFsOgorICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9EZWNpbWFsOworICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgor
ICAgICAgICByZXR1cm4gR0RLX0tFWV9LUF9EaXZpZGU7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6CisgICAgICAgIHJldHVy
biBHREtfS0VZX0YxOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMjsKKyAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
MzoKKyAgICAgICAgcmV0dXJuIEdES19LRVlfRjM7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgICAgIHJldHVybiBH
REtfS0VZX0Y0OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6RnVuY3Rpb241OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9GNTsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoK
KyAgICAgICAgcmV0dXJuIEdES19LRVlfRjY7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CisgICAgICAgIHJldHVybiBHREtf
S0VZX0Y3OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RnVuY3Rpb244OgorICAgICAgICByZXR1cm4gR0RLX0tFWV9GODsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKKyAg
ICAgICAgcmV0dXJuIEdES19LRVlfRjk7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgorICAgICAgICByZXR1cm4gR0RLX0tF
WV9GMTA7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpGdW5jdGlvbjExOgorICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTE7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgor
ICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit7CisgICAg
R2RrTW9kaWZpZXJUeXBlIHVwZGF0ZVN0YXRlOworICAgIGF1dG8ga2V5Q29kZSA9IGtleUNvZGVG
b3JWaXJ0dWFsS2V5KGtleSwgdXBkYXRlU3RhdGUpOworICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24p
IHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50
ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczoKKyAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IHVw
ZGF0ZVN0YXRlOworICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19LRVlfUFJFU1MsIHBhZ2Uu
dmlld1dpZGdldCgpLCBrZXlDb2RlLCBtX2N1cnJlbnRNb2RpZmllcnMpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50
ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOgorICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0g
fnVwZGF0ZVN0YXRlOworICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19LRVlfUkVMRUFTRSwg
cGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9h
cmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OgorICAgICAgICBkb0tleVN0cm9rZUV2ZW50
KEdES19LRVlfUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBrZXlDb2RlLCBtX2N1cnJlbnRNb2Rp
ZmllcnMsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmIHBh
Z2UsIGNvbnN0IFN0cmluZyYga2V5U2VxdWVuY2UpCit7CisgICAgQ1N0cmluZyBrZXlTZXF1ZW5j
ZVVURjggPSBrZXlTZXF1ZW5jZS51dGY4KCk7CisgICAgY29uc3QgY2hhciogcCA9IGtleVNlcXVl
bmNlVVRGOC5kYXRhKCk7CisgICAgZG8geworICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19L
RVlfUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBnZGtfdW5pY29kZV90b19rZXl2YWwoZ191dGY4
X2dldF9jaGFyKHApKSwgbV9jdXJyZW50TW9kaWZpZXJzLCB0cnVlKTsKKyAgICAgICAgcCA9IGdf
dXRmOF9uZXh0X2NoYXIocCk7CisgICAgfSB3aGlsZSAoKnApOworfQorCitzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBO
R0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcywgcG9zc2libHkgbW92aW5nIGl0IHRvIGEgV2ViQXV0b21hdGlvblNlc3Np
b25DYWlyby5jcHAgZmlsZS4KKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKwo=
</data>
<flag name="review"
          id="329678"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>