From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Rex Dieter To: git-commits@fedoraproject.org Subject: [rpms/amarok] epel10: - --with-mp4v2 (rh#346011) Date: Mon, 06 Jul 2026 18:03:42 GMT Message-ID: <178336102266.1.16860883088971584411.rpms-amarok-a4c9e68eb6f5@fedoraproject.org> List-ID: X-Git-Repo: rpms/amarok X-Git-Branch: epel10 X-Git-Rev: a4c9e68eb6f5cb9921774ff034d83c9f591a96ad ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvYW1hcm9rCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWwxMAogICAgICAgICAg ICBDb21taXQgOiBhNGM5ZTY4ZWI2ZjVjYjk5MjE3NzRmZjAzNGQ4M2M5ZjU5MWE5NmFkCiAgICAg ICAgICAgIEF1dGhvciA6IFJleCBEaWV0ZXIgPHJkaWV0ZXJAZmVkb3JhcHJvamVjdC5vcmc+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMDctMTEtMjlUMjA6MzA6MTMrMDA6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzM1NTgvLTkgaW4gMiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBz Oi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvYW1hcm9rL2MvYTRjOWU2OGViNmY1Y2I5OTIx Nzc0ZmYwMzRkODNjOWY1OTFhOTZhZD9icmFuY2g9ZXBlbDEwCgogICAgICAgICAgICBMb2c6CiAg ICAgICAgICAgIC0gLS13aXRoLW1wNHYyIChyaCMzNDYwMTEpCi0gZml4IGFzZi93bWEgc3VwcG9y dCAocmgjMzQ2MDExLGtkZSMxNTE3MzMpCgotLS0KZGlmZiAtLWdpdCBhL2FtYXJvay1hc2YucGF0 Y2ggYi9hbWFyb2stYXNmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmZmY2EyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9hbWFyb2stYXNmLnBhdGNoCkBAIC0wLDAgKzEs MzUzMyBAQAorCitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZgor X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXworTmFtZTogc3ZuOmlnbm9yZQorICAgKyAubGlicworLmRlcHMKK01ha2VmaWxl CitNYWtlZmlsZS5pbgorCisKK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2ZmaWxl LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2ZmaWxlLmgJKHJl dmlzaW9uIDApCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmZmlsZS5oCShyZXZpc2lv biA3NDMwMDUpCitAQCAtMCwwICsxLDExNCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAgICBj b3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1LTIwMDcgYnkgTHVrw6HFoSBMYWxpbnNrw70K KysgICAgZW1haWwgICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKysgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAgVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg ICoKKysgKiAgIGl0ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uICAqCisrICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgICAqCisrICogICBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgor KyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUgICAgICoKKysgKiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICoKKysgKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0 aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCisrICog ICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAgMDIxMTEtMTMwNyAgKgorKyAqICAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworKworKyNpZm5kZWYgVEFHTElCX0FTRkZJTEVfSAorKyNkZWZpbmUgVEFHTElCX0FTRkZJ TEVfSAorKworKyNpbmNsdWRlIDx0YWcuaD4KKysjaW5jbHVkZSA8dGZpbGUuaD4KKysjaW5jbHVk ZSAiYXNmcHJvcGVydGllcy5oIgorKyNpbmNsdWRlICJhc2Z0YWcuaCIKKysKKytuYW1lc3BhY2Ug VGFnTGliIHsKKysKKysgIC8vISBBbiBpbXBsZW1lbnRhdGlvbiBvZiBBU0YgKFdNQSkgbWV0YWRh dGEKKysgIG5hbWVzcGFjZSBBU0YgeworKworKyAgICAvKiEKKysgICAgICogVGhpcyBpbXBsZW1l bnRzIGFuZCBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIEFTRiBmaWxlcyB0byB0aGUKKysgICAg ICogVGFnTGliOjpUYWcgYW5kIFRhZ0xpYjo6QXVkaW9Qcm9wZXJ0aWVzIGludGVyZmFjZXMgYnkg d2F5IG9mIGltcGxlbWVudGluZworKyAgICAgKiB0aGUgYWJzdHJhY3QgVGFnTGliOjpGaWxlIEFQ SSBhcyB3ZWxsIGFzIHByb3ZpZGluZyBzb21lIGFkZGl0aW9uYWwKKysgICAgICogaW5mb3JtYXRp b24gc3BlY2lmaWMgdG8gQVNGIGZpbGVzLgorKyAgICAgKi8KKysgICAgY2xhc3MgRmlsZSA6IHB1 YmxpYyBUYWdMaWI6OkZpbGUKKysgICAgeworKyAgICBwdWJsaWM6CisrCisrICAgICAgLyohCisr ICAgICAgICogQ29udHJ1Y3RzIGFuIEFTRiBmaWxlIGZyb20gXGEgZmlsZS4gIElmIFxhIHJlYWRQ cm9wZXJ0aWVzIGlzIHRydWUgdGhlCisrICAgICAgICogZmlsZSdzIGF1ZGlvIHByb3BlcnRpZXMg d2lsbCBhbHNvIGJlIHJlYWQgdXNpbmcgXGEgcHJvcGVydGllc1N0eWxlLiAgSWYKKysgICAgICAg KiBmYWxzZSwgXGEgcHJvcGVydGllc1N0eWxlIGlzIGlnbm9yZWQuCisrICAgICAgICoKKysgICAg ICAgKiBcbm90ZSBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYm90aCBcYSByZWFkUHJv cGVydGllcyBhbmQKKysgICAgICAgKiBcYSBwcm9wZXJ0aWVzU3R5bGUgYXJlIGlnbm9yZWQuCisr ICAgICAgICovCisrICAgICAgRmlsZShjb25zdCBjaGFyICpmaWxlLCBib29sIHJlYWRQcm9wZXJ0 aWVzID0gdHJ1ZSwgUHJvcGVydGllczo6UmVhZFN0eWxlIHByb3BlcnRpZXNTdHlsZSA9IFByb3Bl cnRpZXM6OkF2ZXJhZ2UpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIERlc3Ryb3lzIHRoaXMg aW5zdGFuY2Ugb2YgdGhlIEZpbGUuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCB+RmlsZSgp OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBBU0Yg dGFnIG9mIHRoZSBmaWxlLgorKyAgICAgICAqCisrICAgICAgICogQVNGOjpUYWcgaW1wbGVtZW50 cyB0aGUgdGFnIGludGVyZmFjZSwgc28gdGhpcyBzZXJ2ZXMgYXMgdGhlCisrICAgICAgICogcmVp bXBsZW1lbnRhdGlvbiBvZiBUYWdMaWI6OkZpbGU6OnRhZygpLgorKyAgICAgICAqCisrICAgICAg ICogXG5vdGUgVGhlIFRhZyA8Yj5pcyBzdGlsbDwvYj4gb3duZWQgYnkgdGhlIEFTRjo6RmlsZSBh bmQgc2hvdWxkIG5vdCBiZQorKyAgICAgICAqIGRlbGV0ZWQgYnkgdGhlIHVzZXIuICBJdCB3aWxs IGJlIGRlbGV0ZWQgd2hlbiB0aGUgZmlsZSAob2JqZWN0KSBpcworKyAgICAgICAqIGRlc3Ryb3ll ZC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFRhZyAqdGFnKCkgY29uc3Q7CisrCisrICAg ICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgQVNGIGF1ZGlvIHByb3BlcnRpZXMgZm9yIHRo aXMgZmlsZS4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFByb3BlcnRpZXMgKmF1ZGlvUHJv cGVydGllcygpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFNhdmUgdGhlIGZpbGUu CisrICAgICAgICoKKysgICAgICAgKiBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgc2F2ZSB3YXMg c3VjY2Vzc2Z1bC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIGJvb2wgc2F2ZSgpOworKwor KyAgICBwcml2YXRlOgorKworKyAgICAgIGludCByZWFkQllURSgpOworKyAgICAgIGludCByZWFk V09SRCgpOworKyAgICAgIHVuc2lnbmVkIGludCByZWFkRFdPUkQoKTsKKysgICAgICBsb25nIGxv bmcgcmVhZFFXT1JEKCk7CisrICAgICAgc3RhdGljIEJ5dGVWZWN0b3IgcmVuZGVyU3RyaW5nKGNv bnN0IFN0cmluZyAmc3RyLCBib29sIGluY2x1ZGVMZW5ndGggPSBmYWxzZSk7CisrICAgICAgU3Ry aW5nIHJlYWRTdHJpbmcoaW50IGxlbik7CisrICAgICAgdm9pZCByZWFkKGJvb2wgcmVhZFByb3Bl cnRpZXMsIFByb3BlcnRpZXM6OlJlYWRTdHlsZSBwcm9wZXJ0aWVzU3R5bGUpOworKworKyAgICAg IGZyaWVuZCBjbGFzcyBBdHRyaWJ1dGU7CisrCisrICAgICAgY2xhc3MgQmFzZU9iamVjdDsKKysg ICAgICBjbGFzcyBVbmtub3duT2JqZWN0OworKyAgICAgIGNsYXNzIEZpbGVQcm9wZXJ0aWVzT2Jq ZWN0OworKyAgICAgIGNsYXNzIFN0cmVhbVByb3BlcnRpZXNPYmplY3Q7CisrICAgICAgY2xhc3Mg Q29udGVudERlc2NyaXB0aW9uT2JqZWN0OworKyAgICAgIGNsYXNzIEV4dGVuZGVkQ29udGVudERl c2NyaXB0aW9uT2JqZWN0OworKyAgICAgIGNsYXNzIEhlYWRlckV4dGVuc2lvbk9iamVjdDsKKysg ICAgICBjbGFzcyBNZXRhZGF0YU9iamVjdDsKKysgICAgICBjbGFzcyBNZXRhZGF0YUxpYnJhcnlP YmplY3Q7CisrCisrICAgICAgY2xhc3MgRmlsZVByaXZhdGU7CisrICAgICAgRmlsZVByaXZhdGUg KmQ7CisrICAgIH07CisrCisrICB9CisrCisrfQorKworKyNlbmRpZgorCitQcm9wZXJ0eSBjaGFu Z2VzIG9uOiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2ZmaWxlLmgKK19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK05h bWU6IHN2bjplb2wtc3R5bGUKKyAgICsgbmF0aXZlCisKK0luZGV4OiBhbWFyb2svc3JjL21ldGFk YXRhL2FzZi90YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5jcHAKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBh bWFyb2svc3JjL21ldGFkYXRhL2FzZi90YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5jcHAJKHJl dmlzaW9uIDApCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvdGFnbGliX2FzZmZpbGV0eXBl cmVzb2x2ZXIuY3BwCShyZXZpc2lvbiA3NDMwMDUpCitAQCAtMCwwICsxLDQ3IEBACisrLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1IGJ5IE1h cnRpbiBBdW11ZWxsZXIKKysgICAgZW1haWwgICAgICAgICAgICAgICAgOiBhdW11ZWxsQHJlc2Vy di5hdAorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAq ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgICoKKysgKiAgIGl0ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAqCisrICogICAyLjEgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAg ICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgICAqCisrICogICBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m ICAgICAgICAgICAgKgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKysgKiAgIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAq CisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICoKKysgKiAgIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgICAqCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sICAgICAgICAgICAgKgorKyAqICAgTUEgIDAyMTEwLTEzMDEgIFVT QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworKworKy8vIChjKSAyMDA1IE1hcnRpbiBBdW11ZWxsZXIgPGF1 bXVlbGxAcmVzZXJ2LmF0PgorKy8vIFNlZSBDT1BZSU5HIGZpbGUgZm9yIGxpY2Vuc2luZyBpbmZv cm1hdGlvbgorKworKyNpbmNsdWRlICJ0YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5oIgorKyNp bmNsdWRlICJhc2ZmaWxlLmgiCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworK1RhZ0xpYjo6 RmlsZSAqQVNGRmlsZVR5cGVSZXNvbHZlcjo6Y3JlYXRlRmlsZShjb25zdCBjaGFyICpmaWxlTmFt ZSwKKysgICAgICAgIGJvb2wgcmVhZFByb3BlcnRpZXMsCisrICAgICAgICBUYWdMaWI6OkF1ZGlv UHJvcGVydGllczo6UmVhZFN0eWxlIHByb3BlcnRpZXNTdHlsZSkgY29uc3QKKyt7CisrICAgIGNv bnN0IGNoYXIgKmV4dCA9IHN0cnJjaHIoZmlsZU5hbWUsICcuJyk7CisrICAgIGlmKGV4dCAmJiAo IXN0cmNhc2VjbXAoZXh0LCAiLndtYSIpIHx8ICFzdHJjYXNlY21wKGV4dCwgIi5hc2YiKSkpCisr ICAgIHsKKysgICAgICAgIFRhZ0xpYjo6QVNGOjpGaWxlICpmID0gbmV3IFRhZ0xpYjo6QVNGOjpG aWxlKGZpbGVOYW1lLCByZWFkUHJvcGVydGllcywgcHJvcGVydGllc1N0eWxlKTsKKysgICAgICAg IGlmKGYtPmlzVmFsaWQoKSkKKysgICAgICAgICAgICByZXR1cm4gZjsKKysgICAgICAgIGVsc2UK KysgICAgICAgIHsKKysgICAgICAgICAgICBkZWxldGUgZjsKKysgICAgICAgIH0KKysgICAgfQor KworKyAgICByZXR1cm4gMDsKKyt9CitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNm YXR0cmlidXRlLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zh dHRyaWJ1dGUuaAkocmV2aXNpb24gMCkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zh dHRyaWJ1dGUuaAkocmV2aXNpb24gNzQzMDA1KQorQEAgLTAsMCArMSwxNzYgQEAKKysvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKysgICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAwNS0yMDA3IGJ5 IEx1a8OhxaEgTGFsaW5za8O9CisrICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lA Z21haWwuY29tCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KysgKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorKyAqICAgMi4xIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAg ICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAq ICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiAgICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCisrICogICBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAg ICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCisrICogICBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgICoKKysgKiAgIFVTQSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaWZuZGVmIFRBR0xJQl9BU0ZBVFRSSUJVVEVf SAorKyNkZWZpbmUgVEFHTElCX0FTRkFUVFJJQlVURV9ICisrCisrI2luY2x1ZGUgPHRzdHJpbmcu aD4KKysjaW5jbHVkZSA8dGJ5dGV2ZWN0b3IuaD4KKysKKytuYW1lc3BhY2UgVGFnTGliCisrewor KworKyAgbmFtZXNwYWNlIEFTRgorKyAgeworKworKyAgICBjbGFzcyBGaWxlOworKworKyAgICBj bGFzcyBBdHRyaWJ1dGUKKysgICAgeworKyAgICBwdWJsaWM6CisrCisrICAgICAgLyohCisrICAg ICAgICogRW51bSBvZiB0eXBlcyBhbiBBdHRyaWJ1dGUgY2FuIGhhdmUuCisrICAgICAgICovCisr ICAgICAgZW51bSBBdHRyaWJ1dGVUeXBlcyB7CisrICAgICAgICBVbmljb2RlVHlwZSA9IDAsCisr ICAgICAgICBCeXRlc1R5cGUgICA9IDEsCisrICAgICAgICBCb29sVHlwZSAgICA9IDIsCisrICAg ICAgICBEV29yZFR5cGUgICA9IDMsCisrICAgICAgICBRV29yZFR5cGUgICA9IDQsCisrICAgICAg ICBXb3JkVHlwZSAgICA9IDUsCisrICAgICAgICBHdWlkVHlwZSAgICA9IDYKKysgICAgICB9Owor KworKyAgICAgIC8qIQorKyAgICAgICAqIENvbnN0cnVjdHMgYW4gZW1wdHkgYXR0cmlidXRlLgor KyAgICAgICAqLworKyAgICAgIEF0dHJpYnV0ZSgpOworKworKyAgICAgIC8qIQorKyAgICAgICAq IENvbnN0cnVjdHMgYW4gYXR0cmlidXRlIHdpdGggXGEga2V5IGFuZCBhIFVuaWNvZGVUeXBlIFxh IHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIEF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJnZhbHVl KTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBDb25zdHJ1Y3RzIGFuIGF0dHJpYnV0ZSB3aXRo IFxhIGtleSBhbmQgYSBCeXRlc1R5cGUgXGEgdmFsdWUuCisrICAgICAgICovCisrICAgICAgQXR0 cmlidXRlKGNvbnN0IEJ5dGVWZWN0b3IgJnZhbHVlKTsKKysKKysgICAgICAvKiEKKysgICAgICAg KiBDb25zdHJ1Y3RzIGFuIGF0dHJpYnV0ZSB3aXRoIFxhIGtleSBhbmQgYSBEV29yZFR5cGUgXGEg dmFsdWUuCisrICAgICAgICovCisrICAgICAgQXR0cmlidXRlKHVuc2lnbmVkIGludCB2YWx1ZSk7 CisrCisrICAgICAgLyohCisrICAgICAgICogQ29uc3RydWN0cyBhbiBhdHRyaWJ1dGUgd2l0aCBc YSBrZXkgYW5kIGEgUVdvcmRUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIEF0dHJp YnV0ZSh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpOworKworKyAgICAgIC8qIQorKyAgICAgICAq IENvbnN0cnVjdHMgYW4gYXR0cmlidXRlIHdpdGggXGEga2V5IGFuZCBhIFdvcmRUeXBlIFxhIHZh bHVlLgorKyAgICAgICAqLworKyAgICAgIEF0dHJpYnV0ZSh1bnNpZ25lZCBzaG9ydCB2YWx1ZSk7 CisrCisrICAgICAgLyohCisrICAgICAgICogQ29uc3RydWN0cyBhbiBhdHRyaWJ1dGUgd2l0aCBc YSBrZXkgYW5kIGEgQm9vbFR5cGUgXGEgdmFsdWUuCisrICAgICAgICovCisrICAgICAgQXR0cmli dXRlKGJvb2wgdmFsdWUpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIENvbnN0cnVjdCBhbiBh dHRyaWJ1dGUgYXMgYSBjb3B5IG9mIFxhIG90aGVyLgorKyAgICAgICAqLworKyAgICAgIEF0dHJp YnV0ZShjb25zdCBBdHRyaWJ1dGUgJml0ZW0pOworKworKyAgICAgIC8qIQorKyAgICAgICAqIENv cGllcyB0aGUgY29udGVudHMgb2YgXGEgb3RoZXIgaW50byB0aGlzIGl0ZW0uCisrICAgICAgICov CisrICAgICAgQVNGOjpBdHRyaWJ1dGUgJm9wZXJhdG9yPShjb25zdCBBdHRyaWJ1dGUgJm90aGVy KTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBEZXN0cm95cyB0aGUgYXR0cmlidXRlLgorKyAg ICAgICAqLworKyAgICAgIHZpcnR1YWwgfkF0dHJpYnV0ZSgpOworKworKyAgICAgIC8qIQorKyAg ICAgICAqIFJldHVybnMgdHlwZSBvZiB0aGUgdmFsdWUuCisrICAgICAgICovCisrICAgICAgQXR0 cmlidXRlVHlwZXMgdHlwZSgpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVy bnMgdGhlIEJvb2xUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIHVuc2lnbmVkIHNo b3J0IHRvQm9vbCgpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhl IFdvcmRUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIHVuc2lnbmVkIHNob3J0IHRv VVNob3J0KCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgRFdv cmRUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIHVuc2lnbmVkIGludCB0b1VJbnQo KSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSBRV29yZFR5cGUg XGEgdmFsdWUuCisrICAgICAgICovCisrICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvVUxvbmdM b25nKCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgVW5pY29k ZVR5cGUgXGEgdmFsdWUuCisrICAgICAgICovCisrICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u c3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgQnl0ZXNUeXBlIFxhIHZh bHVlLgorKyAgICAgICAqLworKyAgICAgIEJ5dGVWZWN0b3IgdG9CeXRlVmVjdG9yKCkgY29uc3Q7 CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgbGFuZ3VhZ2UgbnVtYmVyLCBv ciAwIGlzIG5vIHN0cmVhbSBudW1iZXIgd2FzIHNldC4KKysgICAgICAgKi8KKysgICAgICBpbnQg bGFuZ3VhZ2UoKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSBsYW5n dWFnZSBudW1iZXIuCisrICAgICAgICovCisrICAgICAgdm9pZCBzZXRMYW5ndWFnZShpbnQgdmFs dWUpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIHN0cmVhbSBudW1iZXIs IG9yIDAgaXMgbm8gc3RyZWFtIG51bWJlciB3YXMgc2V0LgorKyAgICAgICAqLworKyAgICAgIGlu dCBzdHJlYW0oKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSBzdHJl YW0gbnVtYmVyLgorKyAgICAgICAqLworKyAgICAgIHZvaWQgc2V0U3RyZWFtKGludCB2YWx1ZSk7 CisrCisrI2lmbmRlZiBET19OT1RfRE9DVU1FTlQKKysgICAgICAvKiBUSElTIElTIFBSSVZBVEUs IERPTidUIFRPVUNIIElUISAqLworKyAgICAgIFN0cmluZyBwYXJzZShBU0Y6OkZpbGUgJmZpbGUs IGludCBraW5kID0gMCk7CisrI2VuZGlmCisrCisrICAgIHByaXZhdGU6CisrICAgICAgZnJpZW5k IGNsYXNzIEZpbGU7CisrCisrICAgICAgQnl0ZVZlY3RvciByZW5kZXIoY29uc3QgU3RyaW5nICZu YW1lLCBpbnQga2luZCA9IDApIGNvbnN0OworKworKyAgICAgIGNsYXNzIEF0dHJpYnV0ZVByaXZh dGU7CisrICAgICAgQXR0cmlidXRlUHJpdmF0ZSAqZDsKKysgICAgfTsKKysKKysgIH0KKysKKyt9 CisrCisrI2VuZGlmCisKK1Byb3BlcnR5IGNoYW5nZXMgb246IGFtYXJvay9zcmMvbWV0YWRhdGEv YXNmL2FzZmF0dHJpYnV0ZS5oCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitOYW1lOiBzdm46ZW9sLXN0eWxlCisgICAr IG5hdGl2ZQorCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvdGFnbGliX2FzZmZpbGV0 eXBlcmVzb2x2ZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL3Rh Z2xpYl9hc2ZmaWxldHlwZXJlc29sdmVyLmgJKHJldmlzaW9uIDApCisrKysgYW1hcm9rL3NyYy9t ZXRhZGF0YS9hc2YvdGFnbGliX2FzZmZpbGV0eXBlcmVzb2x2ZXIuaAkocmV2aXNpb24gNzQzMDA1 KQorQEAgLTAsMCArMSwzOSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgICAgY29weXJpZ2h0 ICAgICAgICAgICAgOiAoQykgMjAwNSBieSBNYXJ0aW4gQXVtdWVsbGVyCisrICAgIGVtYWlsICAg ICAgICAgICAgICAgIDogYXVtdWVsbEByZXNlcnYuYXQKKysgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor KworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAgKgorKyAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisr ICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V ICAgICAqCisrICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgICAgICAqCisrICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwg SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAg ICoKKysgKiAgIE1BICAwMjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysvLyAo YykgMjAwNSBNYXJ0aW4gQXVtdWVsbGVyIDxhdW11ZWxsQHJlc2Vydi5hdD4KKysvLyBTZWUgQ09Q WUlORyBmaWxlIGZvciBsaWNlbnNpbmcgaW5mb3JtYXRpb24KKysKKysjaWZuZGVmIFRBR0xJQl9B U0ZGSUxFVFlQRVJFU09MVkVSX0gKKysjZGVmaW5lIFRBR0xJQl9BU0ZGSUxFVFlQRVJFU09MVkVS X0gKKysKKysjaW5jbHVkZSA8dGFnbGliL3RmaWxlLmg+CisrI2luY2x1ZGUgPHRhZ2xpYi9maWxl cmVmLmg+CisrCisrCisrY2xhc3MgQVNGRmlsZVR5cGVSZXNvbHZlciA6IHB1YmxpYyBUYWdMaWI6 OkZpbGVSZWY6OkZpbGVUeXBlUmVzb2x2ZXIKKyt7CisrICAgIFRhZ0xpYjo6RmlsZSAqY3JlYXRl RmlsZShjb25zdCBjaGFyICpmaWxlTmFtZSwKKysgICAgICAgICAgICBib29sIHJlYWRBdWRpb1By b3BlcnRpZXMsCisrICAgICAgICAgICAgVGFnTGliOjpBdWRpb1Byb3BlcnRpZXM6OlJlYWRTdHls ZSBhdWRpb1Byb3BlcnRpZXNTdHlsZSkgY29uc3Q7CisrfTsKKysKKysjZW5kaWYKK0luZGV4OiBh bWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Z0YWcuY3BwCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9r L3NyYy9tZXRhZGF0YS9hc2YvYXNmdGFnLmNwcAkocmV2aXNpb24gMCkKKysrKyBhbWFyb2svc3Jj L21ldGFkYXRhL2FzZi9hc2Z0YWcuY3BwCShyZXZpc2lvbiA3NDMwMDUpCitAQCAtMCwwICsxLDIw MiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorKyAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChD KSAyMDA1LTIwMDcgYnkgTHVrw6HFoSBMYWxpbnNrw70KKysgICAgZW1haWwgICAgICAgICAgICAg ICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKysgKiAgIGl0ICB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAq CisrICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u ICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQgICAqCisrICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKysg KiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAg ICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAg ICAgICoKKysgKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgKgorKyAqICAg VVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlICJhc2Z0 YWcuaCIKKysKKyt1c2luZyBuYW1lc3BhY2UgVGFnTGliOworKworK2NsYXNzIEFTRjo6VGFnOjpU YWdQcml2YXRlCisreworK3B1YmxpYzoKKysgIFN0cmluZyB0aXRsZTsKKysgIFN0cmluZyBhcnRp c3Q7CisrICBTdHJpbmcgY29weXJpZ2h0OworKyAgU3RyaW5nIGNvbW1lbnQ7CisrICBTdHJpbmcg cmF0aW5nOworKyAgQXR0cmlidXRlTGlzdE1hcCBhdHRyaWJ1dGVMaXN0TWFwOworK307CisrCisr QVNGOjpUYWc6OlRhZygpCisrOiBUYWdMaWI6OlRhZygpCisreworKyAgZCA9IG5ldyBUYWdQcml2 YXRlOworK30KKysKKytBU0Y6OlRhZzo6flRhZygpCisreworKyAgaWYoZCkKKysgICAgZGVsZXRl IGQ7CisrfQorKworK1N0cmluZworK0FTRjo6VGFnOjp0aXRsZSgpIGNvbnN0CisreworKyAgcmV0 dXJuIGQtPnRpdGxlOworK30KKysKKytTdHJpbmcKKytBU0Y6OlRhZzo6YXJ0aXN0KCkgY29uc3QK Kyt7CisrICByZXR1cm4gZC0+YXJ0aXN0OworK30KKysKKytTdHJpbmcKKytBU0Y6OlRhZzo6YWxi dW0oKSBjb25zdAorK3sKKysgIGlmKGQtPmF0dHJpYnV0ZUxpc3RNYXAuY29udGFpbnMoIldNL0Fs YnVtVGl0bGUiKSkKKysgICAgcmV0dXJuIGQtPmF0dHJpYnV0ZUxpc3RNYXBbIldNL0FsYnVtVGl0 bGUiXVswXS50b1N0cmluZygpOworKyAgcmV0dXJuIFN0cmluZzo6bnVsbDsKKyt9CisrCisrU3Ry aW5nCisrQVNGOjpUYWc6OmNvcHlyaWdodCgpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPmNvcHly aWdodDsKKyt9CisrCisrU3RyaW5nCisrQVNGOjpUYWc6OmNvbW1lbnQoKSBjb25zdAorK3sKKysg IHJldHVybiBkLT5jb21tZW50OworK30KKysKKytTdHJpbmcKKytBU0Y6OlRhZzo6cmF0aW5nKCkg Y29uc3QKKyt7CisrICByZXR1cm4gZC0+cmF0aW5nOworK30KKysKKyt1bnNpZ25lZCBpbnQKKytB U0Y6OlRhZzo6eWVhcigpIGNvbnN0CisreworKyAgaWYoZC0+YXR0cmlidXRlTGlzdE1hcC5jb250 YWlucygiV00vWWVhciIpKQorKyAgICByZXR1cm4gZC0+YXR0cmlidXRlTGlzdE1hcFsiV00vWWVh ciJdWzBdLnRvU3RyaW5nKCkudG9JbnQoKTsKKysgIHJldHVybiAwOworK30KKysKKyt1bnNpZ25l ZCBpbnQKKytBU0Y6OlRhZzo6dHJhY2soKSBjb25zdAorK3sKKysgIGlmKGQtPmF0dHJpYnV0ZUxp c3RNYXAuY29udGFpbnMoIldNL1RyYWNrTnVtYmVyIikpCisrICAgIHJldHVybiBkLT5hdHRyaWJ1 dGVMaXN0TWFwWyJXTS9UcmFja051bWJlciJdWzBdLnRvU3RyaW5nKCkudG9JbnQoKTsKKysgIGlm KGQtPmF0dHJpYnV0ZUxpc3RNYXAuY29udGFpbnMoIldNL1RyYWNrIikpCisrICAgIHJldHVybiBk LT5hdHRyaWJ1dGVMaXN0TWFwWyJXTS9UcmFjayJdWzBdLnRvVUludCgpOworKyAgcmV0dXJuIDA7 CisrfQorKworK1N0cmluZworK0FTRjo6VGFnOjpnZW5yZSgpIGNvbnN0CisreworKyAgaWYoZC0+ YXR0cmlidXRlTGlzdE1hcC5jb250YWlucygiV00vR2VucmUiKSkKKysgICAgcmV0dXJuIGQtPmF0 dHJpYnV0ZUxpc3RNYXBbIldNL0dlbnJlIl1bMF0udG9TdHJpbmcoKTsKKysgIHJldHVybiBTdHJp bmc6Om51bGw7CisrfQorKworK3ZvaWQKKytBU0Y6OlRhZzo6c2V0VGl0bGUoY29uc3QgU3RyaW5n ICZ2YWx1ZSkKKyt7CisrICBkLT50aXRsZSA9IHZhbHVlOworK30KKysKKyt2b2lkCisrQVNGOjpU YWc6OnNldEFydGlzdChjb25zdCBTdHJpbmcgJnZhbHVlKQorK3sKKysgIGQtPmFydGlzdCA9IHZh bHVlOworK30KKysKKyt2b2lkCisrQVNGOjpUYWc6OnNldENvcHlyaWdodChjb25zdCBTdHJpbmcg JnZhbHVlKQorK3sKKysgIGQtPmNvcHlyaWdodCA9IHZhbHVlOworK30KKysKKyt2b2lkCisrQVNG OjpUYWc6OnNldENvbW1lbnQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKyt7CisrICBkLT5jb21tZW50 ID0gdmFsdWU7CisrfQorKworK3ZvaWQKKytBU0Y6OlRhZzo6c2V0UmF0aW5nKGNvbnN0IFN0cmlu ZyAmdmFsdWUpCisreworKyAgZC0+cmF0aW5nID0gdmFsdWU7CisrfQorKworK3ZvaWQKKytBU0Y6 OlRhZzo6c2V0QWxidW0oY29uc3QgU3RyaW5nICZ2YWx1ZSkKKyt7CisrICBzZXRBdHRyaWJ1dGUo IldNL0FsYnVtVGl0bGUiLCB2YWx1ZSk7CisrfQorKworK3ZvaWQKKytBU0Y6OlRhZzo6c2V0R2Vu cmUoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKyt7CisrICBzZXRBdHRyaWJ1dGUoIldNL0dlbnJlIiwg dmFsdWUpOworK30KKysKKyt2b2lkCisrQVNGOjpUYWc6OnNldFllYXIodWludCB2YWx1ZSkKKyt7 CisrICBzZXRBdHRyaWJ1dGUoIldNL1llYXIiLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworK30K KysKKyt2b2lkCisrQVNGOjpUYWc6OnNldFRyYWNrKHVpbnQgdmFsdWUpCisreworKyAgc2V0QXR0 cmlidXRlKCJXTS9UcmFja051bWJlciIsIFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CisrfQorKwor K0FTRjo6QXR0cmlidXRlTGlzdE1hcCYKKytBU0Y6OlRhZzo6YXR0cmlidXRlTGlzdE1hcCgpCisr eworKyAgcmV0dXJuIGQtPmF0dHJpYnV0ZUxpc3RNYXA7CisrfQorKworK3ZvaWQgQVNGOjpUYWc6 OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nICZrZXkpCisreworKyAgQXR0cmlidXRlTGlzdE1hcDo6 SXRlcmF0b3IgaXQgPSBkLT5hdHRyaWJ1dGVMaXN0TWFwLmZpbmQoa2V5KTsKKysgIGlmKGl0ICE9 IGQtPmF0dHJpYnV0ZUxpc3RNYXAuZW5kKCkpCisrICAgIGQtPmF0dHJpYnV0ZUxpc3RNYXAuZXJh c2UoaXQpOworK30KKysKKyt2b2lkIEFTRjo6VGFnOjpzZXRBdHRyaWJ1dGUoY29uc3QgU3RyaW5n ICZuYW1lLCBjb25zdCBBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKKyt7CisrICBBdHRyaWJ1dGVMaXN0 IHZhbHVlOworKyAgdmFsdWUuYXBwZW5kKGF0dHJpYnV0ZSk7CisrICBkLT5hdHRyaWJ1dGVMaXN0 TWFwLmluc2VydChuYW1lLCB2YWx1ZSk7CisrfQorKworK3ZvaWQgQVNGOjpUYWc6OmFkZEF0dHJp YnV0ZShjb25zdCBTdHJpbmcgJm5hbWUsIGNvbnN0IEF0dHJpYnV0ZSAmYXR0cmlidXRlKQorK3sK KysgIGlmKGQtPmF0dHJpYnV0ZUxpc3RNYXAuY29udGFpbnMobmFtZSkpIHsKKysgICAgZC0+YXR0 cmlidXRlTGlzdE1hcFtuYW1lXS5hcHBlbmQoYXR0cmlidXRlKTsKKysgIH0KKysgIGVsc2Ugewor KyAgICBzZXRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTsKKysgIH0KKyt9CisrCisrYm9vbCBB U0Y6OlRhZzo6aXNFbXB0eSgpIGNvbnN0IHsKKysgIHJldHVybiBUYWdMaWI6OlRhZzo6aXNFbXB0 eSgpICYmCisrICAgICAgICAgY29weXJpZ2h0KCkuaXNFbXB0eSgpICYmCisrICAgICAgICAgcmF0 aW5nKCkuaXNFbXB0eSgpICYmCisrICAgICAgICAgZC0+YXR0cmlidXRlTGlzdE1hcC5pc0VtcHR5 KCk7CisrfQorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnByb3BlcnRpZXMuY3Bw Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmcHJvcGVydGllcy5j cHAJKHJldmlzaW9uIDApCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmcHJvcGVydGll cy5jcHAJKHJldmlzaW9uIDc0MzAwNSkKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKysgICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAwNS0yMDA3IGJ5IEx1a8Oh xaEgTGFsaW5za8O9CisrICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21haWwu Y29tCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAg IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorKyAqICAgMi4xIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAg ICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAqICAgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAg ICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCisrICogICBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgor KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCisrICogICBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgICoKKysgKiAgIFVTQSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSA8dHN0cmluZy5oPgorKyNpbmNsdWRlICJh c2Zwcm9wZXJ0aWVzLmgiCisrCisrdXNpbmcgbmFtZXNwYWNlIFRhZ0xpYjsKKysKKytjbGFzcyBB U0Y6OlByb3BlcnRpZXM6OlByb3BlcnRpZXNQcml2YXRlCisreworK3B1YmxpYzoKKysgIFByb3Bl cnRpZXNQcml2YXRlKCk6IGxlbmd0aCgwKSwgYml0cmF0ZSgwKSwgc2FtcGxlUmF0ZSgwKSwgY2hh bm5lbHMoMCkge30KKysgIGludCBsZW5ndGg7CisrICBpbnQgYml0cmF0ZTsKKysgIGludCBzYW1w bGVSYXRlOworKyAgaW50IGNoYW5uZWxzOworK307CisrCisrLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKysvLyBwdWJsaWMgbWVtYmVycworKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisrCisrQVNG OjpQcm9wZXJ0aWVzOjpQcm9wZXJ0aWVzKCkgOiBBdWRpb1Byb3BlcnRpZXMoQXVkaW9Qcm9wZXJ0 aWVzOjpBdmVyYWdlKQorK3sKKysgIGQgPSBuZXcgUHJvcGVydGllc1ByaXZhdGU7CisrfQorKwor K0FTRjo6UHJvcGVydGllczo6flByb3BlcnRpZXMoKQorK3sKKysgIGlmKGQpCisrICAgIGRlbGV0 ZSBkOyAgCisrfQorKworK2ludCBBU0Y6OlByb3BlcnRpZXM6Omxlbmd0aCgpIGNvbnN0Cisrewor KyAgcmV0dXJuIGQtPmxlbmd0aDsKKyt9CisrCisraW50IEFTRjo6UHJvcGVydGllczo6Yml0cmF0 ZSgpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPmJpdHJhdGU7CisrfQorKworK2ludCBBU0Y6OlBy b3BlcnRpZXM6OnNhbXBsZVJhdGUoKSBjb25zdAorK3sKKysgIHJldHVybiBkLT5zYW1wbGVSYXRl OworK30KKysKKytpbnQgQVNGOjpQcm9wZXJ0aWVzOjpjaGFubmVscygpIGNvbnN0CisreworKyAg cmV0dXJuIGQtPmNoYW5uZWxzOworK30gCisrCisrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKysv LyBwcml2YXRlIG1lbWJlcnMKKysvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworKworK3ZvaWQgQVNG OjpQcm9wZXJ0aWVzOjpzZXRMZW5ndGgoaW50IGxlbmd0aCkKKyt7CisrICBkLT5sZW5ndGggPSBs ZW5ndGg7CisrfQorKworK3ZvaWQgQVNGOjpQcm9wZXJ0aWVzOjpzZXRCaXRyYXRlKGludCBsZW5n dGgpCisreworKyAgZC0+Yml0cmF0ZSA9IGxlbmd0aDsKKyt9CisrCisrdm9pZCBBU0Y6OlByb3Bl cnRpZXM6OnNldFNhbXBsZVJhdGUoaW50IGxlbmd0aCkKKyt7CisrICBkLT5zYW1wbGVSYXRlID0g bGVuZ3RoOworK30KKysKKyt2b2lkIEFTRjo6UHJvcGVydGllczo6c2V0Q2hhbm5lbHMoaW50IGxl bmd0aCkKKyt7CisrICBkLT5jaGFubmVscyA9IGxlbmd0aDsKKyt9CisrCisKK1Byb3BlcnR5IGNo YW5nZXMgb246IGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnByb3BlcnRpZXMuY3BwCitfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCitOYW1lOiBzdm46ZW9sLXN0eWxlCisgICArIG5hdGl2ZQorCitJbmRleDogYW1hcm9r L3NyYy9tZXRhZGF0YS9hc2YvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3Jj L21ldGFkYXRhL2FzZi9NYWtlZmlsZS5hbQkocmV2aXNpb24gMCkKKysrKyBhbWFyb2svc3JjL21l dGFkYXRhL2FzZi9NYWtlZmlsZS5hbQkocmV2aXNpb24gNzQzMDA1KQorQEAgLTAsMCArMSwyMCBA QAorK1NVQkRJUlMgPQorKworK0lOQ0xVREVTICAgICAgICAgICA9ICQoYWxsX2luY2x1ZGVzKSAk KHRhZ2xpYl9pbmNsdWRlcykKKytNRVRBU09VUkNFUyAgICAgICAgPSBBVVRPCisrbGlidGFnYXNm X2xhX0xERkxBR1MgID0gJChhbGxfbGlicmFyaWVzKQorK25vaW5zdF9MVExJQlJBUklFUyA9IGxp YnRhZ2FzZi5sYQorKworK2xpYnRhZ2FzZl9sYV9TT1VSQ0VTID0gIFwKKysgICAgICAgICAgICAg ICAgICAgICBhc2ZhdHRyaWJ1dGUuY3BwIFwKKysgICAgICAgICAgICAgICAgICAgICBhc2Zwcm9w ZXJ0aWVzLmNwcCBcCisrICAgICAgICAgICAgICAgICAgICAgYXNmdGFnLmNwcCBcCisrICAgICAg ICAgICAgICAgICAgICAgYXNmZmlsZS5jcHAgXAorKyAgICAgICAgICAgICAgICAgICAgIHRhZ2xp Yl9hc2ZmaWxldHlwZXJlc29sdmVyLmNwcAorKworK25vaW5zdF9IRUFERVJTID0gXAorKyAgICAg ICAgICAgICAgICAgICAgIGFzZmF0dHJpYnV0ZS5oIFwKKysgICAgICAgICAgICAgICAgICAgICBh c2Zwcm9wZXJ0aWVzLmggXAorKyAgICAgICAgICAgICAgICAgICAgIGFzZnRhZy5oIFwKKysgICAg ICAgICAgICAgICAgICAgICBhc2ZmaWxlLmggXAorKyAgICAgICAgICAgICAgICAgICAgIHRhZ2xp Yl9hc2ZmaWxldHlwZXJlc29sdmVyLmgKK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9h c2ZmaWxlLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZmZp bGUuY3BwCShyZXZpc2lvbiAwKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZmZpbGUu Y3BwCShyZXZpc2lvbiA3NDMwMDUpCitAQCAtMCwwICsxLDU0NyBAQAorKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKyAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1LTIwMDcgYnkgTHVrw6HF oSBMYWxpbnNrw70KKysgICAgZW1haWwgICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5j b20KKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAg VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgICoKKysgKiAgIGl0ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAqCisrICogICAyLjEgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAg KgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgICAqCisrICogICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAg ICAgICAgICAgKgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKysgKiAgIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqCisr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICoKKysgKiAgIExpY2Vuc2Ug YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgICAqCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgKgorKyAqICAgVVNBICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlIDx0Ynl0ZXZlY3Rvcmxpc3QuaD4KKysjaW5j bHVkZSA8dHN0cmluZy5oPgorKyNpbmNsdWRlICJhc2ZmaWxlLmgiCisrI2luY2x1ZGUgImFzZnRh Zy5oIgorKyNpbmNsdWRlICJhc2Zwcm9wZXJ0aWVzLmgiCisrCisrdXNpbmcgbmFtZXNwYWNlIFRh Z0xpYjsKKysKKytjbGFzcyBBU0Y6OkZpbGU6OkZpbGVQcml2YXRlCisreworK3B1YmxpYzoKKysg IEZpbGVQcml2YXRlKCk6CisrICAgIHNpemUoMCksCisrICAgIHRhZygwKSwKKysgICAgcHJvcGVy dGllcygwKSwKKysgICAgY29udGVudERlc2NyaXB0aW9uT2JqZWN0KDApLAorKyAgICBleHRlbmRl ZENvbnRlbnREZXNjcmlwdGlvbk9iamVjdCgwKSwKKysgICAgaGVhZGVyRXh0ZW5zaW9uT2JqZWN0 KDApLAorKyAgICBtZXRhZGF0YU9iamVjdCgwKSwKKysgICAgbWV0YWRhdGFMaWJyYXJ5T2JqZWN0 KDApIHt9CisrICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZTsKKysgIEFTRjo6VGFnICp0YWc7Cisr ICBBU0Y6OlByb3BlcnRpZXMgKnByb3BlcnRpZXM7CisrICBMaXN0PEFTRjo6RmlsZTo6QmFzZU9i amVjdCAqPiBvYmplY3RzOworKyAgQVNGOjpGaWxlOjpDb250ZW50RGVzY3JpcHRpb25PYmplY3Qg KmNvbnRlbnREZXNjcmlwdGlvbk9iamVjdDsKKysgIEFTRjo6RmlsZTo6RXh0ZW5kZWRDb250ZW50 RGVzY3JpcHRpb25PYmplY3QgKmV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0OworKyAg QVNGOjpGaWxlOjpIZWFkZXJFeHRlbnNpb25PYmplY3QgKmhlYWRlckV4dGVuc2lvbk9iamVjdDsK KysgIEFTRjo6RmlsZTo6TWV0YWRhdGFPYmplY3QgKm1ldGFkYXRhT2JqZWN0OworKyAgQVNGOjpG aWxlOjpNZXRhZGF0YUxpYnJhcnlPYmplY3QgKm1ldGFkYXRhTGlicmFyeU9iamVjdDsKKyt9Owor KworK3N0YXRpYyBCeXRlVmVjdG9yIGhlYWRlckd1aWQoIlx4MzBceDI2XHhCMlx4NzVceDhFXHg2 Nlx4Q0ZceDExXHhBNlx4RDlceDAwXHhBQVx4MDBceDYyXHhDRVx4NkMiLCAxNik7Cisrc3RhdGlj IEJ5dGVWZWN0b3IgZmlsZVByb3BlcnRpZXNHdWlkKCJceEExXHhEQ1x4QUJceDhDXHg0N1x4QTlc eENGXHgxMVx4OEVceEU0XHgwMFx4QzBceDBDXHgyMFx4NTNceDY1IiwgMTYpOworK3N0YXRpYyBC eXRlVmVjdG9yIHN0cmVhbVByb3BlcnRpZXNHdWlkKCJceDkxXHgwN1x4RENceEI3XHhCN1x4QTlc eENGXHgxMVx4OEVceEU2XHgwMFx4QzBceDBDXHgyMFx4NTNceDY1IiwgMTYpOworK3N0YXRpYyBC eXRlVmVjdG9yIGNvbnRlbnREZXNjcmlwdGlvbkd1aWQoIlx4MzNceDI2XHhCMlx4NzVceDhFXHg2 Nlx4Q0ZceDExXHhBNlx4RDlceDAwXHhBQVx4MDBceDYyXHhDRVx4NkMiLCAxNik7Cisrc3RhdGlj IEJ5dGVWZWN0b3IgZXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25HdWlkKCJceDQwXHhBNFx4RDBc eEQyXHgwN1x4RTNceEQyXHgxMVx4OTdceEYwXHgwMFx4QTBceEM5XHg1RVx4QThceDUwIiwgMTYp OworK3N0YXRpYyBCeXRlVmVjdG9yIGhlYWRlckV4dGVuc2lvbkd1aWQoIlx4YjVceDAzXHhiZl8u XHhhOVx4Y2ZceDExXHg4ZVx4ZTNceDAwXHhjMFx4MGMgU2UiLCAxNik7Cisrc3RhdGljIEJ5dGVW ZWN0b3IgbWV0YWRhdGFHdWlkKCJceEVBXHhDQlx4RjhceEM1XHhBRlt3SFwyMDRnXHhBQVwyMTRE XHhGQUxceENBIiwgMTYpOworK3N0YXRpYyBCeXRlVmVjdG9yIG1ldGFkYXRhTGlicmFyeUd1aWQo IlwyMjRcMDM0I0RcMjMwXDIyNFwzMjFJXDI0MUFceDFkXHgxM05FcFQiLCAxNik7CisrCisrY2xh c3MgQVNGOjpGaWxlOjpCYXNlT2JqZWN0CisreworK3B1YmxpYzoKKysgIEJ5dGVWZWN0b3IgZGF0 YTsKKysgIHZpcnR1YWwgfkJhc2VPYmplY3QoKSB7fQorKyAgdmlydHVhbCBCeXRlVmVjdG9yIGd1 aWQoKSA9IDA7CisrICB2aXJ0dWFsIHZvaWQgcGFyc2UoQVNGOjpGaWxlICpmaWxlLCB1bnNpZ25l ZCBpbnQgc2l6ZSk7CisrICB2aXJ0dWFsIEJ5dGVWZWN0b3IgcmVuZGVyKEFTRjo6RmlsZSAqZmls ZSk7CisrfTsKKysKKytjbGFzcyBBU0Y6OkZpbGU6OlVua25vd25PYmplY3QgOiBwdWJsaWMgQVNG OjpGaWxlOjpCYXNlT2JqZWN0CisreworKyAgQnl0ZVZlY3RvciBteUd1aWQ7CisrcHVibGljOgor KyAgVW5rbm93bk9iamVjdChjb25zdCBCeXRlVmVjdG9yICZndWlkKTsKKysgIEJ5dGVWZWN0b3Ig Z3VpZCgpOworK307CisrCisrY2xhc3MgQVNGOjpGaWxlOjpGaWxlUHJvcGVydGllc09iamVjdCA6 IHB1YmxpYyBBU0Y6OkZpbGU6OkJhc2VPYmplY3QKKyt7CisrcHVibGljOgorKyAgQnl0ZVZlY3Rv ciBndWlkKCk7CisrICB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCBzaXplKTsKKyt9 OworKworK2NsYXNzIEFTRjo6RmlsZTo6U3RyZWFtUHJvcGVydGllc09iamVjdCA6IHB1YmxpYyBB U0Y6OkZpbGU6OkJhc2VPYmplY3QKKyt7CisrcHVibGljOgorKyAgQnl0ZVZlY3RvciBndWlkKCk7 CisrICB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCBzaXplKTsKKyt9OworKworK2Ns YXNzIEFTRjo6RmlsZTo6Q29udGVudERlc2NyaXB0aW9uT2JqZWN0IDogcHVibGljIEFTRjo6Rmls ZTo6QmFzZU9iamVjdAorK3sKKytwdWJsaWM6CisrICBCeXRlVmVjdG9yIGd1aWQoKTsKKysgIHZv aWQgcGFyc2UoQVNGOjpGaWxlICpmaWxlLCB1aW50IHNpemUpOworKyAgQnl0ZVZlY3RvciByZW5k ZXIoQVNGOjpGaWxlICpmaWxlKTsKKyt9OworKworK2NsYXNzIEFTRjo6RmlsZTo6RXh0ZW5kZWRD b250ZW50RGVzY3JpcHRpb25PYmplY3QgOiBwdWJsaWMgQVNGOjpGaWxlOjpCYXNlT2JqZWN0Cisr eworK3B1YmxpYzoKKysgIEJ5dGVWZWN0b3JMaXN0IGF0dHJpYnV0ZURhdGE7CisrICBCeXRlVmVj dG9yIGd1aWQoKTsKKysgIHZvaWQgcGFyc2UoQVNGOjpGaWxlICpmaWxlLCB1aW50IHNpemUpOwor KyAgQnl0ZVZlY3RvciByZW5kZXIoQVNGOjpGaWxlICpmaWxlKTsKKyt9OworKworK2NsYXNzIEFT Rjo6RmlsZTo6TWV0YWRhdGFPYmplY3QgOiBwdWJsaWMgQVNGOjpGaWxlOjpCYXNlT2JqZWN0Cisr eworK3B1YmxpYzoKKysgIEJ5dGVWZWN0b3JMaXN0IGF0dHJpYnV0ZURhdGE7CisrICBCeXRlVmVj dG9yIGd1aWQoKTsKKysgIHZvaWQgcGFyc2UoQVNGOjpGaWxlICpmaWxlLCB1aW50IHNpemUpOwor KyAgQnl0ZVZlY3RvciByZW5kZXIoQVNGOjpGaWxlICpmaWxlKTsKKyt9OworKworK2NsYXNzIEFT Rjo6RmlsZTo6TWV0YWRhdGFMaWJyYXJ5T2JqZWN0IDogcHVibGljIEFTRjo6RmlsZTo6QmFzZU9i amVjdAorK3sKKytwdWJsaWM6CisrICBCeXRlVmVjdG9yTGlzdCBhdHRyaWJ1dGVEYXRhOworKyAg Qnl0ZVZlY3RvciBndWlkKCk7CisrICB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCBz aXplKTsKKysgIEJ5dGVWZWN0b3IgcmVuZGVyKEFTRjo6RmlsZSAqZmlsZSk7CisrfTsKKysKKytj bGFzcyBBU0Y6OkZpbGU6OkhlYWRlckV4dGVuc2lvbk9iamVjdCA6IHB1YmxpYyBBU0Y6OkZpbGU6 OkJhc2VPYmplY3QKKyt7CisrcHVibGljOgorKyAgTGlzdDxBU0Y6OkZpbGU6OkJhc2VPYmplY3Qg Kj4gb2JqZWN0czsKKysgIEJ5dGVWZWN0b3IgZ3VpZCgpOworKyAgdm9pZCBwYXJzZShBU0Y6OkZp bGUgKmZpbGUsIHVpbnQgc2l6ZSk7CisrICBCeXRlVmVjdG9yIHJlbmRlcihBU0Y6OkZpbGUgKmZp bGUpOworK307CisrCisrdm9pZAorK0FTRjo6RmlsZTo6QmFzZU9iamVjdDo6cGFyc2UoQVNGOjpG aWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgc2l6ZSkKKyt7CisrICBkYXRhID0gZmlsZS0+cmVhZEJs b2NrKHNpemUgLSAyNCk7CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZpbGU6OkJhc2VPYmpl Y3Q6OnJlbmRlcihBU0Y6OkZpbGUgKiAvKmZpbGUqLykKKyt7CisrICByZXR1cm4gZ3VpZCgpICsg Qnl0ZVZlY3Rvcjo6ZnJvbUxvbmdMb25nKGRhdGEuc2l6ZSgpICsgMjQsIGZhbHNlKSArIGRhdGE7 CisrfQorKworK0FTRjo6RmlsZTo6VW5rbm93bk9iamVjdDo6VW5rbm93bk9iamVjdChjb25zdCBC eXRlVmVjdG9yICZndWlkKSA6IG15R3VpZChndWlkKQorK3sKKyt9CisrCisrQnl0ZVZlY3Rvcgor K0FTRjo6RmlsZTo6VW5rbm93bk9iamVjdDo6Z3VpZCgpCisreworKyAgcmV0dXJuIG15R3VpZDsK Kyt9CisrCisrQnl0ZVZlY3RvcgorK0FTRjo6RmlsZTo6RmlsZVByb3BlcnRpZXNPYmplY3Q6Omd1 aWQoKQorK3sKKysgIHJldHVybiBmaWxlUHJvcGVydGllc0d1aWQ7CisrfQorKworK3ZvaWQKKytB U0Y6OkZpbGU6OkZpbGVQcm9wZXJ0aWVzT2JqZWN0OjpwYXJzZShBU0Y6OkZpbGUgKmZpbGUsIHVp bnQgc2l6ZSkKKyt7CisrICBCYXNlT2JqZWN0OjpwYXJzZShmaWxlLCBzaXplKTsKKysgIGZpbGUt PmQtPnByb3BlcnRpZXMtPnNldExlbmd0aCgoaW50KShkYXRhLm1pZCg0MCwgOCkudG9Mb25nTG9u ZyhmYWxzZSkgLyAxMDAwMDAwMEwgLSBkYXRhLm1pZCg1NiwgOCkudG9Mb25nTG9uZyhmYWxzZSkg LyAxMDAwTCkpOworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpGaWxlOjpTdHJlYW1Qcm9wZXJ0 aWVzT2JqZWN0OjpndWlkKCkKKyt7CisrICByZXR1cm4gc3RyZWFtUHJvcGVydGllc0d1aWQ7Cisr fQorKworK3ZvaWQKKytBU0Y6OkZpbGU6OlN0cmVhbVByb3BlcnRpZXNPYmplY3Q6OnBhcnNlKEFT Rjo6RmlsZSAqZmlsZSwgdWludCBzaXplKQorK3sKKysgIEJhc2VPYmplY3Q6OnBhcnNlKGZpbGUs IHNpemUpOworKyAgZmlsZS0+ZC0+cHJvcGVydGllcy0+c2V0Q2hhbm5lbHMoZGF0YS5taWQoNTYs IDIpLnRvU2hvcnQoZmFsc2UpKTsKKysgIGZpbGUtPmQtPnByb3BlcnRpZXMtPnNldFNhbXBsZVJh dGUoZGF0YS5taWQoNTgsIDQpLnRvVUludChmYWxzZSkpOworKyAgZmlsZS0+ZC0+cHJvcGVydGll cy0+c2V0Qml0cmF0ZShkYXRhLm1pZCg2MiwgNCkudG9VSW50KGZhbHNlKSAqIDggLyAxMDAwKTsK Kyt9CisrCisrQnl0ZVZlY3RvcgorK0FTRjo6RmlsZTo6Q29udGVudERlc2NyaXB0aW9uT2JqZWN0 OjpndWlkKCkKKyt7CisrICByZXR1cm4gY29udGVudERlc2NyaXB0aW9uR3VpZDsKKyt9CisrCisr dm9pZAorK0FTRjo6RmlsZTo6Q29udGVudERlc2NyaXB0aW9uT2JqZWN0OjpwYXJzZShBU0Y6OkZp bGUgKmZpbGUsIHVpbnQgLypzaXplKi8pCisreworKyAgZmlsZS0+ZC0+Y29udGVudERlc2NyaXB0 aW9uT2JqZWN0ID0gdGhpczsKKysgIGludCB0aXRsZUxlbmd0aCA9IGZpbGUtPnJlYWRXT1JEKCk7 CisrICBpbnQgYXJ0aXN0TGVuZ3RoID0gZmlsZS0+cmVhZFdPUkQoKTsKKysgIGludCBjb3B5cmln aHRMZW5ndGggPSBmaWxlLT5yZWFkV09SRCgpOworKyAgaW50IGNvbW1lbnRMZW5ndGggPSBmaWxl LT5yZWFkV09SRCgpOworKyAgaW50IHJhdGluZ0xlbmd0aCA9IGZpbGUtPnJlYWRXT1JEKCk7Cisr ICBmaWxlLT5kLT50YWctPnNldFRpdGxlKGZpbGUtPnJlYWRTdHJpbmcodGl0bGVMZW5ndGgpKTsK KysgIGZpbGUtPmQtPnRhZy0+c2V0QXJ0aXN0KGZpbGUtPnJlYWRTdHJpbmcoYXJ0aXN0TGVuZ3Ro KSk7CisrICBmaWxlLT5kLT50YWctPnNldENvcHlyaWdodChmaWxlLT5yZWFkU3RyaW5nKGNvcHly aWdodExlbmd0aCkpOworKyAgZmlsZS0+ZC0+dGFnLT5zZXRDb21tZW50KGZpbGUtPnJlYWRTdHJp bmcoY29tbWVudExlbmd0aCkpOworKyAgZmlsZS0+ZC0+dGFnLT5zZXRSYXRpbmcoZmlsZS0+cmVh ZFN0cmluZyhyYXRpbmdMZW5ndGgpKTsKKyt9CisrCisrQnl0ZVZlY3RvcgorK0FTRjo6RmlsZTo6 Q29udGVudERlc2NyaXB0aW9uT2JqZWN0OjpyZW5kZXIoQVNGOjpGaWxlICpmaWxlKQorK3sKKysg IEJ5dGVWZWN0b3IgdjEgPSBmaWxlLT5yZW5kZXJTdHJpbmcoZmlsZS0+ZC0+dGFnLT50aXRsZSgp KTsKKysgIEJ5dGVWZWN0b3IgdjIgPSBmaWxlLT5yZW5kZXJTdHJpbmcoZmlsZS0+ZC0+dGFnLT5h cnRpc3QoKSk7CisrICBCeXRlVmVjdG9yIHYzID0gZmlsZS0+cmVuZGVyU3RyaW5nKGZpbGUtPmQt PnRhZy0+Y29weXJpZ2h0KCkpOworKyAgQnl0ZVZlY3RvciB2NCA9IGZpbGUtPnJlbmRlclN0cmlu ZyhmaWxlLT5kLT50YWctPmNvbW1lbnQoKSk7CisrICBCeXRlVmVjdG9yIHY1ID0gZmlsZS0+cmVu ZGVyU3RyaW5nKGZpbGUtPmQtPnRhZy0+cmF0aW5nKCkpOworKyAgZGF0YS5jbGVhcigpOworKyAg ZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHYxLnNpemUoKSwgZmFsc2UpKTsKKysg IGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2Mi5zaXplKCksIGZhbHNlKSk7Cisr ICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodjMuc2l6ZSgpLCBmYWxzZSkpOwor KyAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHY0LnNpemUoKSwgZmFsc2UpKTsK KysgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2NS5zaXplKCksIGZhbHNlKSk7 CisrICBkYXRhLmFwcGVuZCh2MSk7CisrICBkYXRhLmFwcGVuZCh2Mik7CisrICBkYXRhLmFwcGVu ZCh2Myk7CisrICBkYXRhLmFwcGVuZCh2NCk7CisrICBkYXRhLmFwcGVuZCh2NSk7CisrICByZXR1 cm4gQmFzZU9iamVjdDo6cmVuZGVyKGZpbGUpOworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpG aWxlOjpFeHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbk9iamVjdDo6Z3VpZCgpCisreworKyAgcmV0 dXJuIGV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uR3VpZDsKKyt9CisrCisrdm9pZAorK0FTRjo6 RmlsZTo6RXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3Q6OnBhcnNlKEFTRjo6RmlsZSAq ZmlsZSwgdWludCAvKnNpemUqLykKKyt7CisrICBmaWxlLT5kLT5leHRlbmRlZENvbnRlbnREZXNj cmlwdGlvbk9iamVjdCA9IHRoaXM7CisrICBpbnQgY291bnQgPSBmaWxlLT5yZWFkV09SRCgpOwor KyAgd2hpbGUoY291bnQtLSkgeworKyAgICBBU0Y6OkF0dHJpYnV0ZSBhdHRyaWJ1dGU7CisrICAg IFN0cmluZyBuYW1lID0gYXR0cmlidXRlLnBhcnNlKCpmaWxlKTsKKysgICAgZmlsZS0+ZC0+dGFn LT5hZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTsKKysgIH0KKyt9CisrCisrQnl0ZVZlY3Rv cgorK0FTRjo6RmlsZTo6RXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3Q6OnJlbmRlcihB U0Y6OkZpbGUgKmZpbGUpCisreworKyAgZGF0YS5jbGVhcigpOworKyAgZGF0YS5hcHBlbmQoQnl0 ZVZlY3Rvcjo6ZnJvbVNob3J0KGF0dHJpYnV0ZURhdGEuc2l6ZSgpLCBmYWxzZSkpOworKyAgZGF0 YS5hcHBlbmQoYXR0cmlidXRlRGF0YS50b0J5dGVWZWN0b3IoQnl0ZVZlY3Rvcjo6bnVsbCkpOwor KyAgcmV0dXJuIEJhc2VPYmplY3Q6OnJlbmRlcihmaWxlKTsKKyt9CisrCisrQnl0ZVZlY3Rvcgor K0FTRjo6RmlsZTo6TWV0YWRhdGFPYmplY3Q6Omd1aWQoKQorK3sKKysgIHJldHVybiBtZXRhZGF0 YUd1aWQ7CisrfQorKworK3ZvaWQKKytBU0Y6OkZpbGU6Ok1ldGFkYXRhT2JqZWN0OjpwYXJzZShB U0Y6OkZpbGUgKmZpbGUsIHVpbnQgLypzaXplKi8pCisreworKyAgZmlsZS0+ZC0+bWV0YWRhdGFP YmplY3QgPSB0aGlzOworKyAgaW50IGNvdW50ID0gZmlsZS0+cmVhZFdPUkQoKTsKKysgIHdoaWxl KGNvdW50LS0pIHsKKysgICAgQVNGOjpBdHRyaWJ1dGUgYXR0cmlidXRlOworKyAgICBTdHJpbmcg bmFtZSA9IGF0dHJpYnV0ZS5wYXJzZSgqZmlsZSwgMSk7CisrICAgIGZpbGUtPmQtPnRhZy0+YWRk QXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7CisrICB9CisrfQorKworK0J5dGVWZWN0b3IKKytB U0Y6OkZpbGU6Ok1ldGFkYXRhT2JqZWN0OjpyZW5kZXIoQVNGOjpGaWxlICpmaWxlKQorK3sKKysg IGRhdGEuY2xlYXIoKTsKKysgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydChhdHRy aWJ1dGVEYXRhLnNpemUoKSwgZmFsc2UpKTsKKysgIGRhdGEuYXBwZW5kKGF0dHJpYnV0ZURhdGEu dG9CeXRlVmVjdG9yKEJ5dGVWZWN0b3I6Om51bGwpKTsKKysgIHJldHVybiBCYXNlT2JqZWN0Ojpy ZW5kZXIoZmlsZSk7CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZpbGU6Ok1ldGFkYXRhTGli cmFyeU9iamVjdDo6Z3VpZCgpCisreworKyAgcmV0dXJuIG1ldGFkYXRhTGlicmFyeUd1aWQ7Cisr fQorKworK3ZvaWQKKytBU0Y6OkZpbGU6Ok1ldGFkYXRhTGlicmFyeU9iamVjdDo6cGFyc2UoQVNG OjpGaWxlICpmaWxlLCB1aW50IC8qc2l6ZSovKQorK3sKKysgIGZpbGUtPmQtPm1ldGFkYXRhTGli cmFyeU9iamVjdCA9IHRoaXM7CisrICBpbnQgY291bnQgPSBmaWxlLT5yZWFkV09SRCgpOworKyAg d2hpbGUoY291bnQtLSkgeworKyAgICBBU0Y6OkF0dHJpYnV0ZSBhdHRyaWJ1dGU7CisrICAgIFN0 cmluZyBuYW1lID0gYXR0cmlidXRlLnBhcnNlKCpmaWxlLCAyKTsKKysgICAgZmlsZS0+ZC0+dGFn LT5hZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTsKKysgIH0KKyt9CisrCisrQnl0ZVZlY3Rv cgorK0FTRjo6RmlsZTo6TWV0YWRhdGFMaWJyYXJ5T2JqZWN0OjpyZW5kZXIoQVNGOjpGaWxlICpm aWxlKQorK3sKKysgIGRhdGEuY2xlYXIoKTsKKysgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZy b21TaG9ydChhdHRyaWJ1dGVEYXRhLnNpemUoKSwgZmFsc2UpKTsKKysgIGRhdGEuYXBwZW5kKGF0 dHJpYnV0ZURhdGEudG9CeXRlVmVjdG9yKEJ5dGVWZWN0b3I6Om51bGwpKTsKKysgIHJldHVybiBC YXNlT2JqZWN0OjpyZW5kZXIoZmlsZSk7CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZpbGU6 OkhlYWRlckV4dGVuc2lvbk9iamVjdDo6Z3VpZCgpCisreworKyAgcmV0dXJuIGhlYWRlckV4dGVu c2lvbkd1aWQ7CisrfQorKworK3ZvaWQKKytBU0Y6OkZpbGU6OkhlYWRlckV4dGVuc2lvbk9iamVj dDo6cGFyc2UoQVNGOjpGaWxlICpmaWxlLCB1aW50IC8qc2l6ZSovKQorK3sKKysgIGZpbGUtPmQt PmhlYWRlckV4dGVuc2lvbk9iamVjdCA9IHRoaXM7CisrICBmaWxlLT5zZWVrKDE4LCBGaWxlOjpD dXJyZW50KTsKKysgIGxvbmcgbG9uZyBkYXRhU2l6ZSA9IGZpbGUtPnJlYWREV09SRCgpOworKyAg bG9uZyBsb25nIGRhdGFQb3MgPSAwOworKyAgd2hpbGUoZGF0YVBvcyA8IGRhdGFTaXplKSB7Cisr ICAgIEJ5dGVWZWN0b3IgZ3VpZCA9IGZpbGUtPnJlYWRCbG9jaygxNik7CisrICAgIGxvbmcgbG9u ZyBzaXplID0gZmlsZS0+cmVhZFFXT1JEKCk7CisrICAgIEJhc2VPYmplY3QgKm9iajsKKysgICAg aWYoZ3VpZCA9PSBtZXRhZGF0YUd1aWQpIHsKKysgICAgICBvYmogPSBuZXcgTWV0YWRhdGFPYmpl Y3QoKTsKKysgICAgfQorKyAgICBlbHNlIGlmKGd1aWQgPT0gbWV0YWRhdGFMaWJyYXJ5R3VpZCkg eworKyAgICAgIG9iaiA9IG5ldyBNZXRhZGF0YUxpYnJhcnlPYmplY3QoKTsKKysgICAgfQorKyAg ICBlbHNlIHsKKysgICAgICBvYmogPSBuZXcgVW5rbm93bk9iamVjdChndWlkKTsKKysgICAgfQor KyAgICBvYmotPnBhcnNlKGZpbGUsIHNpemUpOworKyAgICBvYmplY3RzLmFwcGVuZChvYmopOwor KyAgICBkYXRhUG9zICs9IHNpemU7CisrICB9CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZp bGU6OkhlYWRlckV4dGVuc2lvbk9iamVjdDo6cmVuZGVyKEFTRjo6RmlsZSAqZmlsZSkKKyt7Cisr ICBkYXRhLmNsZWFyKCk7CisrICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgb2JqZWN0cy5z aXplKCk7IGkrKykgeworKyAgICBkYXRhLmFwcGVuZChvYmplY3RzW2ldLT5yZW5kZXIoZmlsZSkp OworKyAgfQorKyAgZGF0YSA9IEJ5dGVWZWN0b3IoIlx4MTFceEQyXHhEM1x4QUJceEJBXHhBOVx4 Y2ZceDExXHg4RVx4RTZceDAwXHhDMFx4MENceDIwXHg1M1x4NjVceDA2XHgwMCIsIDE4KSArIEJ5 dGVWZWN0b3I6OmZyb21VSW50KGRhdGEuc2l6ZSgpLCBmYWxzZSkgKyBkYXRhOworKyAgcmV0dXJu IEJhc2VPYmplY3Q6OnJlbmRlcihmaWxlKTsKKyt9CisrCisrLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKysvLyBwdWJsaWMgbWVtYmVycworKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisrCisrQVNG OjpGaWxlOjpGaWxlKGNvbnN0IGNoYXIgKmZpbGUsIGJvb2wgcmVhZFByb3BlcnRpZXMsIFByb3Bl cnRpZXM6OlJlYWRTdHlsZSBwcm9wZXJ0aWVzU3R5bGUpIAorKyAgOiBUYWdMaWI6OkZpbGUoZmls ZSkKKyt7CisrICBkID0gbmV3IEZpbGVQcml2YXRlOworKyAgcmVhZChyZWFkUHJvcGVydGllcywg cHJvcGVydGllc1N0eWxlKTsKKyt9CisrCisrQVNGOjpGaWxlOjp+RmlsZSgpCisreworKyAgZm9y KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGQtPm9iamVjdHMuc2l6ZSgpOyBpKyspIHsKKysgICAg ZGVsZXRlIGQtPm9iamVjdHNbaV07CisrICB9CisrICBpZihkLT50YWcpIHsKKysgICAgZGVsZXRl IGQtPnRhZzsKKysgIH0KKysgIGlmKGQtPnByb3BlcnRpZXMpIHsKKysgICAgZGVsZXRlIGQtPnBy b3BlcnRpZXM7CisrICB9CisrICBkZWxldGUgZDsKKyt9CisrCisrQVNGOjpUYWcgKkFTRjo6Rmls ZTo6dGFnKCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+dGFnOworK30KKysKKytBU0Y6OlByb3Bl cnRpZXMgKkFTRjo6RmlsZTo6YXVkaW9Qcm9wZXJ0aWVzKCkgY29uc3QKKyt7CisrICByZXR1cm4g ZC0+cHJvcGVydGllczsKKyt9CisrCisrdm9pZCBBU0Y6OkZpbGU6OnJlYWQoYm9vbCAvKnJlYWRQ cm9wZXJ0aWVzKi8sIFByb3BlcnRpZXM6OlJlYWRTdHlsZSAvKnByb3BlcnRpZXNTdHlsZSovKQor K3sKKysgIGlmKCFpc1ZhbGlkKCkpCisrICAgIHJldHVybjsKKysKKysgIEJ5dGVWZWN0b3IgZ3Vp ZCA9IHJlYWRCbG9jaygxNik7CisrICBpZihndWlkICE9IGhlYWRlckd1aWQpIHsKKysgICAgcmV0 dXJuOworKyAgfQorKworKyAgZC0+dGFnID0gbmV3IEFTRjo6VGFnKCk7CisrICBkLT5wcm9wZXJ0 aWVzID0gbmV3IEFTRjo6UHJvcGVydGllcygpOworKworKyAgZC0+c2l6ZSA9IHJlYWRRV09SRCgp OworKyAgaW50IG51bU9iamVjdHMgPSByZWFkRFdPUkQoKTsKKysgIHNlZWsoMiwgQ3VycmVudCk7 CisrCisrICBmb3IoaW50IGkgPSAwOyBpIDwgbnVtT2JqZWN0czsgaSsrKSB7CisrICAgIEJ5dGVW ZWN0b3IgZ3VpZCA9IHJlYWRCbG9jaygxNik7CisrICAgIGxvbmcgc2l6ZSA9IChsb25nKXJlYWRR V09SRCgpOworKyAgICBCYXNlT2JqZWN0ICpvYmo7CisrICAgIGlmKGd1aWQgPT0gZmlsZVByb3Bl cnRpZXNHdWlkKSB7CisrICAgICAgb2JqID0gbmV3IEZpbGVQcm9wZXJ0aWVzT2JqZWN0KCk7Cisr ICAgIH0KKysgICAgZWxzZSBpZihndWlkID09IHN0cmVhbVByb3BlcnRpZXNHdWlkKSB7CisrICAg ICAgb2JqID0gbmV3IFN0cmVhbVByb3BlcnRpZXNPYmplY3QoKTsKKysgICAgfQorKyAgICBlbHNl IGlmKGd1aWQgPT0gY29udGVudERlc2NyaXB0aW9uR3VpZCkgeworKyAgICAgIG9iaiA9IG5ldyBD b250ZW50RGVzY3JpcHRpb25PYmplY3QoKTsKKysgICAgfQorKyAgICBlbHNlIGlmKGd1aWQgPT0g ZXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25HdWlkKSB7CisrICAgICAgb2JqID0gbmV3IEV4dGVu ZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0KCk7CisrICAgIH0KKysgICAgZWxzZSBpZihndWlk ID09IGhlYWRlckV4dGVuc2lvbkd1aWQpIHsKKysgICAgICBvYmogPSBuZXcgSGVhZGVyRXh0ZW5z aW9uT2JqZWN0KCk7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgb2JqID0gbmV3IFVua25v d25PYmplY3QoZ3VpZCk7CisrICAgIH0KKysgICAgb2JqLT5wYXJzZSh0aGlzLCBzaXplKTsKKysg ICAgZC0+b2JqZWN0cy5hcHBlbmQob2JqKTsKKysgIH0KKyt9CisrCisrYm9vbCBBU0Y6OkZpbGU6 OnNhdmUoKQorK3sKKysgIGlmKHJlYWRPbmx5KCkpIHsKKysgICAgcmV0dXJuIGZhbHNlOworKyAg fQorKworKyAgaWYoIWQtPmNvbnRlbnREZXNjcmlwdGlvbk9iamVjdCkgeworKyAgICBkLT5jb250 ZW50RGVzY3JpcHRpb25PYmplY3QgPSBuZXcgQ29udGVudERlc2NyaXB0aW9uT2JqZWN0KCk7Cisr ICAgIGQtPm9iamVjdHMuYXBwZW5kKGQtPmNvbnRlbnREZXNjcmlwdGlvbk9iamVjdCk7CisrICB9 CisrICBpZighZC0+ZXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3QpIHsKKysgICAgZC0+ ZXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3QgPSBuZXcgRXh0ZW5kZWRDb250ZW50RGVz Y3JpcHRpb25PYmplY3QoKTsKKysgICAgZC0+b2JqZWN0cy5hcHBlbmQoZC0+ZXh0ZW5kZWRDb250 ZW50RGVzY3JpcHRpb25PYmplY3QpOworKyAgfQorKyAgaWYoIWQtPmhlYWRlckV4dGVuc2lvbk9i amVjdCkgeworKyAgICBkLT5oZWFkZXJFeHRlbnNpb25PYmplY3QgPSBuZXcgSGVhZGVyRXh0ZW5z aW9uT2JqZWN0KCk7CisrICAgIGQtPm9iamVjdHMuYXBwZW5kKGQtPmhlYWRlckV4dGVuc2lvbk9i amVjdCk7CisrICB9CisrICBpZighZC0+bWV0YWRhdGFPYmplY3QpIHsKKysgICAgZC0+bWV0YWRh dGFPYmplY3QgPSBuZXcgTWV0YWRhdGFPYmplY3QoKTsKKysgICAgZC0+aGVhZGVyRXh0ZW5zaW9u T2JqZWN0LT5vYmplY3RzLmFwcGVuZChkLT5tZXRhZGF0YU9iamVjdCk7CisrICB9CisrICBpZigh ZC0+bWV0YWRhdGFMaWJyYXJ5T2JqZWN0KSB7CisrICAgIGQtPm1ldGFkYXRhTGlicmFyeU9iamVj dCA9IG5ldyBNZXRhZGF0YUxpYnJhcnlPYmplY3QoKTsKKysgICAgZC0+aGVhZGVyRXh0ZW5zaW9u T2JqZWN0LT5vYmplY3RzLmFwcGVuZChkLT5tZXRhZGF0YUxpYnJhcnlPYmplY3QpOworKyAgfQor KworKyAgQVNGOjpBdHRyaWJ1dGVMaXN0TWFwOjpDb25zdEl0ZXJhdG9yIGl0ID0gZC0+dGFnLT5h dHRyaWJ1dGVMaXN0TWFwKCkuYmVnaW4oKTsKKysgIGZvcig7IGl0ICE9IGQtPnRhZy0+YXR0cmli dXRlTGlzdE1hcCgpLmVuZCgpOyBpdCsrKSB7CisrICAgIGNvbnN0IFN0cmluZyAmbmFtZSA9IGl0 LT5maXJzdDsKKysgICAgY29uc3QgQXR0cmlidXRlTGlzdCAmYXR0cmlidXRlcyA9IGl0LT5zZWNv bmQ7CisrICAgIGJvb2wgaW5FeHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbk9iamVjdCA9IGZhbHNl OworKyAgICBib29sIGluTWV0YWRhdGFPYmplY3QgPSBmYWxzZTsKKysgICAgZm9yKHVuc2lnbmVk IGludCBqID0gMDsgaiA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyBqKyspIHsKKysgICAgICBjb25zdCBB dHRyaWJ1dGUgJmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbal07CisrICAgICAgaWYoIWluRXh0ZW5k ZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3QgJiYgYXR0cmlidXRlLmxhbmd1YWdlKCkgPT0gMCAm JiBhdHRyaWJ1dGUuc3RyZWFtKCkgPT0gMCkgeworKyAgICAgICAgZC0+ZXh0ZW5kZWRDb250ZW50 RGVzY3JpcHRpb25PYmplY3QtPmF0dHJpYnV0ZURhdGEuYXBwZW5kKGF0dHJpYnV0ZS5yZW5kZXIo bmFtZSkpOworKyAgICAgICAgaW5FeHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbk9iamVjdCA9IHRy dWU7CisrICAgICAgfQorKyAgICAgIGVsc2UgaWYoIWluTWV0YWRhdGFPYmplY3QgJiYgYXR0cmli dXRlLmxhbmd1YWdlKCkgPT0gMCAmJiBhdHRyaWJ1dGUuc3RyZWFtKCkgIT0gMCkgeworKyAgICAg ICAgZC0+bWV0YWRhdGFPYmplY3QtPmF0dHJpYnV0ZURhdGEuYXBwZW5kKGF0dHJpYnV0ZS5yZW5k ZXIobmFtZSwgMSkpOworKyAgICAgICAgaW5NZXRhZGF0YU9iamVjdCA9IHRydWU7CisrICAgICAg fQorKyAgICAgIGVsc2UgeworKyAgICAgICAgZC0+bWV0YWRhdGFMaWJyYXJ5T2JqZWN0LT5hdHRy aWJ1dGVEYXRhLmFwcGVuZChhdHRyaWJ1dGUucmVuZGVyKG5hbWUsIDIpKTsKKysgICAgICB9Cisr ICAgIH0KKysgIH0KKysKKysgIEJ5dGVWZWN0b3IgZGF0YTsKKysgIGZvcih1bnNpZ25lZCBpbnQg aSA9IDA7IGkgPCBkLT5vYmplY3RzLnNpemUoKTsgaSsrKSB7CisrICAgIGRhdGEuYXBwZW5kKGQt Pm9iamVjdHNbaV0tPnJlbmRlcih0aGlzKSk7CisrICB9CisrICBkYXRhID0gaGVhZGVyR3VpZCAr IEJ5dGVWZWN0b3I6OmZyb21Mb25nTG9uZyhkYXRhLnNpemUoKSArIDMwLCBmYWxzZSkgKyBCeXRl VmVjdG9yOjpmcm9tVUludChkLT5vYmplY3RzLnNpemUoKSwgZmFsc2UpICsgQnl0ZVZlY3Rvcigi XHgwMVx4MDIiLCAyKSArIGRhdGE7CisrICBpbnNlcnQoZGF0YSwgMCwgZC0+c2l6ZSk7CisrCisr ICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKysvLyBwcm90 ZWN0ZWQgbWVtYmVycworKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisrCisraW50IEFTRjo6Rmls ZTo6cmVhZEJZVEUoKQorK3sKKysgIEJ5dGVWZWN0b3IgdiA9IHJlYWRCbG9jaygxKTsKKysgIHJl dHVybiB2WzBdOworK30KKysKKytpbnQgQVNGOjpGaWxlOjpyZWFkV09SRCgpCisreworKyAgQnl0 ZVZlY3RvciB2ID0gcmVhZEJsb2NrKDIpOworKyAgcmV0dXJuIHYudG9TaG9ydChmYWxzZSk7Cisr fQorKworK3Vuc2lnbmVkIGludCBBU0Y6OkZpbGU6OnJlYWREV09SRCgpCisreworKyAgQnl0ZVZl Y3RvciB2ID0gcmVhZEJsb2NrKDQpOworKyAgcmV0dXJuIHYudG9VSW50KGZhbHNlKTsKKyt9Cisr CisrbG9uZyBsb25nIEFTRjo6RmlsZTo6cmVhZFFXT1JEKCkKKyt7CisrICBCeXRlVmVjdG9yIHYg PSByZWFkQmxvY2soOCk7CisrICByZXR1cm4gdi50b0xvbmdMb25nKGZhbHNlKTsKKyt9CisrCisr U3RyaW5nCisrQVNGOjpGaWxlOjpyZWFkU3RyaW5nKGludCBsZW5ndGgpCisreworKyAgQnl0ZVZl Y3RvciBkYXRhID0gcmVhZEJsb2NrKGxlbmd0aCk7CisrICB1bnNpZ25lZCBpbnQgc2l6ZSA9IGRh dGEuc2l6ZSgpOworKyAgd2hpbGUgKHNpemUgPj0gMikgeworKyAgICBpZihkYXRhW3NpemUgLSAx XSAhPSAnXDAnIHx8IGRhdGFbc2l6ZSAtIDJdICE9ICdcMCcpIHsKKysgICAgICBicmVhazsKKysg ICAgfQorKyAgICBzaXplIC09IDI7CisrICB9CisrICBpZihzaXplICE9IGRhdGEuc2l6ZSgpKSB7 CisrICAgIGRhdGEucmVzaXplKHNpemUpOworKyAgfQorKyAgcmV0dXJuIFN0cmluZyhkYXRhLCBT dHJpbmc6OlVURjE2TEUpOworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpGaWxlOjpyZW5kZXJT dHJpbmcoY29uc3QgU3RyaW5nICZzdHIsIGJvb2wgaW5jbHVkZUxlbmd0aCkKKyt7CisrICBCeXRl VmVjdG9yIGRhdGEgPSBzdHIuZGF0YShTdHJpbmc6OlVURjE2TEUpICsgQnl0ZVZlY3Rvcjo6ZnJv bVNob3J0KDAsIGZhbHNlKTsKKysgIGlmKGluY2x1ZGVMZW5ndGgpIHsKKysgICAgZGF0YSA9IEJ5 dGVWZWN0b3I6OmZyb21TaG9ydChkYXRhLnNpemUoKSwgZmFsc2UpICsgZGF0YTsKKysgIH0KKysg IHJldHVybiBkYXRhOworK30KKworUHJvcGVydHkgY2hhbmdlcyBvbjogYW1hcm9rL3NyYy9tZXRh ZGF0YS9hc2YvYXNmZmlsZS5jcHAKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK05hbWU6IHN2bjplb2wtc3R5bGUKKyAg ICsgbmF0aXZlCisKK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Z0YWcuaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnRhZy5oCShyZXZpc2lvbiAw KQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnRhZy5oCShyZXZpc2lvbiA3NDMwMDUp CitAQCAtMCwwICsxLDE4MSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAgICBjb3B5cmlnaHQg ICAgICAgICAgICA6IChDKSAyMDA1LTIwMDcgYnkgTHVrw6HFoSBMYWxpbnNrw70KKysgICAgZW1h aWwgICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKysgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKysgKiAg IGl0ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uICAqCisrICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLCBidXQgICAqCisrICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorKyAqICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgICAgICoKKysgKiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgor KyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYyAgICAgICoKKysgKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCisrICogICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEt MTMwNyAgKgorKyAqICAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKwor KyNpZm5kZWYgVEFHTElCX0FTRlRBR19ICisrI2RlZmluZSBUQUdMSUJfQVNGVEFHX0gKKysKKysj aW5jbHVkZSA8dGFnLmg+CisrI2luY2x1ZGUgPHRsaXN0Lmg+CisrI2luY2x1ZGUgPHRtYXAuaD4K KysjaW5jbHVkZSAiYXNmYXR0cmlidXRlLmgiCisrCisrbmFtZXNwYWNlIFRhZ0xpYiB7CisrCisr ICBuYW1lc3BhY2UgQVNGIHsKKysKKysgICAgdHlwZWRlZiBMaXN0PEF0dHJpYnV0ZT4gQXR0cmli dXRlTGlzdDsKKysgICAgdHlwZWRlZiBNYXA8U3RyaW5nLCBBdHRyaWJ1dGVMaXN0PiBBdHRyaWJ1 dGVMaXN0TWFwOworKworKyAgICBjbGFzcyBUYWcgOiBwdWJsaWMgVGFnTGliOjpUYWcgeworKwor KyAgICAgIGZyaWVuZCBjbGFzcyBGaWxlOworKworKyAgICBwdWJsaWM6CisrCisrICAgICAgVGFn KCk7CisrCisrICAgICAgdmlydHVhbCB+VGFnKCk7CisrCisrICAgICAgLyohCisrICAgICAgICog UmV0dXJucyB0aGUgdHJhY2sgbmFtZS4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFN0cmlu ZyB0aXRsZSgpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIGFy dGlzdCBuYW1lLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgU3RyaW5nIGFydGlzdCgpIGNv bnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIGFsYnVtIG5hbWU7IGlm IG5vIGFsYnVtIG5hbWUgaXMgcHJlc2VudCBpbiB0aGUgdGFnCisrICAgICAgICogU3RyaW5nOjpu dWxsIHdpbGwgYmUgcmV0dXJuZWQuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBTdHJpbmcg YWxidW0oKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSB0cmFj ayBjb21tZW50LgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgU3RyaW5nIGNvbW1lbnQoKSBj b25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSBnZW5yZSBuYW1lOyBp ZiBubyBnZW5yZSBpcyBwcmVzZW50IGluIHRoZSB0YWcgU3RyaW5nOjpudWxsCisrICAgICAgICog d2lsbCBiZSByZXR1cm5lZC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFN0cmluZyBnZW5y ZSgpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIHJhdGluZy4K KysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFN0cmluZyByYXRpbmcoKSBjb25zdDsKKysKKysg ICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSBnZW5yZSBuYW1lOyBpZiBubyBnZW5yZSBp cyBwcmVzZW50IGluIHRoZSB0YWcgU3RyaW5nOjpudWxsCisrICAgICAgICogd2lsbCBiZSByZXR1 cm5lZC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFN0cmluZyBjb3B5cmlnaHQoKSBjb25z dDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSB5ZWFyOyBpZiB0aGVyZSBp cyBubyB5ZWFyIHNldCwgdGhpcyB3aWxsIHJldHVybiAwLgorKyAgICAgICAqLworKyAgICAgIHZp cnR1YWwgdWludCB5ZWFyKCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJu cyB0aGUgdHJhY2sgbnVtYmVyOyBpZiB0aGVyZSBpcyBubyB0cmFjayBudW1iZXIgc2V0LCB0aGlz IHdpbGwKKysgICAgICAgKiByZXR1cm4gMC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHVp bnQgdHJhY2soKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSB0aXRs ZSB0byBcYSBzLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z dCBTdHJpbmcgJnMpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIFNldHMgdGhlIGFydGlzdCB0 byBcYSBzLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgdm9pZCBzZXRBcnRpc3QoY29uc3Qg U3RyaW5nICZzKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSBhbGJ1bSB0byBc YSBzLiAgSWYgXGEgcyBpcyBTdHJpbmc6Om51bGwgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUKKysg ICAgICAgKiBjbGVhcmVkLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgdm9pZCBzZXRBbGJ1 bShjb25zdCBTdHJpbmcgJnMpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIFNldHMgdGhlIGNv bW1lbnQgdG8gXGEgcy4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tbWVu dChjb25zdCBTdHJpbmcgJnMpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIFNldHMgdGhlIHJh dGluZyB0byBcYSBzLiAKKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0aW5n KGNvbnN0IFN0cmluZyAmcyk7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0cyB0aGUgY29w eXJpZ2h0IHRvIFxhIHMuIAorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgdm9pZCBzZXRDb3B5 cmlnaHQoY29uc3QgU3RyaW5nICZzKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRo ZSBnZW5yZSB0byBcYSBzLiAKKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0R2Vu cmUoY29uc3QgU3RyaW5nICZzKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSB5 ZWFyIHRvIFxhIGkuICBJZiBcYSBzIGlzIDAgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUgY2xlYXJl ZC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0WWVhcih1aW50IGkpOworKwor KyAgICAgIC8qIQorKyAgICAgICAqIFNldHMgdGhlIHRyYWNrIHRvIFxhIGkuICBJZiBcYSBzIGlz IDAgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUgY2xlYXJlZC4KKysgICAgICAgKi8KKysgICAgICB2 aXJ0dWFsIHZvaWQgc2V0VHJhY2sodWludCBpKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBS ZXR1cm5zIHRydWUgaWYgdGhlIHRhZyBkb2VzIG5vdCBjb250YWluIGFueSBkYXRhLiAgVGhpcyBz aG91bGQgYmUKKysgICAgICAgKiByZWltcGxlbWVudGVkIGluIHN1YmNsYXNzZXMgdGhhdCBwcm92 aWRlIG1vcmUgdGhhbiB0aGUgYmFzaWMgdGFnZ2luZworKyAgICAgICAqIGFiaWxpdGllcyBpbiB0 aGlzIGNsYXNzLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29u c3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUg aXRlbSBsaXN0IG1hcC4gIFRoaXMgaXMgYW4gQXR0cmlidXRlTGlzdE1hcCBvZgorKyAgICAgICAq IGFsbCBvZiB0aGUgaXRlbXMgaW4gdGhlIHRhZy4KKysgICAgICAgKgorKyAgICAgICAqIFRoaXMg aXMgdGhlIG1vc3QgcG93ZXJmdWxsIHN0cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoZSBpdGVtcyBv ZiB0aGUgdGFnLgorKyAgICAgICAqLworKyAgICAgIEF0dHJpYnV0ZUxpc3RNYXAgJmF0dHJpYnV0 ZUxpc3RNYXAoKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZW1vdmVzIHRoZSBcYSBrZXkg YXR0cmlidXRlIGZyb20gdGhlIHRhZworKyAgICAgICAqLworKyAgICAgIHZvaWQgcmVtb3ZlSXRl bShjb25zdCBTdHJpbmcgJm5hbWUpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIFNldHMgdGhl IFxhIGtleSBhdHRyaWJ1dGUgdG8gdGhlIHZhbHVlIG9mIFxhIGF0dHJpYnV0ZS4gSWYgYW4gYXR0 cmlidXRlCisrICAgICAgICogd2l0aCB0aGUgXGEga2V5IGlzIGFscmVhZHkgcHJlc2VudCwgaXQg d2lsbCBiZSByZXBsYWNlZC4KKysgICAgICAgKi8KKysgICAgICB2b2lkIHNldEF0dHJpYnV0ZShj b25zdCBTdHJpbmcgJm5hbWUsIGNvbnN0IEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKKysKKysgICAg ICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSBcYSBrZXkgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBv ZiBcYSBhdHRyaWJ1dGUuIElmIGFuIGF0dHJpYnV0ZQorKyAgICAgICAqIHdpdGggdGhlIFxhIGtl eSBpcyBhbHJlYWR5IHByZXNlbnQsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3QuCisrICAg ICAgICovCisrICAgICAgdm9pZCBhZGRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZuYW1lLCBjb25z dCBBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisrCisrICAgIHByaXZhdGU6CisrCisrICAgICAgY2xh c3MgVGFnUHJpdmF0ZTsKKysgICAgICBUYWdQcml2YXRlICpkOworKyAgICB9OworKyAgfQorK30K KysjZW5kaWYKK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zwcm9wZXJ0aWVzLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zwcm9wZXJ0aWVzLmgJ KHJldmlzaW9uIDApCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmcHJvcGVydGllcy5o CShyZXZpc2lvbiA3NDMwMDUpCitAQCAtMCwwICsxLDY5IEBACisrLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisrICAgIGNvcHlyaWdodCAgICAgICAgICAgIDogKEMpIDIwMDUtMjAwNyBieSBMdWvDocWhIExh bGluc2vDvQorKyAgICBlbWFpbCAgICAgICAgICAgICAgICA6IGxhbGluc2t5QGdtYWlsLmNvbQor KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSAgKgorKyAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKysgKiAgIDIuMSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAqCisr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoKKysgKiAgIFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAg ICAgICAqCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorKyAqICAgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgorKyAqICAgTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAg ICoKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BICAwMjExMS0xMzA3ICAqCisrICogICBVU0EgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisrCisrI2lmbmRlZiBUQUdMSUJfQVNGUFJPUEVSVElFU19ICisrI2RlZmlu ZSBUQUdMSUJfQVNGUFJPUEVSVElFU19ICisrCisrI2luY2x1ZGUgPGF1ZGlvcHJvcGVydGllcy5o PgorKyNpbmNsdWRlIDx0c3RyaW5nLmg+CisrCisrbmFtZXNwYWNlIFRhZ0xpYiB7CisrCisrICBu YW1lc3BhY2UgQVNGIHsKKysKKysgICAgLy8hIEFuIGltcGxlbWVudGF0aW9uIG9mIEFTRiBhdWRp byBwcm9wZXJ0aWVzCisrICAgIGNsYXNzIFByb3BlcnRpZXMgOiBwdWJsaWMgQXVkaW9Qcm9wZXJ0 aWVzCisrICAgIHsKKysgICAgcHVibGljOgorKworKyAgICAgIC8qIQorKyAgICAgICAqIENyZWF0 ZSBhbiBpbnN0YW5jZSBvZiBBU0Y6OlByb3BlcnRpZXMuCisrICAgICAgICovCisrICAgICAgUHJv cGVydGllcygpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIERlc3Ryb3lzIHRoaXMgQVNGOjpQ cm9wZXJ0aWVzIGluc3RhbmNlLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgflByb3BlcnRp ZXMoKTsKKysKKysgICAgICAvLyBSZWltcGxlbWVudGF0aW9ucy4KKysgICAgICB2aXJ0dWFsIGlu dCBsZW5ndGgoKSBjb25zdDsKKysgICAgICB2aXJ0dWFsIGludCBiaXRyYXRlKCkgY29uc3Q7Cisr ICAgICAgdmlydHVhbCBpbnQgc2FtcGxlUmF0ZSgpIGNvbnN0OworKyAgICAgIHZpcnR1YWwgaW50 IGNoYW5uZWxzKCkgY29uc3Q7CisrCisrI2lmbmRlZiBET19OT1RfRE9DVU1FTlQKKysgICAgICB2 b2lkIHNldExlbmd0aChpbnQgdmFsdWUpOworKyAgICAgIHZvaWQgc2V0Qml0cmF0ZShpbnQgdmFs dWUpOworKyAgICAgIHZvaWQgc2V0U2FtcGxlUmF0ZShpbnQgdmFsdWUpOworKyAgICAgIHZvaWQg c2V0Q2hhbm5lbHMoaW50IHZhbHVlKTsKKysjZW5kaWYKKysKKysgICAgcHJpdmF0ZToKKysgICAg ICBjbGFzcyBQcm9wZXJ0aWVzUHJpdmF0ZTsKKysgICAgICBQcm9wZXJ0aWVzUHJpdmF0ZSAqZDsK KysgICAgfTsKKysKKysgIH0KKysKKyt9CisrCisrI2VuZGlmIAorCitQcm9wZXJ0eSBjaGFuZ2Vz IG9uOiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zwcm9wZXJ0aWVzLmgKK19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K K05hbWU6IHN2bjplb2wtc3R5bGUKKyAgICsgbmF0aXZlCisKK0luZGV4OiBhbWFyb2svc3JjL21l dGFkYXRhL2FzZi9hc2ZhdHRyaWJ1dGUuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9t ZXRhZGF0YS9hc2YvYXNmYXR0cmlidXRlLmNwcAkocmV2aXNpb24gMCkKKysrKyBhbWFyb2svc3Jj L21ldGFkYXRhL2FzZi9hc2ZhdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiA3NDMwMDUpCitAQCAtMCww ICsxLDMwNCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAgICBjb3B5cmlnaHQgICAgICAgICAg ICA6IChDKSAyMDA1LTIwMDcgYnkgTHVrw6HFoSBMYWxpbnNrw70KKysgICAgZW1haWwgICAgICAg ICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKysgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisr LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKysgKiAgIGl0ICB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uICAqCisrICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAg IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCBidXQgICAqCisrICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorKyAqICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAg ICoKKysgKiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu ICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyAgICAgICoKKysgKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCisrICogICBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgKgor KyAqICAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRl IDx0YWdsaWIuaD4KKysjaW5jbHVkZSAiYXNmYXR0cmlidXRlLmgiCisrI2luY2x1ZGUgImFzZmZp bGUuaCIKKysKKyt1c2luZyBuYW1lc3BhY2UgVGFnTGliOworKworK2NsYXNzIEFTRjo6QXR0cmli dXRlOjpBdHRyaWJ1dGVQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZXIKKyt7CisrcHVibGljOgor KyAgQXR0cmlidXRlUHJpdmF0ZSgpCisrICAgIDogc3RyZWFtKDApLAorKyAgICAgIGxhbmd1YWdl KDApIHt9CisrICBBdHRyaWJ1dGVUeXBlcyB0eXBlOworKyAgU3RyaW5nIHN0cmluZ1ZhbHVlOwor KyAgQnl0ZVZlY3RvciBieXRlVmVjdG9yVmFsdWU7CisrICB1bmlvbiB7CisrICAgIHVuc2lnbmVk IGludCBpbnRWYWx1ZTsKKysgICAgdW5zaWduZWQgc2hvcnQgc2hvcnRWYWx1ZTsKKysgICAgdW5z aWduZWQgbG9uZyBsb25nIGxvbmdMb25nVmFsdWU7CisrICAgIGJvb2wgYm9vbFZhbHVlOworKyAg fTsKKysgIGludCBzdHJlYW07CisrICBpbnQgbGFuZ3VhZ2U7CisrfTsKKysKKysvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworKy8vIHB1YmxpYyBtZW1iZXJzCisrLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKysKKytBU0Y6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKCkKKyt7CisrICBkID0gbmV3IEF0dHJp YnV0ZVByaXZhdGU7CisrICBkLT50eXBlID0gVW5pY29kZVR5cGU7CisrfQorKworK0FTRjo6QXR0 cmlidXRlOjpBdHRyaWJ1dGUoY29uc3QgQVNGOjpBdHRyaWJ1dGUgJm90aGVyKQorKyAgOiBkKG90 aGVyLmQpCisreworKyAgZC0+cmVmKCk7CisrfQorKworK0FTRjo6QXR0cmlidXRlICYKKytBU0Y6 OkF0dHJpYnV0ZTo6b3BlcmF0b3I9KGNvbnN0IEFTRjo6QXR0cmlidXRlICZvdGhlcikKKyt7Cisr ICBpZihkLT5kZXJlZigpKQorKyAgICBkZWxldGUgZDsKKysgIGQgPSBvdGhlci5kOworKyAgZC0+ cmVmKCk7CisrICByZXR1cm4gKnRoaXM7CisrfQorKworK0FTRjo6QXR0cmlidXRlOjp+QXR0cmli dXRlKCkKKyt7CisrICBpZihkLT5kZXJlZigpKQorKyAgICBkZWxldGUgZDsKKyt9CisrCisrQVNG OjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJnZhbHVlKQorK3sKKysgIGQgPSBu ZXcgQXR0cmlidXRlUHJpdmF0ZTsKKysgIGQtPnR5cGUgPSBVbmljb2RlVHlwZTsKKysgIGQtPnN0 cmluZ1ZhbHVlID0gdmFsdWU7CisrfQorKworK0FTRjo6QXR0cmlidXRlOjpBdHRyaWJ1dGUoY29u c3QgQnl0ZVZlY3RvciAmdmFsdWUpCisreworKyAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOwor KyAgZC0+dHlwZSA9IEJ5dGVzVHlwZTsKKysgIGQtPmJ5dGVWZWN0b3JWYWx1ZSA9IHZhbHVlOwor K30KKysKKytBU0Y6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKHVuc2lnbmVkIGludCB2YWx1ZSkKKyt7 CisrICBkID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7CisrICBkLT50eXBlID0gRFdvcmRUeXBlOwor KyAgZC0+aW50VmFsdWUgPSB2YWx1ZTsKKyt9CisrCisrQVNGOjpBdHRyaWJ1dGU6OkF0dHJpYnV0 ZSh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCisreworKyAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2 YXRlOworKyAgZC0+dHlwZSA9IFFXb3JkVHlwZTsKKysgIGQtPmxvbmdMb25nVmFsdWUgPSB2YWx1 ZTsKKyt9CisrCisrQVNGOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSh1bnNpZ25lZCBzaG9ydCB2YWx1 ZSkKKyt7CisrICBkID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7CisrICBkLT50eXBlID0gV29yZFR5 cGU7CisrICBkLT5zaG9ydFZhbHVlID0gdmFsdWU7CisrfQorKworK0FTRjo6QXR0cmlidXRlOjpB dHRyaWJ1dGUoYm9vbCB2YWx1ZSkKKyt7CisrICBkID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7Cisr ICBkLT50eXBlID0gQm9vbFR5cGU7CisrICBkLT5ib29sVmFsdWUgPSB2YWx1ZTsKKyt9CisrCisr QVNGOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZVR5cGVzCisrQVNGOjpBdHRyaWJ1dGU6OnR5cGUoKSBj b25zdAorK3sKKysgIHJldHVybiBkLT50eXBlOworK30KKysKKytTdHJpbmcKKytBU0Y6OkF0dHJp YnV0ZTo6dG9TdHJpbmcoKSBjb25zdAorK3sKKysgIHJldHVybiBkLT5zdHJpbmdWYWx1ZTsKKyt9 CisrCisrQnl0ZVZlY3RvcgorK0FTRjo6QXR0cmlidXRlOjp0b0J5dGVWZWN0b3IoKSBjb25zdAor K3sKKysgIHJldHVybiBkLT5ieXRlVmVjdG9yVmFsdWU7CisrfQorKworK3Vuc2lnbmVkIHNob3J0 CisrQVNGOjpBdHRyaWJ1dGU6OnRvQm9vbCgpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPnNob3J0 VmFsdWU7CisrfQorKworK3Vuc2lnbmVkIHNob3J0CisrQVNGOjpBdHRyaWJ1dGU6OnRvVVNob3J0 KCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+c2hvcnRWYWx1ZTsKKyt9CisrCisrdW5zaWduZWQg aW50CisrQVNGOjpBdHRyaWJ1dGU6OnRvVUludCgpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPmlu dFZhbHVlOworK30KKysKKyt1bnNpZ25lZCBsb25nIGxvbmcKKytBU0Y6OkF0dHJpYnV0ZTo6dG9V TG9uZ0xvbmcoKSBjb25zdAorK3sKKysgIHJldHVybiBkLT5sb25nTG9uZ1ZhbHVlOworK30KKysK KytTdHJpbmcKKytBU0Y6OkF0dHJpYnV0ZTo6cGFyc2UoQVNGOjpGaWxlICZmLCBpbnQga2luZCkK Kyt7CisrICBpbnQgc2l6ZSwgbmFtZUxlbmd0aDsKKysgIFN0cmluZyBuYW1lOworKworKyAgLy8g ZXh0ZW5kZWQgY29udGVudCBkZXNjcmlwdG9yCisrICBpZihraW5kID09IDApIHsKKysgICAgbmFt ZUxlbmd0aCA9IGYucmVhZFdPUkQoKTsKKysgICAgbmFtZSA9IGYucmVhZFN0cmluZyhuYW1lTGVu Z3RoKTsKKysgICAgZC0+dHlwZSA9IEFTRjo6QXR0cmlidXRlOjpBdHRyaWJ1dGVUeXBlcyhmLnJl YWRXT1JEKCkpOworKyAgICBzaXplID0gZi5yZWFkV09SRCgpOworKyAgfQorKyAgLy8gbWV0YWRh dGEgJiBtZXRhZGF0YSBsaWJyYXJ5CisrICBlbHNlIHsKKysgICAgaW50IHRlbXAgPSBmLnJlYWRX T1JEKCk7CisrICAgIC8vIG1ldGFkYXRhIGxpYnJhcnkKKysgICAgaWYoa2luZCA9PSAyKSB7Cisr ICAgICAgZC0+bGFuZ3VhZ2UgPSB0ZW1wOworKyAgICB9CisrICAgIGQtPnN0cmVhbSA9IGYucmVh ZFdPUkQoKTsKKysgICAgbmFtZUxlbmd0aCA9IGYucmVhZFdPUkQoKTsKKysgICAgZC0+dHlwZSA9 IEFTRjo6QXR0cmlidXRlOjpBdHRyaWJ1dGVUeXBlcyhmLnJlYWRXT1JEKCkpOworKyAgICBzaXpl ID0gZi5yZWFkRFdPUkQoKTsKKysgICAgbmFtZSA9IGYucmVhZFN0cmluZyhuYW1lTGVuZ3RoKTsK KysgIH0KKysKKysgIHN3aXRjaChkLT50eXBlKSB7CisrICBjYXNlIFdvcmRUeXBlOgorKyAgICBk LT5zaG9ydFZhbHVlID0gZi5yZWFkV09SRCgpOworKyAgICBicmVhazsKKysKKysgIGNhc2UgQm9v bFR5cGU6CisrICAgIGlmKGtpbmQgPT0gMCkgeworKyAgICAgIGQtPmJvb2xWYWx1ZSA9IGYucmVh ZERXT1JEKCkgPT0gMTsKKysgICAgfQorKyAgICBlbHNlIHsKKysgICAgICBkLT5ib29sVmFsdWUg PSBmLnJlYWRXT1JEKCkgPT0gMTsKKysgICAgfQorKyAgICBicmVhazsKKysKKysgIGNhc2UgRFdv cmRUeXBlOgorKyAgICBkLT5pbnRWYWx1ZSA9IGYucmVhZERXT1JEKCk7CisrICAgIGJyZWFrOwor KworKyAgY2FzZSBRV29yZFR5cGU6CisrICAgIGQtPmxvbmdMb25nVmFsdWUgPSBmLnJlYWRRV09S RCgpOworKyAgICBicmVhazsKKysKKysgIGNhc2UgVW5pY29kZVR5cGU6CisrICAgIGQtPnN0cmlu Z1ZhbHVlID0gZi5yZWFkU3RyaW5nKHNpemUpOworKyAgICBicmVhazsKKysKKysgIGNhc2UgQnl0 ZXNUeXBlOgorKyAgY2FzZSBHdWlkVHlwZToKKysgICAgZC0+Ynl0ZVZlY3RvclZhbHVlID0gZi5y ZWFkQmxvY2soc2l6ZSk7CisrICAgIGJyZWFrOworKyAgfQorKworKyAgcmV0dXJuIG5hbWU7Cisr fQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkF0dHJpYnV0ZTo6cmVuZGVyKGNvbnN0IFN0cmluZyAm bmFtZSwgaW50IGtpbmQpIGNvbnN0CisreworKyAgQnl0ZVZlY3RvciBkYXRhOworKworKyAgc3dp dGNoIChkLT50eXBlKSB7CisrICBjYXNlIFdvcmRUeXBlOgorKyAgICBkYXRhLmFwcGVuZChCeXRl VmVjdG9yOjpmcm9tU2hvcnQoZC0+c2hvcnRWYWx1ZSwgZmFsc2UpKTsKKysgICAgYnJlYWs7Cisr CisrICBjYXNlIEJvb2xUeXBlOgorKyAgICBpZihraW5kID09IDApIHsKKysgICAgICBkYXRhLmFw cGVuZChCeXRlVmVjdG9yOjpmcm9tVUludChkLT5ib29sVmFsdWUgPyAxIDogMCwgZmFsc2UpKTsK KysgICAgfQorKyAgICBlbHNlIHsKKysgICAgICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9t U2hvcnQoZC0+Ym9vbFZhbHVlID8gMSA6IDAsIGZhbHNlKSk7CisrICAgIH0KKysgICAgYnJlYWs7 CisrCisrICBjYXNlIERXb3JkVHlwZToKKysgICAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJv bVVJbnQoZC0+aW50VmFsdWUsIGZhbHNlKSk7CisrICAgIGJyZWFrOworKworKyAgY2FzZSBRV29y ZFR5cGU6CisrICAgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21Mb25nTG9uZyhkLT5sb25n TG9uZ1ZhbHVlLCBmYWxzZSkpOworKyAgICBicmVhazsKKysKKysgIGNhc2UgVW5pY29kZVR5cGU6 CisrICAgIGRhdGEuYXBwZW5kKEZpbGU6OnJlbmRlclN0cmluZyhkLT5zdHJpbmdWYWx1ZSkpOwor KyAgICBicmVhazsKKysKKysgIGNhc2UgQnl0ZXNUeXBlOgorKyAgY2FzZSBHdWlkVHlwZToKKysg ICAgZGF0YS5hcHBlbmQoZC0+Ynl0ZVZlY3RvclZhbHVlKTsKKysgICAgYnJlYWs7CisrICB9Cisr CisrICBpZihraW5kID09IDApIHsKKysgICAgZGF0YSA9IEZpbGU6OnJlbmRlclN0cmluZyhuYW1l LCB0cnVlKSArCisrICAgICAgICAgICBCeXRlVmVjdG9yOjpmcm9tU2hvcnQoKGludClkLT50eXBl LCBmYWxzZSkgKworKyAgICAgICAgICAgQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KGRhdGEuc2l6ZSgp LCBmYWxzZSkgKworKyAgICAgICAgICAgZGF0YTsKKysgIH0KKysgIGVsc2UgeworKyAgICBCeXRl VmVjdG9yIG5hbWVEYXRhID0gRmlsZTo6cmVuZGVyU3RyaW5nKG5hbWUpOworKyAgICBkYXRhID0g Qnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KGtpbmQgPT0gMiA/IGQtPmxhbmd1YWdlIDogMCwgZmFsc2Up ICsKKysgICAgICAgICAgIEJ5dGVWZWN0b3I6OmZyb21TaG9ydChkLT5zdHJlYW0sIGZhbHNlKSAr CisrICAgICAgICAgICBCeXRlVmVjdG9yOjpmcm9tU2hvcnQobmFtZURhdGEuc2l6ZSgpLCBmYWxz ZSkgKworKyAgICAgICAgICAgQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KChpbnQpZC0+dHlwZSwgZmFs c2UpICsKKysgICAgICAgICAgIEJ5dGVWZWN0b3I6OmZyb21VSW50KGRhdGEuc2l6ZSgpLCBmYWxz ZSkgKworKyAgICAgICAgICAgbmFtZURhdGEgKworKyAgICAgICAgICAgZGF0YTsKKysgIH0KKysK KysgIHJldHVybiBkYXRhOworK30KKysKKytpbnQKKytBU0Y6OkF0dHJpYnV0ZTo6bGFuZ3VhZ2Uo KSBjb25zdAorK3sKKysgIHJldHVybiBkLT5sYW5ndWFnZTsKKyt9CisrCisrdm9pZAorK0FTRjo6 QXR0cmlidXRlOjpzZXRMYW5ndWFnZShpbnQgdmFsdWUpCisreworKyAgZC0+bGFuZ3VhZ2UgPSB2 YWx1ZTsKKyt9CisrCisraW50CisrQVNGOjpBdHRyaWJ1dGU6OnN0cmVhbSgpIGNvbnN0Cisrewor KyAgcmV0dXJuIGQtPnN0cmVhbTsKKyt9CisrCisrdm9pZAorK0FTRjo6QXR0cmlidXRlOjpzZXRT dHJlYW0oaW50IHZhbHVlKQorK3sKKysgIGQtPnN0cmVhbSA9IHZhbHVlOworK30KKworUHJvcGVy dHkgY2hhbmdlcyBvbjogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmYXR0cmlidXRlLmNwcAor X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXworTmFtZTogc3ZuOmVvbC1zdHlsZQorICAgKyBuYXRpdmUKKworSW5kZXg6IGFt YXJvay9zcmMvbWV0YWRhdGEvbXA0L21wNGZpbGUuY3BwCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9r L3NyYy9tZXRhZGF0YS9tcDQvbXA0ZmlsZS5jcHAJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFy b2svc3JjL21ldGFkYXRhL21wNC9tcDRmaWxlLmNwcAkod29ya2luZyBjb3B5KQorQEAgLTE1Niwx MCArMTU2LDcgQEAKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBpZighTVA0Q2xvc2UoaGFuZGxl KSkKKy0gICAgeworLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJjbG9zZSBmYWlsZWRcbiIpOwor LSAgICB9CisrICAgIE1QNENsb3NlKGhhbmRsZSk7CisgCisgICAgIG1wNGZpbGUgPSBNUDRSZWFk KG5hbWUoKSk7CisgICAgIGlmKG1wNGZpbGUgPT0gTVA0X0lOVkFMSURfRklMRV9IQU5ETEUpCitJ bmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvdGFnbGliX3dtYWZpbGV0eXBlcmVzb2x2ZXIu aAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3RhZ2xpYl93bWFmaWxl dHlwZXJlc29sdmVyLmgJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRh L3dtYS90YWdsaWJfd21hZmlsZXR5cGVyZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCitAQCAtMSwz OSArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAgICBjb3B5cmlnaHQgICAgICAgICAg ICA6IChDKSAyMDA1IGJ5IE1hcnRpbiBBdW11ZWxsZXIKKy0gICAgZW1haWwgICAgICAgICAgICAg ICAgOiBhdW11ZWxsQHJlc2Vydi5hdAorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKy0gKiAgIGl0ICB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAq CistICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u ICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQgICAqCistICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKy0g KiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAg ICAgICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAg ICAgICoKKy0gKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sICAgICAgICAgICAgKgorLSAqICAg TUEgIDAyMTEwLTEzMDEgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8vIChjKSAyMDA1IE1h cnRpbiBBdW11ZWxsZXIgPGF1bXVlbGxAcmVzZXJ2LmF0PgorLS8vIFNlZSBDT1BZSU5HIGZpbGUg Zm9yIGxpY2Vuc2luZyBpbmZvcm1hdGlvbgorLQorLSNpZm5kZWYgVEFHTElCX1dNQUZJTEVUWVBF UkVTT0xWRVJfSAorLSNkZWZpbmUgVEFHTElCX1dNQUZJTEVUWVBFUkVTT0xWRVJfSAorLQorLSNp bmNsdWRlIDx0YWdsaWIvdGZpbGUuaD4KKy0jaW5jbHVkZSA8dGFnbGliL2ZpbGVyZWYuaD4KKy0K Ky0KKy1jbGFzcyBXTUFGaWxlVHlwZVJlc29sdmVyIDogcHVibGljIFRhZ0xpYjo6RmlsZVJlZjo6 RmlsZVR5cGVSZXNvbHZlcgorLXsKKy0gICAgVGFnTGliOjpGaWxlICpjcmVhdGVGaWxlKGNvbnN0 IGNoYXIgKmZpbGVOYW1lLAorLSAgICAgICAgICAgIGJvb2wgcmVhZEF1ZGlvUHJvcGVydGllcywK Ky0gICAgICAgICAgICBUYWdMaWI6OkF1ZGlvUHJvcGVydGllczo6UmVhZFN0eWxlIGF1ZGlvUHJv cGVydGllc1N0eWxlKSBjb25zdDsKKy19OworLQorLSNlbmRpZgorSW5kZXg6IGFtYXJvay9zcmMv bWV0YWRhdGEvd21hL3dtYXRhZy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFk YXRhL3dtYS93bWF0YWcuY3BwCShyZXZpc2lvbiA3MDUyMzEpCisrKysgYW1hcm9rL3NyYy9tZXRh ZGF0YS93bWEvd21hdGFnLmNwcAkod29ya2luZyBjb3B5KQorQEAgLTEsMjEwICswLDAgQEAKKy0v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCistICAgIGNvcHlyaWdodCAgICAgICAgICAgIDogKEMpIDIwMDUg YnkgTHVrYXMgTGFsaW5za3kKKy0gICAgZW1haWwgICAgICAgICAgICAgICAgOiBsYWxpbnNreUBn bWFpbC5jb20KKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Ky0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorLSAqICAgMi4xIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAg ICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorLSAq ICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCistICogICBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAg ICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCistICogICBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAgICoKKy0gKiAgIE1BICAwMjExMC0xMzAx ICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jaW5jbHVkZSA8d21hdGFnLmg+CistCistdXNp bmcgbmFtZXNwYWNlIFRhZ0xpYjsKKy0KKy1jbGFzcyBXTUE6OlRhZzo6VGFnUHJpdmF0ZQorLXsK Ky1wdWJsaWM6CistICBTdHJpbmcgdGl0bGU7CistICBTdHJpbmcgYXJ0aXN0OworLSAgU3RyaW5n IGNvcHlyaWdodDsKKy0gIFN0cmluZyBjb21tZW50OworLSAgU3RyaW5nIHJhdGluZzsKKy0gIEF0 dHJpYnV0ZU1hcCBhdHRyaWJ1dGVNYXA7CistfTsKKy0KKy1XTUE6OlRhZzo6VGFnKCkKKy06IFRh Z0xpYjo6VGFnKCkKKy17CistICBkID0gbmV3IFRhZ1ByaXZhdGU7CistfQorLQorLVdNQTo6VGFn Ojp+VGFnKCkKKy17CistICBpZihkKQorLSAgICBkZWxldGUgZDsgIAorLX0KKy0KKy1TdHJpbmcK Ky1XTUE6OlRhZzo6dGl0bGUoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT50aXRsZTsgIAorLX0K Ky0KKy1TdHJpbmcKKy1XTUE6OlRhZzo6YXJ0aXN0KCkgY29uc3QKKy17CistICByZXR1cm4gZC0+ YXJ0aXN0OyAgCistfQorLQorLVN0cmluZworLVdNQTo6VGFnOjphbGJ1bSgpIGNvbnN0Cistewor LSAgaWYoZC0+YXR0cmlidXRlTWFwLmNvbnRhaW5zKCJXTS9BbGJ1bVRpdGxlIikpCistICAgIHJl dHVybiBkLT5hdHRyaWJ1dGVNYXBbIldNL0FsYnVtVGl0bGUiXS50b1N0cmluZygpOworLSAgcmV0 dXJuIFN0cmluZzo6bnVsbDsKKy19CistCistU3RyaW5nCistV01BOjpUYWc6OmNvcHlyaWdodCgp IGNvbnN0CisteworLSAgcmV0dXJuIGQtPmNvcHlyaWdodDsKKy19CistCistU3RyaW5nCistV01B OjpUYWc6OmNvbW1lbnQoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT5jb21tZW50OworLX0KKy0K Ky1TdHJpbmcKKy1XTUE6OlRhZzo6cmF0aW5nKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+cmF0 aW5nOworLX0KKy0KKy11bnNpZ25lZCBpbnQKKy1XTUE6OlRhZzo6eWVhcigpIGNvbnN0Cistewor LSAgaWYoZC0+YXR0cmlidXRlTWFwLmNvbnRhaW5zKCJXTS9ZZWFyIikpCistICAgIHJldHVybiBk LT5hdHRyaWJ1dGVNYXBbIldNL1llYXIiXS50b0ludCgpOworLSAgcmV0dXJuIDA7CistfQorLQor LXVuc2lnbmVkIGludAorLVdNQTo6VGFnOjp0cmFjaygpIGNvbnN0CisteworLSAgaWYoZC0+YXR0 cmlidXRlTWFwLmNvbnRhaW5zKCJXTS9UcmFja051bWJlciIpKQorLSAgICByZXR1cm4gZC0+YXR0 cmlidXRlTWFwWyJXTS9UcmFja051bWJlciJdLnRvSW50KCk7CistICBpZihkLT5hdHRyaWJ1dGVN YXAuY29udGFpbnMoIldNL1RyYWNrIikpCistICAgIHJldHVybiBkLT5hdHRyaWJ1dGVNYXBbIldN L1RyYWNrIl0udG9JbnQoKTsKKy0gIHJldHVybiAwOworLX0KKy0KKy1TdHJpbmcKKy1XTUE6OlRh Zzo6Z2VucmUoKSBjb25zdAorLXsKKy0gIGlmKGQtPmF0dHJpYnV0ZU1hcC5jb250YWlucygiV00v R2VucmUiKSkKKy0gICAgcmV0dXJuIGQtPmF0dHJpYnV0ZU1hcFsiV00vR2VucmUiXS50b1N0cmlu ZygpOworLSAgcmV0dXJuIFN0cmluZzo6bnVsbDsKKy19CistCistdm9pZCAKKy1XTUE6OlRhZzo6 c2V0VGl0bGUoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKy17CistICBkLT50aXRsZSA9IHZhbHVlOwor LX0KKy0KKy12b2lkIAorLVdNQTo6VGFnOjpzZXRBcnRpc3QoY29uc3QgU3RyaW5nICZ2YWx1ZSkK Ky17CistICBkLT5hcnRpc3QgPSB2YWx1ZTsgIAorLX0KKy0KKy12b2lkIAorLVdNQTo6VGFnOjpz ZXRDb3B5cmlnaHQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKy17CistICBkLT5jb3B5cmlnaHQgPSB2 YWx1ZTsgIAorLX0KKy0KKy12b2lkIAorLVdNQTo6VGFnOjpzZXRDb21tZW50KGNvbnN0IFN0cmlu ZyAmdmFsdWUpCisteworLSAgZC0+Y29tbWVudCA9IHZhbHVlOworLX0KKy0KKy12b2lkIAorLVdN QTo6VGFnOjpzZXRSYXRpbmcoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKy17CistICBkLT5yYXRpbmcg PSB2YWx1ZTsKKy19CistCistdm9pZCAKKy1XTUE6OlRhZzo6c2V0QWxidW0oY29uc3QgU3RyaW5n ICZ2YWx1ZSkKKy17CistICBzZXRBdHRyaWJ1dGUoIldNL0FsYnVtVGl0bGUiLCB2YWx1ZSk7Cist fQorLQorLXZvaWQgCistV01BOjpUYWc6OnNldEdlbnJlKGNvbnN0IFN0cmluZyAmdmFsdWUpCist eworLSAgc2V0QXR0cmlidXRlKCJXTS9HZW5yZSIsIHZhbHVlKTsKKy19CistCistdm9pZCAKKy1X TUE6OlRhZzo6c2V0WWVhcih1aW50IHZhbHVlKQorLXsKKy0gIHNldEF0dHJpYnV0ZSgiV00vWWVh ciIsIFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CistfQorLQorLXZvaWQgCistV01BOjpUYWc6OnNl dFRyYWNrKHVpbnQgdmFsdWUpCisteworLSAgc2V0QXR0cmlidXRlKCJXTS9UcmFja051bWJlciIs IFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CistfQorLQorLWNvbnN0IFdNQTo6QXR0cmlidXRlTWFw JiBXTUE6OlRhZzo6YXR0cmlidXRlTWFwKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+YXR0cmli dXRlTWFwOworLX0KKy0KKy12b2lkIFdNQTo6VGFnOjpyZW1vdmVJdGVtKGNvbnN0IEJ5dGVWZWN0 b3IgJmtleSkKKy17CistICBBdHRyaWJ1dGVNYXA6Okl0ZXJhdG9yIGl0ID0gZC0+YXR0cmlidXRl TWFwLmZpbmQoa2V5KTsKKy0gIGlmKGl0ICE9IGQtPmF0dHJpYnV0ZU1hcC5lbmQoKSkKKy0gICAg ZC0+YXR0cmlidXRlTWFwLmVyYXNlKGl0KTsKKy19IAorLQorLXZvaWQgV01BOjpUYWc6OnNldEF0 dHJpYnV0ZShjb25zdCBCeXRlVmVjdG9yICZrZXksIGNvbnN0IFN0cmluZyAmdmFsdWUpCistewor LSAgc2V0QXR0cmlidXRlKGtleSwgV01BOjpBdHRyaWJ1dGUoa2V5LCB2YWx1ZSkpOworLX0KKy0K Ky12b2lkIFdNQTo6VGFnOjpzZXRBdHRyaWJ1dGUoY29uc3QgQnl0ZVZlY3RvciAma2V5LCBjb25z dCBBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKKy17CistICByZW1vdmVJdGVtKGtleSk7CistICBkLT5h dHRyaWJ1dGVNYXAuaW5zZXJ0KGtleSwgYXR0cmlidXRlKTsKKy19CistCistYm9vbCBXTUE6OlRh Zzo6aXNFbXB0eSgpIGNvbnN0IHsKKy0gIHJldHVybiBUYWdMaWI6OlRhZzo6aXNFbXB0eSgpICYm CistICAgICAgICAgY29weXJpZ2h0KCkuaXNFbXB0eSgpICYmCistICAgICAgICAgcmF0aW5nKCku aXNFbXB0eSgpICYmCistICAgICAgICAgZC0+YXR0cmlidXRlTWFwLmlzRW1wdHkoKTsKKy19Cist Cistdm9pZCBXTUE6OlRhZzo6ZHVwbGljYXRlKGNvbnN0IFRhZyAqc291cmNlLCBUYWcgKnRhcmdl dCwgYm9vbCBvdmVyd3JpdGUpIHsKKy0gIFRhZ0xpYjo6VGFnOjpkdXBsaWNhdGUoc291cmNlLCB0 YXJnZXQsIG92ZXJ3cml0ZSk7CistICBpZihvdmVyd3JpdGUpIHsKKy0gICAgdGFyZ2V0LT5zZXRD b3B5cmlnaHQoc291cmNlLT5jb3B5cmlnaHQoKSk7CistICAgIHRhcmdldC0+c2V0UmF0aW5nKHNv dXJjZS0+cmF0aW5nKCkpOworLSAgfQorLSAgZWxzZSB7CistICAgIGlmICh0YXJnZXQtPmNvcHly aWdodCgpLmlzRW1wdHkoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLSAgICAgIHRhcmdldC0+c2V0Q29weXJpZ2h0KHNvdXJjZS0+Y29weXJpZ2h0KCkpOwor LSAgICBpZiAodGFyZ2V0LT5yYXRpbmcoKS5pc0VtcHR5KCkpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICB0YXJnZXQtPnNldFJhdGluZyhzb3VyY2Ut PnJhdGluZygpKTsKKy0gIH0KKy19CistCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEv d21hcHJvcGVydGllcy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL3dt YS93bWFwcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0 YWRhdGEvd21hL3dtYXByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCitAQCAtMSw4MyArMCww IEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorLSAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChD KSAyMDA1IGJ5IEx1a2FzIExhbGluc2t5CistICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFs aW5za3lAZ21haWwuY29tCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCistICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKy0gKiAg IDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAg ICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAg ICoKKy0gKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgICAgICAgICAgICAqCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAqICAgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAg ICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgor LSAqICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAgICAgICAqCistICogICBNQSAgMDIx MTAtMTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistI2luY2x1ZGUgPHRzdHJpbmcuaD4K Ky0jaW5jbHVkZSA8d21hcHJvcGVydGllcy5oPgorLSAgCistdXNpbmcgbmFtZXNwYWNlIFRhZ0xp YjsKKy0KKy1jbGFzcyBXTUE6OlByb3BlcnRpZXM6OlByb3BlcnRpZXNQcml2YXRlCisteworLXB1 YmxpYzoKKy0gIFByb3BlcnRpZXNQcml2YXRlKCk6IGxlbmd0aCgwKSwgYml0cmF0ZSgwKSwgc2Ft cGxlUmF0ZSgwKSwgY2hhbm5lbHMoMCkge30KKy0gIGludCBsZW5ndGg7CistICBpbnQgYml0cmF0 ZTsKKy0gIGludCBzYW1wbGVSYXRlOworLSAgaW50IGNoYW5uZWxzOworLX07CistCistLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy0vLyBwdWJsaWMgbWVtYmVycworLS8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCistCistV01BOjpQcm9wZXJ0aWVzOjpQcm9wZXJ0aWVzKCkgOiBBdWRpb1Byb3BlcnRp ZXMoQXVkaW9Qcm9wZXJ0aWVzOjpBdmVyYWdlKQorLXsKKy0gIGQgPSBuZXcgUHJvcGVydGllc1By aXZhdGU7CistfQorLQorLVdNQTo6UHJvcGVydGllczo6flByb3BlcnRpZXMoKQorLXsKKy0gIGlm KGQpCistICAgIGRlbGV0ZSBkOyAgCistfQorLQorLWludCBXTUE6OlByb3BlcnRpZXM6Omxlbmd0 aCgpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPmxlbmd0aDsKKy19CistCistaW50IFdNQTo6UHJv cGVydGllczo6Yml0cmF0ZSgpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPmJpdHJhdGU7CistfQor LQorLWludCBXTUE6OlByb3BlcnRpZXM6OnNhbXBsZVJhdGUoKSBjb25zdAorLXsKKy0gIHJldHVy biBkLT5zYW1wbGVSYXRlOworLX0KKy0KKy1pbnQgV01BOjpQcm9wZXJ0aWVzOjpjaGFubmVscygp IGNvbnN0CisteworLSAgcmV0dXJuIGQtPmNoYW5uZWxzOworLX0gCistCistLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKy0vLyBwcml2YXRlIG1lbWJlcnMKKy0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LworLQorLXZvaWQgV01BOjpQcm9wZXJ0aWVzOjpzZXQoaW50IGxlbmd0aCwgaW50IGJpdHJhdGUs IGludCBzYW1wbGVSYXRlLCBpbnQgY2hhbm5lbHMpCisteworLSAgZC0+bGVuZ3RoID0gbGVuZ3Ro OworLSAgZC0+Yml0cmF0ZSA9IGJpdHJhdGU7CistICBkLT5zYW1wbGVSYXRlID0gc2FtcGxlUmF0 ZTsKKy0gIGQtPmNoYW5uZWxzID0gY2hhbm5lbHM7CistfQorLQorSW5kZXg6IGFtYXJvay9zcmMv bWV0YWRhdGEvd21hL3dtYWZpbGUuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRh ZGF0YS93bWEvd21hZmlsZS5jcHAJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3JjL21l dGFkYXRhL3dtYS93bWFmaWxlLmNwcAkod29ya2luZyBjb3B5KQorQEAgLTEsMzg4ICswLDAgQEAK Ky0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCistICAgIGNvcHlyaWdodCAgICAgICAgICAgIDogKEMpIDIw MDUgYnkgTHVrYXMgTGFsaW5za3kKKy0gICAgZW1haWwgICAgICAgICAgICAgICAgOiBsYWxpbnNr eUBnbWFpbC5jb20KKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorLSAqICAgMi4x IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAg ICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBUaGlzIGxpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgor LSAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCistICogICBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAg ICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCistICog ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAgICoKKy0gKiAgIE1BICAwMjExMC0x MzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jaW5jbHVkZSA8dHN0cmluZy5oPgorLSNp bmNsdWRlIDx3bWFmaWxlLmg+CistI2luY2x1ZGUgPHdtYXRhZy5oPgorLSNpbmNsdWRlIDx3bWFw cm9wZXJ0aWVzLmg+CistCistI2luY2x1ZGUgPHN0cmluZy5oPgorLQorLXVzaW5nIG5hbWVzcGFj ZSBUYWdMaWI7CistCistY2xhc3MgV01BOjpGaWxlOjpGaWxlUHJpdmF0ZQorLXsKKy1wdWJsaWM6 CistICBGaWxlUHJpdmF0ZSgpOiBzaXplKDApLCBvZmZzZXQxKDApLCBvZmZzZXQyKDApLCBzaXpl MSgwKSwgc2l6ZTIoMCksCistICAgIG51bU9iamVjdHMoMCksIHRhZygwKSwgcHJvcGVydGllcygw KSB7fQorLSAgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CistICB1bnNpZ25lZCBsb25nIG9mZnNl dDEsIG9mZnNldDIsIHNpemUxLCBzaXplMiwgbnVtT2JqZWN0czsKKy0gIFdNQTo6VGFnICp0YWc7 IAorLSAgV01BOjpQcm9wZXJ0aWVzICpwcm9wZXJ0aWVzOyAKKy19OworLQorLS8vIEdVSURzCist Cistc3RydWN0IFdNQTo6R1VJRCAKKy17CistICBXTUE6OkRXT1JEIHYxOworLSAgV01BOjpXT1JE IHYyOworLSAgV01BOjpXT1JEIHYzOworLSAgV01BOjpCWVRFIHY0WzhdOworLSAgYm9vbCBvcGVy YXRvcj09KGNvbnN0IEdVSUQgJmcpIGNvbnN0IHsgcmV0dXJuIG1lbWNtcCh0aGlzLCAmZywgc2l6 ZW9mKFdNQTo6R1VJRCkpID09IDA7IH0KKy0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHVUlEICZn KSBjb25zdCB7IHJldHVybiBtZW1jbXAodGhpcywgJmcsIHNpemVvZihXTUE6OkdVSUQpKSAhPSAw OyB9CistICBzdGF0aWMgR1VJRCBoZWFkZXI7CistICBzdGF0aWMgR1VJRCBmaWxlUHJvcGVydGll czsKKy0gIHN0YXRpYyBHVUlEIHN0cmVhbVByb3BlcnRpZXM7CistICBzdGF0aWMgR1VJRCBjb250 ZW50RGVzY3JpcHRpb247CistICBzdGF0aWMgR1VJRCBleHRlbmRlZENvbnRlbnREZXNjcmlwdGlv bjsKKy0gIHN0YXRpYyBHVUlEIGF1ZGlvTWVkaWE7CistfTsgCistCistV01BOjpHVUlEIFdNQTo6 R1VJRDo6aGVhZGVyID0geworLSAgMHg3NUIyMjYzMCwgMHg2NjhFLCAweDExQ0YsIHsgMHhBNiwg MHhEOSwgMHgwMCwgMHhBQSwgMHgwMCwgMHg2MiwgMHhDRSwgMHg2QyB9CistfTsgCistCistV01B OjpHVUlEIFdNQTo6R1VJRDo6ZmlsZVByb3BlcnRpZXMgPSB7CistICAweDhDQUJEQ0ExLCAweEE5 NDcsIDB4MTFDRiwgeyAweDhFLCAweEU0LCAweDAwLCAweEMwLCAweDBDLCAweDIwLCAweDUzLCAw eDY1IH0sCistfTsgCistCistV01BOjpHVUlEIFdNQTo6R1VJRDo6c3RyZWFtUHJvcGVydGllcyA9 IHsKKy0gIDB4QjdEQzA3OTEsIDB4QTlCNywgMHgxMUNGLCB7IDB4OEUsIDB4RTYsIDB4MDAsIDB4 QzAsIDB4MEMsIDB4MjAsIDB4NTMsIDB4NjUgfSwKKy19OworLQorLVdNQTo6R1VJRCBXTUE6OkdV SUQ6OmNvbnRlbnREZXNjcmlwdGlvbiA9IHsKKy0gIDB4NzViMjI2MzMsIDB4NjY4ZSwgMHgxMWNm LCB7IDB4YTYsIDB4ZDksIDB4MDAsIDB4YWEsIDB4MDAsIDB4NjIsIDB4Y2UsIDB4NmMgfSwKKy19 OyAKKy0KKy1XTUE6OkdVSUQgV01BOjpHVUlEOjpleHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbiA9 IHsKKy0gIDB4RDJEMEE0NDAsIDB4RTMwNywgMHgxMUQyLCB7IDB4OTcsIDB4RjAsIDB4MDAsIDB4 QTAsIDB4QzksIDB4NUUsIDB4QTgsIDB4NTAgfSwKKy19OyAKKy0KKy1XTUE6OkdVSUQgV01BOjpH VUlEOjphdWRpb01lZGlhID0geworLSAgMHhGODY5OUU0MCwgMHg1QjRELCAweDExQ0YsIHsgMHhB OCwgMHhGRCwgMHgwMCwgMHg4MCwgMHg1RiwgMHg1QywgMHg0NCwgMHgyQiB9LAorLX07IAorLQor LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCistLy8gcHVibGljIG1lbWJlcnMKKy0vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworLQorLVdNQTo6RmlsZTo6RmlsZShjb25zdCBjaGFyICpmaWxlLCBib29s IHJlYWRQcm9wZXJ0aWVzLCBQcm9wZXJ0aWVzOjpSZWFkU3R5bGUgcHJvcGVydGllc1N0eWxlKSAK Ky0gIDogVGFnTGliOjpGaWxlKGZpbGUpCisteworLSAgZCA9IG5ldyBGaWxlUHJpdmF0ZTsKKy0g IHJlYWQocmVhZFByb3BlcnRpZXMsIHByb3BlcnRpZXNTdHlsZSk7CistfQorLQorLVdNQTo6Rmls ZTo6fkZpbGUoKQorLXsKKy0gIGlmKGQpIHsKKy0gICAgaWYgKGQtPnRhZykgCistICAgICAgZGVs ZXRlIGQtPnRhZzsKKy0gICAgaWYgKGQtPnByb3BlcnRpZXMpIAorLSAgICAgIGRlbGV0ZSBkLT5w cm9wZXJ0aWVzOworLSAgICBkZWxldGUgZDsgICAKKy0gIH0KKy19CistCistVGFnTGliOjpUYWcg KldNQTo6RmlsZTo6dGFnKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+dGFnOworLX0gCistCist V01BOjpUYWcgKldNQTo6RmlsZTo6V01BVGFnKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+dGFn OworLX0gCistCistV01BOjpQcm9wZXJ0aWVzICpXTUE6OkZpbGU6OmF1ZGlvUHJvcGVydGllcygp IGNvbnN0CisteworLSAgcmV0dXJuIGQtPnByb3BlcnRpZXM7CistfSAKKy0KKy12b2lkIFdNQTo6 RmlsZTo6cmVhZChib29sIHJlYWRQcm9wZXJ0aWVzLCBQcm9wZXJ0aWVzOjpSZWFkU3R5bGUgLyog cHJvcGVydGllc1N0eWxlICovKQorLXsKKy0gIFdNQTo6R1VJRCBndWlkOworLQorLSAgcmVhZEdV SUQoZ3VpZCk7CistICBpZihndWlkICE9IEdVSUQ6OmhlYWRlcikgeworLSAgICByZXR1cm47Cist ICB9CistCistICBpbnQgbGVuZ3RoID0gMDsKKy0gIGludCBiaXRyYXRlID0gMDsKKy0gIGludCBz YW1wbGVSYXRlID0gMDsKKy0gIGludCBjaGFubmVscyA9IDA7CistICAKKy0gIGQtPnRhZyA9IG5l dyBXTUE6OlRhZygpOworLSAgaWYoIWQtPnRhZykKKy0gICAgcmV0dXJuOworLSAgCistICBkLT5z aXplID0gcmVhZFFXT1JEKCk7CistICBkLT5udW1PYmplY3RzID0gcmVhZERXT1JEKCk7IAorLSAg c2VlaygyLCBDdXJyZW50KTsKKy0gICAgCistICBmb3IoaW50IGkgPSAwOyBpIDwgKGludClkLT5u dW1PYmplY3RzOyBpKyspIHsKKy0KKy0gICAgcmVhZEdVSUQoZ3VpZCk7CistICAgIGxvbmcgb2Jq ZWN0U2l6ZSA9IChsb25nKXJlYWRRV09SRCgpOworLSAgICAgIAorLSAgICBpZihyZWFkUHJvcGVy dGllcyAmJiBndWlkID09IEdVSUQ6OmZpbGVQcm9wZXJ0aWVzKSB7CistCistICAgICAgc2Vlaygx Nis4KzgrOCwgQ3VycmVudCk7CistICAgICAgbGVuZ3RoID0gKGludCkocmVhZFFXT1JEKCkgLyAx MDAwMDAwMEwpOworLSAgICAgIHNlZWsoOCs4KzQrNCs0KzQsIEN1cnJlbnQpOworLSAgICAgIAor LSAgICB9CistCistICAgIGVsc2UgaWYocmVhZFByb3BlcnRpZXMgJiYgZ3VpZCA9PSBHVUlEOjpz dHJlYW1Qcm9wZXJ0aWVzKSB7CistICAgICAgCistICAgICAgbG9uZyBwb3MgPSB0ZWxsKCk7Cist ICAgICAgICAKKy0gICAgICByZWFkR1VJRChndWlkKTsKKy0gICAgICBpZihndWlkICE9IEdVSUQ6 OmF1ZGlvTWVkaWEpIHsKKy0gICAgICAgIHJldHVybjsgCistICAgICAgfQorLSAgICAgICAgCist ICAgICAgc2VlaygxNis4KzQrNCsyKzQrMiwgQ3VycmVudCk7CistICAgICAgY2hhbm5lbHMgPSBy ZWFkV09SRCgpOworLSAgICAgIHNhbXBsZVJhdGUgPSByZWFkRFdPUkQoKTsKKy0gICAgICBiaXRy YXRlID0gcmVhZERXT1JEKCkgKiA4IC8gMTAwMDsKKy0gICAgICAgIAorLSAgICAgIHNlZWsocG9z ICsgKGxvbmcpb2JqZWN0U2l6ZSAtIDI0KTsKKy0gICAgfQorLSAgICAgIAorLSAgICBlbHNlIGlm KGd1aWQgPT0gR1VJRDo6ZXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb24pIHsKKy0KKy0gICAgICBk LT5vZmZzZXQyID0gdGVsbCgpIC0gMTYgLSA4OworLSAgICAgIGQtPnNpemUyID0gKGxvbmcpb2Jq ZWN0U2l6ZTsKKy0KKy0gICAgICBpbnQgbnVtRGVzY3JpcHRvcnMgPSByZWFkV09SRCgpOworLSAg ICAgICAgCistICAgICAgZm9yKGludCBqID0gMDsgaiA8IG51bURlc2NyaXB0b3JzOyBqKyspIHsK Ky0gICAgICAgIFdNQTo6QXR0cmlidXRlIGF0dHIoKnRoaXMpOworLSAgICAgICAgZC0+dGFnLT5z ZXRBdHRyaWJ1dGUoYXR0ci5uYW1lKCkudG9DU3RyaW5nKGZhbHNlKSwgYXR0cik7CistICAgICAg fQorLSAgICAgIAorLSAgICB9CistICAgICAgCistICAgIGVsc2UgaWYoZ3VpZCA9PSBHVUlEOjpj b250ZW50RGVzY3JpcHRpb24pIHsKKy0KKy0gICAgICBkLT5vZmZzZXQxID0gdGVsbCgpIC0gMTYg LSA4OworLSAgICAgIGQtPnNpemUxID0gKGxvbmcpb2JqZWN0U2l6ZTsKKy0KKy0gICAgICBpbnQg dGl0bGVMZW5ndGggPSByZWFkV09SRCgpOworLSAgICAgIGludCBhcnRpc3RMZW5ndGggPSByZWFk V09SRCgpOworLSAgICAgIGludCBjb3B5cmlnaHRMZW5ndGggPSByZWFkV09SRCgpOworLSAgICAg IGludCBjb21tZW50TGVuZ3RoID0gcmVhZFdPUkQoKTsKKy0gICAgICBpbnQgcmF0aW5nTGVuZ3Ro ID0gcmVhZFdPUkQoKTsKKy0KKy0gICAgICBTdHJpbmcgdmFsdWU7CistICAgICAgCistICAgICAg cmVhZFN0cmluZyh0aXRsZUxlbmd0aCwgdmFsdWUpOworLSAgICAgIGQtPnRhZy0+c2V0VGl0bGUo dmFsdWUpOworLSAgICAgIAorLSAgICAgIHJlYWRTdHJpbmcoYXJ0aXN0TGVuZ3RoLCB2YWx1ZSk7 CistICAgICAgZC0+dGFnLT5zZXRBcnRpc3QodmFsdWUpOworLSAgICAgIAorLSAgICAgIHJlYWRT dHJpbmcoY29weXJpZ2h0TGVuZ3RoLCB2YWx1ZSk7CistICAgICAgZC0+dGFnLT5zZXRDb3B5cmln aHQodmFsdWUpOworLSAgICAgIAorLSAgICAgIHJlYWRTdHJpbmcoY29tbWVudExlbmd0aCwgdmFs dWUpOworLSAgICAgIGQtPnRhZy0+c2V0Q29tbWVudCh2YWx1ZSk7CistICAgICAgCistICAgICAg cmVhZFN0cmluZyhyYXRpbmdMZW5ndGgsIHZhbHVlKTsKKy0gICAgICBkLT50YWctPnNldFJhdGlu Zyh2YWx1ZSk7CistICAgIH0KKy0gICAgICAKKy0gICAgZWxzZSB7CistICAgICAgc2VlaygobG9u ZylvYmplY3RTaXplIC0gMjQsIEN1cnJlbnQpOworLSAgICB9CistICAgIAorLSAgfQorLSAgCist ICBpZihyZWFkUHJvcGVydGllcykgeworLSAgICBkLT5wcm9wZXJ0aWVzID0gbmV3IFdNQTo6UHJv cGVydGllcygpOworLSAgICBpZihkLT5wcm9wZXJ0aWVzKSAKKy0gICAgICBkLT5wcm9wZXJ0aWVz LT5zZXQobGVuZ3RoLCBiaXRyYXRlLCBzYW1wbGVSYXRlLCBjaGFubmVscyk7CistICB9CistICAK Ky19CistCistYm9vbCBXTUE6OkZpbGU6OnNhdmUoKQorLXsKKy0gIGlmKHJlYWRPbmx5KCkpIHsK Ky0gICAgcmV0dXJuIGZhbHNlOworLSAgfQorLQorLSAgaWYoZC0+b2Zmc2V0MSA9PSAwKSB7Cist ICAgIGQtPm9mZnNldDEgPSAxNiArIDggKyA0ICsgMjsKKy0gICAgZC0+bnVtT2JqZWN0cysrOwor LSAgfQorLQorLSAgaWYoZC0+b2Zmc2V0MiA9PSAwKSB7CistICAgIGQtPm9mZnNldDIgPSAxNiAr IDggKyA0ICsgMjsKKy0gICAgZC0+bnVtT2JqZWN0cysrOworLSAgfQorLQorLSAgQnl0ZVZlY3Rv ciBjaHVuazEgPSByZW5kZXJDb250ZW50RGVzY3JpcHRpb24oKTsKKy0gIEJ5dGVWZWN0b3IgY2h1 bmsyID0gcmVuZGVyRXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb24oKTsKKy0KKy0gIGlmKGQtPm9m ZnNldDEgPiBkLT5vZmZzZXQyKSB7CistICAgIGluc2VydChjaHVuazEsIGQtPm9mZnNldDEsIGQt PnNpemUxKTsKKy0gICAgaW5zZXJ0KGNodW5rMiwgZC0+b2Zmc2V0MiwgZC0+c2l6ZTIpOworLSAg fQorLSAgZWxzZSB7CistICAgIGluc2VydChjaHVuazIsIGQtPm9mZnNldDIsIGQtPnNpemUyKTsK Ky0gICAgaW5zZXJ0KGNodW5rMSwgZC0+b2Zmc2V0MSwgZC0+c2l6ZTEpOworLSAgfQorLQorLSAg aW5zZXJ0KEJ5dGVWZWN0b3I6OmZyb21Mb25nTG9uZyhkLT5zaXplICsgCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGNodW5rMS5zaXplKCkgLSBkLT5zaXplMSkgKyAK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoY2h1bmsyLnNpemUoKSAt IGQtPnNpemUyKSwgZmFsc2UpICsKKy0gICAgICAgICBCeXRlVmVjdG9yOjpmcm9tVUludChkLT5u dW1PYmplY3RzLCBmYWxzZSksIDE2LCA4ICsgNCk7CistCistICByZXR1cm4gdHJ1ZTsKKy19Cist CistLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy0vLyBwcm90ZWN0ZWQgbWVtYmVycworLS8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCistCistaW50IFdNQTo6RmlsZTo6cmVhZEJZVEUoKQorLXsKKy0g IEJ5dGVWZWN0b3IgdiA9IHJlYWRCbG9jaygxKTsKKy0gIHJldHVybiB2WzBdOworLX0KKy0KKy1p bnQgV01BOjpGaWxlOjpyZWFkV09SRCgpCisteworLSAgQnl0ZVZlY3RvciB2ID0gcmVhZEJsb2Nr KDIpOworLSAgcmV0dXJuIHYudG9TaG9ydChmYWxzZSk7CistfQorLQorLXVuc2lnbmVkIGludCBX TUE6OkZpbGU6OnJlYWREV09SRCgpCisteworLSAgQnl0ZVZlY3RvciB2ID0gcmVhZEJsb2NrKDQp OworLSAgcmV0dXJuIHYudG9VSW50KGZhbHNlKTsKKy19CistCistbG9uZyBsb25nIFdNQTo6Rmls ZTo6cmVhZFFXT1JEKCkKKy17CistICBCeXRlVmVjdG9yIHYgPSByZWFkQmxvY2soOCk7CistICBy ZXR1cm4gdi50b0xvbmdMb25nKGZhbHNlKTsKKy19CistCistdm9pZCBXTUE6OkZpbGU6OnJlYWRH VUlEKEdVSUQgJmcpCisteworLSAgZy52MSA9IHJlYWREV09SRCgpOworLSAgZy52MiA9IHJlYWRX T1JEKCk7CistICBnLnYzID0gcmVhZFdPUkQoKTsKKy0gIGZvcihpbnQgaSA9IDA7IGkgPCA4OyBp KyspCistICAgIGcudjRbaV0gPSByZWFkQllURSgpOyAKKy19CistCistdm9pZCBXTUE6OkZpbGU6 OnJlYWRTdHJpbmcoaW50IGxlbiwgU3RyaW5nICZzKQorLXsKKy0gIEJ5dGVWZWN0b3IgdiA9IHJl YWRCbG9jayhsZW4pOworLSAgaWYobGVuIDwgMiB8fCB2W2xlbi0xXSAhPSAwIHx8IHZbbGVuLTJd ICE9IDApCistICAgIHYuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCgwKSk7CistICBzID0g U3RyaW5nKHYsIFN0cmluZzo6VVRGMTZMRSk7CistfQorLQorLUJ5dGVWZWN0b3IgV01BOjpGaWxl OjpyZW5kZXJDb250ZW50RGVzY3JpcHRpb24oKQorLXsKKy0gIFN0cmluZyBzOyAgICAKKy0gICAg CistICBzID0gZC0+dGFnLT50aXRsZSgpOyAgCistICBCeXRlVmVjdG9yIHYxID0gcy5kYXRhKFN0 cmluZzo6VVRGMTZMRSk7CistICBpZihzLnNpemUoKSkgeworLSAgICB2MS5hcHBlbmQoKGNoYXIp MCk7CistICAgIHYxLmFwcGVuZCgoY2hhcikwKTsKKy0gIH0KKy0gIAorLSAgcyA9IGQtPnRhZy0+ YXJ0aXN0KCk7ICAKKy0gIEJ5dGVWZWN0b3IgdjIgPSBzLmRhdGEoU3RyaW5nOjpVVEYxNkxFKTsK Ky0gIGlmKHMuc2l6ZSgpKSB7CistICAgIHYyLmFwcGVuZCgoY2hhcikwKTsKKy0gICAgdjIuYXBw ZW5kKChjaGFyKTApOworLSAgfQorLSAgCistICBzID0gZC0+dGFnLT5jb3B5cmlnaHQoKTsgIAor LSAgQnl0ZVZlY3RvciB2MyA9IHMuZGF0YShTdHJpbmc6OlVURjE2TEUpOworLSAgaWYocy5zaXpl KCkpIHsKKy0gICAgdjMuYXBwZW5kKChjaGFyKTApOworLSAgICB2My5hcHBlbmQoKGNoYXIpMCk7 CistICB9IAorLSAgCistICBzID0gZC0+dGFnLT5jb21tZW50KCk7ICAKKy0gIEJ5dGVWZWN0b3Ig djQgPSBzLmRhdGEoU3RyaW5nOjpVVEYxNkxFKTsKKy0gIGlmKHMuc2l6ZSgpKSB7CistICAgIHY0 LmFwcGVuZCgoY2hhcikwKTsKKy0gICAgdjQuYXBwZW5kKChjaGFyKTApOworLSAgfQorLSAgCist ICBzID0gZC0+dGFnLT5yYXRpbmcoKTsgIAorLSAgQnl0ZVZlY3RvciB2NSA9IHMuZGF0YShTdHJp bmc6OlVURjE2TEUpOworLSAgaWYocy5zaXplKCkpIHsKKy0gICAgdjUuYXBwZW5kKChjaGFyKTAp OworLSAgICB2NS5hcHBlbmQoKGNoYXIpMCk7CistICB9CistCistICBCeXRlVmVjdG9yIGRhdGE7 CistCistICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodjEuc2l6ZSgpLCBmYWxz ZSkpOworLSAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHYyLnNpemUoKSwgZmFs c2UpKTsKKy0gIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2My5zaXplKCksIGZh bHNlKSk7CistICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodjQuc2l6ZSgpLCBm YWxzZSkpOworLSAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHY1LnNpemUoKSwg ZmFsc2UpKTsKKy0KKy0gIGRhdGEuYXBwZW5kKHYxKTsKKy0gIGRhdGEuYXBwZW5kKHYyKTsKKy0g IGRhdGEuYXBwZW5kKHYzKTsKKy0gIGRhdGEuYXBwZW5kKHY0KTsKKy0gIGRhdGEuYXBwZW5kKHY1 KTsKKy0KKy0gIGRhdGEgPSBCeXRlVmVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAq PigmR1VJRDo6Y29udGVudERlc2NyaXB0aW9uKSwgc2l6ZW9mKEdVSUQpKQorLSAgICArIEJ5dGVW ZWN0b3I6OmZyb21Mb25nTG9uZyhkYXRhLnNpemUoKSArIDE2ICsgOCwgZmFsc2UpCistICAgICsg ZGF0YTsKKy0KKy0gIHJldHVybiBkYXRhOworLX0KKy0KKy1CeXRlVmVjdG9yIFdNQTo6RmlsZTo6 cmVuZGVyRXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb24oKQorLXsKKy0gIEJ5dGVWZWN0b3IgZGF0 YTsKKy0KKy0gIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydChkLT50YWctPmF0dHJp YnV0ZU1hcCgpLnNpemUoKSwgZmFsc2UpKTsKKy0gIAorLSAgV01BOjpBdHRyaWJ1dGVNYXA6OkNv bnN0SXRlcmF0b3IgaXQgPSBkLT50YWctPmF0dHJpYnV0ZU1hcCgpLmJlZ2luKCk7CistICBmb3Io OyBpdCAhPSBkLT50YWctPmF0dHJpYnV0ZU1hcCgpLmVuZCgpOyBpdCsrKSAKKy0gICAgZGF0YS5h cHBlbmQoaXQtPnNlY29uZC5yZW5kZXIoKSk7CistICAKKy0gIGRhdGEgPSBCeXRlVmVjdG9yKHJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPigmR1VJRDo6ZXh0ZW5kZWRDb250ZW50RGVzY3Jp cHRpb24pLCBzaXplb2YoR1VJRCkpCistICAgICsgQnl0ZVZlY3Rvcjo6ZnJvbUxvbmdMb25nKGRh dGEuc2l6ZSgpICsgMTYgKyA4LCBmYWxzZSkKKy0gICAgKyBkYXRhOworLQorLSAgcmV0dXJuIGRh dGE7CistfQorLQorLQorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYXRhZy5oCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hdGFnLmgJKHJldmlzaW9u IDcwNTIzMSkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS93bWF0YWcuaAkod29ya2luZyBj b3B5KQorQEAgLTEsMTg4ICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICAgIGNvcHly aWdodCAgICAgICAgICAgIDogKEMpIDIwMDUgYnkgTHVrYXMgTGFsaW5za3kKKy0gICAgZW1haWwg ICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKy0gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBp dCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAgKgorLSAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CistICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorLSAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VICAgICAqCistICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0g KiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgICAgICAqCistICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAg ICAgICoKKy0gKiAgIE1BICAwMjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0j aWZuZGVmIFRBR0xJQl9XTUFUQUdfSAorLSNkZWZpbmUgVEFHTElCX1dNQVRBR19ICistCistI2lu Y2x1ZGUgPHRtYXAuaD4KKy0jaW5jbHVkZSA8dGFnLmg+CistI2luY2x1ZGUgIndtYWZpbGUuaCIK Ky0jaW5jbHVkZSAid21hYXR0cmlidXRlLmgiCistCistbmFtZXNwYWNlIFRhZ0xpYiB7CistCist ICBuYW1lc3BhY2UgV01BIHsKKy0gIAorLSAgICB0eXBlZGVmIE1hcDxjb25zdCBCeXRlVmVjdG9y LCBBdHRyaWJ1dGU+IEF0dHJpYnV0ZU1hcDsKKy0gICAgICAKKy0gICAgY2xhc3MgVGFnIDogcHVi bGljIFRhZ0xpYjo6VGFnIHsKKy0gICAgCistICAgICAgZnJpZW5kIGNsYXNzIEZpbGU7CistICAg ICAgCistICAgIHB1YmxpYzoKKy0gICAgCistICAgICAgVGFnKCk7CistCistICAgICAgdmlydHVh bCB+VGFnKCk7CistCistICAgICAgLyohCistICAgICAgICogUmV0dXJucyB0aGUgdHJhY2sgbmFt ZS4KKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OworLQor LSAgICAgIC8qIQorLSAgICAgICAqIFJldHVybnMgdGhlIGFydGlzdCBuYW1lLgorLSAgICAgICAq LworLSAgICAgIHZpcnR1YWwgU3RyaW5nIGFydGlzdCgpIGNvbnN0OworLQorLSAgICAgIC8qIQor LSAgICAgICAqIFJldHVybnMgdGhlIGFsYnVtIG5hbWU7IGlmIG5vIGFsYnVtIG5hbWUgaXMgcHJl c2VudCBpbiB0aGUgdGFnCistICAgICAgICogU3RyaW5nOjpudWxsIHdpbGwgYmUgcmV0dXJuZWQu CistICAgICAgICovCistICAgICAgdmlydHVhbCBTdHJpbmcgYWxidW0oKSBjb25zdDsKKy0KKy0g ICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSB0cmFjayBjb21tZW50LgorLSAgICAgICAq LworLSAgICAgIHZpcnR1YWwgU3RyaW5nIGNvbW1lbnQoKSBjb25zdDsKKy0KKy0gICAgICAvKiEK Ky0gICAgICAgKiBSZXR1cm5zIHRoZSBnZW5yZSBuYW1lOyBpZiBubyBnZW5yZSBpcyBwcmVzZW50 IGluIHRoZSB0YWcgU3RyaW5nOjpudWxsCistICAgICAgICogd2lsbCBiZSByZXR1cm5lZC4KKy0g ICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIFN0cmluZyBnZW5yZSgpIGNvbnN0OworLQorLSAgICAg IC8qIQorLSAgICAgICAqIFJldHVybnMgdGhlIHJhdGluZy4KKy0gICAgICAgKi8KKy0gICAgICB2 aXJ0dWFsIFN0cmluZyByYXRpbmcoKSBjb25zdDsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBS ZXR1cm5zIHRoZSBnZW5yZSBuYW1lOyBpZiBubyBnZW5yZSBpcyBwcmVzZW50IGluIHRoZSB0YWcg U3RyaW5nOjpudWxsCistICAgICAgICogd2lsbCBiZSByZXR1cm5lZC4KKy0gICAgICAgKi8KKy0g ICAgICB2aXJ0dWFsIFN0cmluZyBjb3B5cmlnaHQoKSBjb25zdDsKKy0KKy0gICAgICAvKiEKKy0g ICAgICAgKiBSZXR1cm5zIHRoZSB5ZWFyOyBpZiB0aGVyZSBpcyBubyB5ZWFyIHNldCwgdGhpcyB3 aWxsIHJldHVybiAwLgorLSAgICAgICAqLworLSAgICAgIHZpcnR1YWwgdWludCB5ZWFyKCkgY29u c3Q7CistCistICAgICAgLyohCistICAgICAgICogUmV0dXJucyB0aGUgdHJhY2sgbnVtYmVyOyBp ZiB0aGVyZSBpcyBubyB0cmFjayBudW1iZXIgc2V0LCB0aGlzIHdpbGwKKy0gICAgICAgKiByZXR1 cm4gMC4KKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIHVpbnQgdHJhY2soKSBjb25zdDsKKy0K Ky0gICAgICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSB0aXRsZSB0byBcYSBzLgorLSAgICAgICAq LworLSAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcgJnMpOworLQorLSAg ICAgIC8qIQorLSAgICAgICAqIFNldHMgdGhlIGFydGlzdCB0byBcYSBzLgorLSAgICAgICAqLwor LSAgICAgIHZpcnR1YWwgdm9pZCBzZXRBcnRpc3QoY29uc3QgU3RyaW5nICZzKTsKKy0KKy0gICAg ICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSBhbGJ1bSB0byBcYSBzLiAgSWYgXGEgcyBpcyBTdHJp bmc6Om51bGwgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUKKy0gICAgICAgKiBjbGVhcmVkLgorLSAg ICAgICAqLworLSAgICAgIHZpcnR1YWwgdm9pZCBzZXRBbGJ1bShjb25zdCBTdHJpbmcgJnMpOwor LQorLSAgICAgIC8qIQorLSAgICAgICAqIFNldHMgdGhlIGNvbW1lbnQgdG8gXGEgcy4KKy0gICAg ICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tbWVudChjb25zdCBTdHJpbmcgJnMpOwor LQorLSAgICAgIC8qIQorLSAgICAgICAqIFNldHMgdGhlIHJhdGluZyB0byBcYSBzLiAKKy0gICAg ICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0aW5nKGNvbnN0IFN0cmluZyAmcyk7Cist CistICAgICAgLyohCistICAgICAgICogU2V0cyB0aGUgY29weXJpZ2h0IHRvIFxhIHMuIAorLSAg ICAgICAqLworLSAgICAgIHZpcnR1YWwgdm9pZCBzZXRDb3B5cmlnaHQoY29uc3QgU3RyaW5nICZz KTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSBnZW5yZSB0byBcYSBzLiAKKy0g ICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0R2VucmUoY29uc3QgU3RyaW5nICZzKTsK Ky0KKy0gICAgICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSB5ZWFyIHRvIFxhIGkuICBJZiBcYSBz IGlzIDAgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUgY2xlYXJlZC4KKy0gICAgICAgKi8KKy0gICAg ICB2aXJ0dWFsIHZvaWQgc2V0WWVhcih1aW50IGkpOworLQorLSAgICAgIC8qIQorLSAgICAgICAq IFNldHMgdGhlIHRyYWNrIHRvIFxhIGkuICBJZiBcYSBzIGlzIDAgdGhlbiB0aGlzIHZhbHVlIHdp bGwgYmUgY2xlYXJlZC4KKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2so dWludCBpKTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRh ZyBkb2VzIG5vdCBjb250YWluIGFueSBkYXRhLiAgVGhpcyBzaG91bGQgYmUKKy0gICAgICAgKiBy ZWltcGxlbWVudGVkIGluIHN1YmNsYXNzZXMgdGhhdCBwcm92aWRlIG1vcmUgdGhhbiB0aGUgYmFz aWMgdGFnZ2luZworLSAgICAgICAqIGFiaWxpdGllcyBpbiB0aGlzIGNsYXNzLgorLSAgICAgICAq LworLSAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CistCistICAgICAgLyohCist ICAgICAgICogQ29waWVzIHRoZSBnZW5lcmljIGRhdGEgZnJvbSBvbmUgdGFnIHRvIGFub3RoZXIu CistICAgICAgICoKKy0gICAgICAgKiBJZiBcYSBvdmVyd3JpdGUgaXMgdHJ1ZSB0aGVuIHRoZSB2 YWx1ZXMgd2lsbCBiZSB1bmNvbmRpdGlvbmFsbHkgY29waWVkLgorLSAgICAgICAqIElmIGZhbHNl IG9ubHkgZW1wdHkgdmFsdWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uCistICAgICAgICovCistICAg ICAgc3RhdGljIHZvaWQgZHVwbGljYXRlKGNvbnN0IFRhZyAqc291cmNlLCBUYWcgKnRhcmdldCwg Ym9vbCBvdmVyd3JpdGUgPSB0cnVlKTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5z IGEgcmVmZXJlbmNlIHRvIHRoZSBpdGVtIGxpc3QgbWFwLiAgVGhpcyBpcyBhbiBJdGVtTGlzdE1h cCBvZgorLSAgICAgICAqIGFsbCBvZiB0aGUgaXRlbXMgaW4gdGhlIHRhZy4KKy0gICAgICAgKgor LSAgICAgICAqIFRoaXMgaXMgdGhlIG1vc3QgcG93ZXJmdWxsIHN0cnVjdHVyZSBmb3IgYWNjZXNz aW5nIHRoZSBpdGVtcyBvZiB0aGUgdGFnLgorLSAgICAgICAqCistICAgICAgICogXHdhcm5pbmcg WW91IHNob3VsZCBub3QgbW9kaWZ5IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgZGlyZWN0bHksIGluc3Rl YWQKKy0gICAgICAgKiB1c2Ugc2V0SXRlbSgpIGFuZCByZW1vdmVJdGVtKCkuCistICAgICAgICov IAorLSAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZU1hcCgpIGNvbnN0OworLSAg ICAgIAorLSAgICAgIC8qIQorLSAgICAgICAqIFJlbW92ZXMgdGhlIFxhIGtleSBhdHRyaWJ1dGUg ZnJvbSB0aGUgdGFnCistICAgICAgICovCistICAgICAgdm9pZCByZW1vdmVJdGVtKGNvbnN0IEJ5 dGVWZWN0b3IgJmtleSk7ICAgICAgIAorLSAgICAgIAorLSAgICAgIHZvaWQgc2V0QXR0cmlidXRl KGNvbnN0IEJ5dGVWZWN0b3IgJmtleSwgY29uc3QgU3RyaW5nICZ2YWx1ZSk7CistICAgICAgCist ICAgICAgLyohCistICAgICAgICogU2V0cyB0aGUgXGEga2V5IGF0dHJpYnV0ZSB0byB0aGUgdmFs dWUgb2YgXGEgYXR0cmlidXRlLiBJZiBhbiBhdHRyaWJ1dGUKKy0gICAgICAgKiB3aXRoIHRoZSBc YSBrZXkgaXMgYWxyZWFkeSBwcmVzZW50LCBpdCB3aWxsIGJlIHJlcGxhY2VkLgorLSAgICAgICAq LworLSAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IEJ5dGVWZWN0b3IgJmtleSwgY29uc3Qg QXR0cmlidXRlICZhdHRyaWJ1dGUpOworLQorLSAgICBwcml2YXRlOgorLSAgICAgIAorLSAgICAg IGNsYXNzIFRhZ1ByaXZhdGU7CistICAgICAgVGFnUHJpdmF0ZSAqZDsKKy0gICAgICAKKy0gICAg fTsKKy0gIH0KKy19CistI2VuZGlmCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21h cHJvcGVydGllcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21h cHJvcGVydGllcy5oCShyZXZpc2lvbiA3MDUyMzEpCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS93 bWEvd21hcHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCitAQCAtMSw3MSArMCwwIEBACistLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorLSAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1IGJ5 IEx1a2FzIExhbGluc2t5CistICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21h aWwuY29tCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCist ICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKy0gKiAgIDIuMSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAg ICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoKKy0gKiAg IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgICAgICAgICAgICAqCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAqICAgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAg ICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgorLSAqICAgTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAgICAgICAqCistICogICBNQSAgMDIxMTAtMTMwMSAg VVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgor LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCistCistI2lmbmRlZiBUQUdMSUJfV01BUFJPUEVSVElFU19I CistI2RlZmluZSBUQUdMSUJfV01BUFJPUEVSVElFU19ICistCistI2luY2x1ZGUgPGF1ZGlvcHJv cGVydGllcy5oPgorLSNpbmNsdWRlIDx0c3RyaW5nLmg+CistCistbmFtZXNwYWNlIFRhZ0xpYiB7 CistICAgIAorLSAgbmFtZXNwYWNlIFdNQSB7CistICAgICAgICAKKy0gICAgY2xhc3MgRmlsZTsg IAorLSAgICAgIAorLSAgICBjbGFzcyBQcm9wZXJ0aWVzIDogcHVibGljIEF1ZGlvUHJvcGVydGll cworLSAgICB7CistICAgICAgICAKKy0gICAgICBmcmllbmQgY2xhc3MgV01BOjpGaWxlOworLSAg ICAgIAorLSAgICBwdWJsaWM6CistICAgIAorLSAgICAgIC8qIQorLSAgICAgICAqIENyZWF0ZSBh biBpbnN0YW5jZSBvZiBXTUE6OlByb3BlcnRpZXMuCistICAgICAgICovCistICAgICAgUHJvcGVy dGllcygpOworLSAgICAgIAorLSAgICAgIC8qIQorLSAgICAgICAqIERlc3Ryb3lzIHRoaXMgV01B OjpQcm9wZXJ0aWVzIGluc3RhbmNlLgorLSAgICAgICAqLworLSAgICAgIHZpcnR1YWwgflByb3Bl cnRpZXMoKTsKKy0KKy0gICAgICAvLyBSZWltcGxlbWVudGF0aW9ucy4KKy0KKy0gICAgICB2aXJ0 dWFsIGludCBsZW5ndGgoKSBjb25zdDsKKy0gICAgICB2aXJ0dWFsIGludCBiaXRyYXRlKCkgY29u c3Q7CistICAgICAgdmlydHVhbCBpbnQgc2FtcGxlUmF0ZSgpIGNvbnN0OworLSAgICAgIHZpcnR1 YWwgaW50IGNoYW5uZWxzKCkgY29uc3Q7CistCistICAgICAgcHJpdmF0ZToKKy0gICAgCistICAg ICAgY2xhc3MgUHJvcGVydGllc1ByaXZhdGU7CistICAgICAgUHJvcGVydGllc1ByaXZhdGUgKmQ7 CistICAgICAgCistICAgICAgdm9pZCBzZXQoaW50IGxlbmd0aCwgaW50IGJpdHJhdGUsIGludCBz YW1wbGVSYXRlLCBpbnQgY2hhbm5lbHMpOworLSAgICAgIAorLSAgICB9OworLQorLSAgfQorLQor LX0KKy0KKy0jZW5kaWYgCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvTWFrZWZpbGUu YW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS9NYWtlZmlsZS5hbQko cmV2aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL01ha2VmaWxlLmFt CSh3b3JraW5nIGNvcHkpCitAQCAtMSwyMCArMCwwIEBACistU1VCRElSUyA9CistCistSU5DTFVE RVMgICAgICAgICAgID0gJChhbGxfaW5jbHVkZXMpICQodGFnbGliX2luY2x1ZGVzKQorLU1FVEFT T1VSQ0VTICAgICAgICA9IEFVVE8KKy1saWJ0YWd3bWFfbGFfTERGTEFHUyAgPSAkKGFsbF9saWJy YXJpZXMpCistbm9pbnN0X0xUTElCUkFSSUVTID0gbGlidGFnd21hLmxhCistCistbGlidGFnd21h X2xhX1NPVVJDRVMgPSAgXAorLSAgICAgICAgICAgICAgICAgICAgIHdtYWF0dHJpYnV0ZS5jcHAg XAorLSAgICAgICAgICAgICAgICAgICAgIHdtYXByb3BlcnRpZXMuY3BwIFwKKy0gICAgICAgICAg ICAgICAgICAgICB3bWF0YWcuY3BwIFwKKy0gICAgICAgICAgICAgICAgICAgICB3bWFmaWxlLmNw cCBcCistICAgICAgICAgICAgICAgICAgICAgdGFnbGliX3dtYWZpbGV0eXBlcmVzb2x2ZXIuY3Bw CistCistbm9pbnN0X0hFQURFUlMgPSBcCistICAgICAgICAgICAgICAgICAgICAgd21hYXR0cmli dXRlLmggXAorLSAgICAgICAgICAgICAgICAgICAgIHdtYXByb3BlcnRpZXMuaCBcCistICAgICAg ICAgICAgICAgICAgICAgd21hdGFnLmggXAorLSAgICAgICAgICAgICAgICAgICAgIHdtYWZpbGUu aCBcCistICAgICAgICAgICAgICAgICAgICAgdGFnbGliX3dtYWZpbGV0eXBlcmVzb2x2ZXIuaAor SW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYWF0dHJpYnV0ZS5jcHAKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS93bWFhdHRyaWJ1dGUuY3BwCShyZXZpc2lv biA3MDUyMzEpCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hYXR0cmlidXRlLmNwcAko d29ya2luZyBjb3B5KQorQEAgLTEsMjMxICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCist ICAgIGNvcHlyaWdodCAgICAgICAgICAgIDogKEMpIDIwMDUgYnkgTHVrYXMgTGFsaW5za3kKKy0g ICAgZW1haWwgICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKy0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgIFRoaXMgbGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAq CistICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAgKgorLSAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCistICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorLSAqICAgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKy0g KiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VICAgICAqCistICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCistICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorLSAqICAg Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCAgICAgICAgICAgICoKKy0gKiAgIE1BICAwMjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKy0KKy0jaW5jbHVkZSA8d21hYXR0cmlidXRlLmg+CistI2luY2x1ZGUgPHdtYWZpbGUuaD4K Ky0KKy11c2luZyBuYW1lc3BhY2UgVGFnTGliOworLQorLWNsYXNzIFdNQTo6QXR0cmlidXRlOjpB dHRyaWJ1dGVQcml2YXRlCisteworLXB1YmxpYzoKKy0gIEF0dHJpYnV0ZVR5cGVzIHR5cGU7ICAg IAorLSAgU3RyaW5nIG5hbWU7CistICBTdHJpbmcgdmFsdWVfc3RyaW5nOworLSAgQnl0ZVZlY3Rv ciB2YWx1ZV9ieXRlczsKKy0gIHVuaW9uIHsKKy0gICAgaW50IHZhbHVlX2ludDsKKy0gICAgbG9u ZyBsb25nIHZhbHVlX2xvbmdsb25nOworLSAgfTsKKy19OworLQorLS8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCistLy8gcHVibGljIG1lbWJlcnMKKy0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLQor LVdNQTo6QXR0cmlidXRlOjpBdHRyaWJ1dGUoKQorLXsKKy0gIGQgPSBuZXcgQXR0cmlidXRlUHJp dmF0ZTsKKy0gIGQtPm5hbWUgPSBTdHJpbmc6Om51bGw7CistICBkLT50eXBlID0gVW5pY29kZVR5 cGU7CistfQorLQorLVdNQTo6QXR0cmlidXRlOjpBdHRyaWJ1dGUoV01BOjpGaWxlICZmaWxlKQor LXsKKy0gIGQgPSBuZXcgQXR0cmlidXRlUHJpdmF0ZTsKKy0gIHBhcnNlKGZpbGUpOworLX0KKy0K Ky1XTUE6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKGNvbnN0IFN0cmluZyAmbmFtZSwgY29uc3QgU3Ry aW5nICZ2YWx1ZSkKKy17CistICBkID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7CistICBkLT5uYW1l ID0gbmFtZTsKKy0gIGQtPnR5cGUgPSBVbmljb2RlVHlwZTsKKy0gIGQtPnZhbHVlX3N0cmluZyA9 IHZhbHVlOworLX0KKy0KKy1XTUE6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKGNvbnN0IFN0cmluZyAm bmFtZSwgY29uc3QgQnl0ZVZlY3RvciAmdmFsdWUpCisteworLSAgZCA9IG5ldyBBdHRyaWJ1dGVQ cml2YXRlOworLSAgZC0+bmFtZSA9IG5hbWU7CistICBkLT50eXBlID0gQnl0ZXNUeXBlOworLSAg ZC0+dmFsdWVfYnl0ZXMgPSB2YWx1ZTsKKy19CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0 ZShjb25zdCBTdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCB2YWx1ZSkKKy17CistICBkID0gbmV3 IEF0dHJpYnV0ZVByaXZhdGU7CistICBkLT5uYW1lID0gbmFtZTsKKy0gIGQtPnR5cGUgPSBEV29y ZFR5cGU7CistICBkLT52YWx1ZV9pbnQgPSB2YWx1ZTsKKy19CistCistV01BOjpBdHRyaWJ1dGU6 OkF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkK Ky17CistICBkID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7CistICBkLT5uYW1lID0gbmFtZTsKKy0g IGQtPnR5cGUgPSBRV29yZFR5cGU7CistICBkLT52YWx1ZV9sb25nbG9uZyA9IHZhbHVlOworLX0K Ky0KKy1XTUE6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKGNvbnN0IFN0cmluZyAmbmFtZSwgdW5zaWdu ZWQgc2hvcnQgdmFsdWUpCisteworLSAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworLSAgZC0+ bmFtZSA9IG5hbWU7CistICBkLT50eXBlID0gV29yZFR5cGU7CistICBkLT52YWx1ZV9pbnQgPSB2 YWx1ZTsKKy19CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJm5h bWUsIGJvb2wgdmFsdWUpCisteworLSAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworLSAgZC0+ bmFtZSA9IG5hbWU7CistICBkLT50eXBlID0gQm9vbFR5cGU7CistICBkLT52YWx1ZV9pbnQgPSB2 YWx1ZTsKKy19CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUg JmF0dHIpCisteworLSAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlKCphdHRyLmQpOworLX0gCist CistV01BOjpBdHRyaWJ1dGU6On5BdHRyaWJ1dGUoKQorLXsKKy0gIGlmKGQpIAorLSAgICBkZWxl dGUgZDsKKy19CistCistU3RyaW5nIFdNQTo6QXR0cmlidXRlOjpuYW1lKCkgY29uc3QKKy17Cist ICByZXR1cm4gZC0+bmFtZTsKKy19CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZVR5cGVz IFdNQTo6QXR0cmlidXRlOjp0eXBlKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+dHlwZTsKKy19 CistCistU3RyaW5nIFdNQTo6QXR0cmlidXRlOjp0b1N0cmluZygpIGNvbnN0CisteworLSAgcmV0 dXJuIGQtPnZhbHVlX3N0cmluZzsKKy19CistCistQnl0ZVZlY3RvciBXTUE6OkF0dHJpYnV0ZTo6 dG9CeXRlVmVjdG9yKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+dmFsdWVfYnl0ZXM7CistfQor LQorLWludCBXTUE6OkF0dHJpYnV0ZTo6dG9JbnQoKSBjb25zdAorLXsKKy0gIGlmIChkLT50eXBl ID09IFVuaWNvZGVUeXBlKQorLSAgICByZXR1cm4gZC0+dmFsdWVfc3RyaW5nLnRvSW50KCk7Cist ICBlbHNlCistICAgIHJldHVybiBkLT52YWx1ZV9pbnQ7CistfQorLQorLWxvbmcgbG9uZyBXTUE6 OkF0dHJpYnV0ZTo6dG9Mb25nTG9uZygpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPnZhbHVlX2xv bmdsb25nOworLX0KKy0KKy1ib29sIFdNQTo6QXR0cmlidXRlOjpwYXJzZShXTUE6OkZpbGUgJmYp CisteworLSAgaW50IHNpemUgPSBmLnJlYWRXT1JEKCk7CistICBmLnJlYWRTdHJpbmcoc2l6ZSwg ZC0+bmFtZSk7CistICAKKy0gIGQtPnR5cGUgPSAoV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZVR5 cGVzKWYucmVhZFdPUkQoKTsKKy0gIHNpemUgPSBmLnJlYWRXT1JEKCk7CistCistICBzd2l0Y2go ZC0+dHlwZSkgeworLSAgY2FzZSBXb3JkVHlwZToKKy0gICAgZC0+dmFsdWVfaW50ID0gZi5yZWFk V09SRCgpOworLSAgICBicmVhazsKKy0gICAgCistICBjYXNlIEJvb2xUeXBlOgorLSAgY2FzZSBE V29yZFR5cGU6CistICAgIGQtPnZhbHVlX2ludCA9IGYucmVhZERXT1JEKCk7CistICAgIGJyZWFr OworLSAgICAKKy0gIGNhc2UgUVdvcmRUeXBlOiAgCistICAgIGQtPnZhbHVlX2xvbmdsb25nID0g Zi5yZWFkUVdPUkQoKTsKKy0gICAgYnJlYWs7CistICAgIAorLSAgY2FzZSBVbmljb2RlVHlwZTog IAorLSAgICBmLnJlYWRTdHJpbmcoc2l6ZSwgZC0+dmFsdWVfc3RyaW5nKTsKKy0gICAgYnJlYWs7 CistICAgIAorLSAgY2FzZSBCeXRlc1R5cGU6ICAKKy0gICAgZC0+dmFsdWVfYnl0ZXMgPSBmLnJl YWRCbG9jayhzaXplKTsKKy0gICAgYnJlYWs7CistICAgIAorLSAgZGVmYXVsdDoKKy0gICAgcmV0 dXJuIGZhbHNlOyAKKy0gIH0KKy0gIAorLSAgcmV0dXJuIHRydWU7CistfQorLQorLUJ5dGVWZWN0 b3IgV01BOjpBdHRyaWJ1dGU6OnJlbmRlcigpIGNvbnN0CisteworLSAgQnl0ZVZlY3RvciBkYXRh OworLQorLSAgQnl0ZVZlY3RvciB2ID0gZC0+bmFtZS5kYXRhKFN0cmluZzo6VVRGMTZMRSk7Cist ICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodi5zaXplKCkgKyAyLCBmYWxzZSkp OworLSAgZGF0YS5hcHBlbmQodiArIEJ5dGVWZWN0b3I6OmZyb21TaG9ydCgwLCBmYWxzZSkpOwor LSAgCistICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQoKGludClkLT50eXBlLCBm YWxzZSkpOworLSAgICAKKy0gIHN3aXRjaCAoZC0+dHlwZSkgeworLSAgY2FzZSBXb3JkVHlwZToK Ky0gICAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KDIsIGZhbHNlKSk7CistICAg IGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydChkLT52YWx1ZV9pbnQsIGZhbHNlKSk7 CistICAgIGJyZWFrOworLSAgICAgIAorLSAgY2FzZSBCb29sVHlwZToKKy0gIGNhc2UgRFdvcmRU eXBlOgorLSAgICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQoNCwgZmFsc2UpKTsK Ky0gICAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVVJbnQoZC0+dmFsdWVfaW50LCBmYWxz ZSkpOworLSAgICBicmVhazsKKy0gICAgICAKKy0gIGNhc2UgUVdvcmRUeXBlOgorLSAgICBkYXRh LmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQoOCwgZmFsc2UpKTsKKy0gICAgZGF0YS5hcHBl bmQoQnl0ZVZlY3Rvcjo6ZnJvbUxvbmdMb25nKGQtPnZhbHVlX2xvbmdsb25nLCBmYWxzZSkpOwor LSAgICBicmVhazsKKy0gICAgICAKKy0gIGNhc2UgVW5pY29kZVR5cGU6CistICAgIHYgPSBkLT52 YWx1ZV9zdHJpbmcuZGF0YShTdHJpbmc6OlVURjE2TEUpOworLSAgICBkYXRhLmFwcGVuZChCeXRl VmVjdG9yOjpmcm9tU2hvcnQodi5zaXplKCkgKyAyLCBmYWxzZSkpOworLSAgICBkYXRhLmFwcGVu ZCh2ICsgQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KDAsIGZhbHNlKSk7CistICAgIGJyZWFrOworLSAg ICAKKy0gIGNhc2UgQnl0ZXNUeXBlOgorLSAgICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9t U2hvcnQoZC0+dmFsdWVfYnl0ZXMuc2l6ZSgpLCBmYWxzZSkpOworLSAgICBkYXRhLmFwcGVuZChk LT52YWx1ZV9ieXRlcyk7CistICAgIGJyZWFrOworLSAgICAKKy0gIGRlZmF1bHQ6ICAKKy0gICAg cmV0dXJuIEJ5dGVWZWN0b3I6Om51bGw7IAorLSAgfQorLSAgCistICByZXR1cm4gZGF0YTsKKy19 CistCistCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hZmlsZS5oCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hZmlsZS5oCShyZXZpc2lvbiA3MDUy MzEpCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hZmlsZS5oCSh3b3JraW5nIGNvcHkp CitAQCAtMSwxMDAgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gICAgY29weXJpZ2h0 ICAgICAgICAgICAgOiAoQykgMjAwNSBieSBMdWthcyBMYWxpbnNreQorLSAgICBlbWFpbCAgICAg ICAgICAgICAgICA6IGxhbGluc2t5QGdtYWlsLmNvbQorLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCist CistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKy0gKiAgIGl0ICB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uICAqCistICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0g KiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCBidXQgICAqCistICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorLSAqICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg ICAgICoKKy0gKiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyAgICAgICoKKy0gKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCistICogICBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sICAgICAgICAgICAg KgorLSAqICAgTUEgIDAyMTEwLTEzMDEgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNpZm5k ZWYgVEFHTElCX1dNQUZJTEVfSAorLSNkZWZpbmUgVEFHTElCX1dNQUZJTEVfSAorLQorLSNpbmNs dWRlIDx0ZmlsZS5oPgorLSNpbmNsdWRlIDx0YWcuaD4KKy0jaW5jbHVkZSAid21hcHJvcGVydGll cy5oIgorLSNpbmNsdWRlICJ3bWF0YWcuaCIKKy0KKy1uYW1lc3BhY2UgVGFnTGliIHsKKy0KKy0g IG5hbWVzcGFjZSBXTUEgeworLSAgCistICAgIHN0cnVjdCBHVUlEOworLSAgICAKKy0gICAgdHlw ZWRlZiB1bnNpZ25lZCBjaGFyIEJZVEU7CistICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgV09S RDsKKy0gICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgRFdPUkQ7CistICAgIHR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBsb25nIFFXT1JEOworLSAgICAKKy0gICAgY2xhc3MgRmlsZSA6IHB1YmxpYyBUYWdM aWI6OkZpbGUKKy0gICAgeworLSAgICAgICAgCistICAgICAgZnJpZW5kIGNsYXNzIEF0dHJpYnV0 ZTsKKy0KKy0gICAgcHVibGljOgorLQorLSAgICAgIEZpbGUoY29uc3QgY2hhciAqZmlsZSwgYm9v bCByZWFkUHJvcGVydGllcyA9IHRydWUsIFByb3BlcnRpZXM6OlJlYWRTdHlsZSBwcm9wZXJ0aWVz U3R5bGUgPSBQcm9wZXJ0aWVzOjpBdmVyYWdlKTsKKy0gICAgICAKKy0gICAgICB2aXJ0dWFsIH5G aWxlKCk7CistICAgIAorLSAgICAgIC8qIQorLSAgICAgICAqIFJldHVybnMgdGhlIFRhZ0xpYjo6 VGFnIGZvciB0aGlzIGZpbGUuIAorLSAgICAgICAqLworLSAgICAgIHZpcnR1YWwgVGFnTGliOjpU YWcgKnRhZygpIGNvbnN0OworLQorLSAgICAgIC8qIQorLSAgICAgICAqIFJldHVybnMgdGhlIFdN QTo6VGFnIGZvciB0aGlzIGZpbGUuIAorLSAgICAgICAqLworLSAgICAgIHZpcnR1YWwgVGFnICpX TUFUYWcoKSBjb25zdDsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSBXTUE6 OlByb3BlcnRpZXMgZm9yIHRoaXMgZmlsZS4gCistICAgICAgICovCistICAgICAgdmlydHVhbCBQ cm9wZXJ0aWVzICphdWRpb1Byb3BlcnRpZXMoKSBjb25zdDsKKy0KKy0KKy0gICAgICAvKiEKKy0g ICAgICAgKiBTYXZlIHRoZSBmaWxlLiAKKy0gICAgICAgKgorLSAgICAgICAqIFRoaXMgcmV0dXJu cyB0cnVlIGlmIHRoZSBzYXZlIHdhcyBzdWNjZXNzZnVsLgorLSAgICAgICAqLworLSAgICAgIHZp cnR1YWwgYm9vbCBzYXZlKCk7CistICAgIAorLSAgICBwcm90ZWN0ZWQ6CistCistICAgICAgaW50 IHJlYWRCWVRFKCk7CistICAgICAgaW50IHJlYWRXT1JEKCk7CistICAgICAgdW5zaWduZWQgaW50 IHJlYWREV09SRCgpOworLSAgICAgIGxvbmcgbG9uZyByZWFkUVdPUkQoKTsKKy0gICAgICB2b2lk IHJlYWRHVUlEKEdVSUQgJmcpOworLSAgICAgIHZvaWQgcmVhZFN0cmluZyhpbnQgbGVuLCBTdHJp bmcgJnMpOworLQorLSAgICAgIEJ5dGVWZWN0b3IgcmVuZGVyQ29udGVudERlc2NyaXB0aW9uKCk7 CistICAgICAgQnl0ZVZlY3RvciByZW5kZXJFeHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbigpOwor LSAgICAgIAorLSAgICAgIHZvaWQgcmVhZChib29sIHJlYWRQcm9wZXJ0aWVzLCBQcm9wZXJ0aWVz OjpSZWFkU3R5bGUgcHJvcGVydGllc1N0eWxlKTsKKy0KKy0gICAgcHJpdmF0ZToKKy0gICAgICAK Ky0gICAgICBjbGFzcyBGaWxlUHJpdmF0ZTsKKy0gICAgICBGaWxlUHJpdmF0ZSAqZDsKKy0gICAg ICAKKy0gICAgfTsKKy0gIAorLSAgfQorLQorLX0gIAorLQorLSNlbmRpZgorSW5kZXg6IGFtYXJv ay9zcmMvbWV0YWRhdGEvd21hL3RhZ2xpYl93bWFmaWxldHlwZXJlc29sdmVyLmNwcAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3RhZ2xpYl93bWFmaWxldHlwZXJlc29s dmVyLmNwcAkocmV2aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3Rh Z2xpYl93bWFmaWxldHlwZXJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQorQEAgLTEsNDcgKzAs MCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAo QykgMjAwNSBieSBNYXJ0aW4gQXVtdWVsbGVyCistICAgIGVtYWlsICAgICAgICAgICAgICAgIDog YXVtdWVsbEByZXNlcnYuYXQKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBpdCAgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorLSAq ICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAg ICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 ICAgKgorLSAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCistICogICBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAg ICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAq CistICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAgICoKKy0gKiAgIE1BICAw MjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vLyAoYykgMjAwNSBNYXJ0aW4g QXVtdWVsbGVyIDxhdW11ZWxsQHJlc2Vydi5hdD4KKy0vLyBTZWUgQ09QWUlORyBmaWxlIGZvciBs aWNlbnNpbmcgaW5mb3JtYXRpb24KKy0KKy0jaW5jbHVkZSAidGFnbGliX3dtYWZpbGV0eXBlcmVz b2x2ZXIuaCIKKy0jaW5jbHVkZSAid21hZmlsZS5oIgorLQorLSNpbmNsdWRlIDxzdHJpbmcuaD4K Ky0KKy1UYWdMaWI6OkZpbGUgKldNQUZpbGVUeXBlUmVzb2x2ZXI6OmNyZWF0ZUZpbGUoY29uc3Qg Y2hhciAqZmlsZU5hbWUsCistICAgICAgICBib29sIHJlYWRQcm9wZXJ0aWVzLAorLSAgICAgICAg VGFnTGliOjpBdWRpb1Byb3BlcnRpZXM6OlJlYWRTdHlsZSBwcm9wZXJ0aWVzU3R5bGUpIGNvbnN0 CisteworLSAgICBjb25zdCBjaGFyICpleHQgPSBzdHJyY2hyKGZpbGVOYW1lLCAnLicpOworLSAg ICBpZihleHQgJiYgKCFzdHJjYXNlY21wKGV4dCwgIi53bWEiKSB8fCAhc3RyY2FzZWNtcChleHQs ICIuYXNmIikpKQorLSAgICB7CistICAgICAgICBUYWdMaWI6OldNQTo6RmlsZSAqZiA9IG5ldyBU YWdMaWI6OldNQTo6RmlsZShmaWxlTmFtZSwgcmVhZFByb3BlcnRpZXMsIHByb3BlcnRpZXNTdHls ZSk7CistICAgICAgICBpZihmLT5pc1ZhbGlkKCkpCistICAgICAgICAgICAgcmV0dXJuIGY7Cist ICAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAgICAgZGVsZXRlIGY7CistICAgICAg ICB9CistICAgIH0KKy0KKy0gICAgcmV0dXJuIDA7CistfQorSW5kZXg6IGFtYXJvay9zcmMvbWV0 YWRhdGEvd21hL3dtYWF0dHJpYnV0ZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRh ZGF0YS93bWEvd21hYXR0cmlidXRlLmgJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3Jj L21ldGFkYXRhL3dtYS93bWFhdHRyaWJ1dGUuaAkod29ya2luZyBjb3B5KQorQEAgLTEsMTI1ICsw LDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCistICAgIGNvcHlyaWdodCAgICAgICAgICAgIDog KEMpIDIwMDUgYnkgTHVrYXMgTGFsaW5za3kKKy0gICAgZW1haWwgICAgICAgICAgICAgICAgOiBs YWxpbnNreUBnbWFpbC5jb20KKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBpdCAgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorLSAq ICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAg ICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 ICAgKgorLSAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCistICogICBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAg ICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAq CistICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAgICoKKy0gKiAgIE1BICAw MjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jaWZuZGVmIFRBR0xJQl9XTUFB VFRSSUJVVEVfSAorLSNkZWZpbmUgVEFHTElCX1dNQUFUVFJJQlVURV9ICistCistI2luY2x1ZGUg PHRzdHJpbmcuaD4KKy0jaW5jbHVkZSA8dGJ5dGV2ZWN0b3IuaD4KKy0KKy1uYW1lc3BhY2UgVGFn TGliIHsKKy0KKy0gIG5hbWVzcGFjZSBXTUEgeworLSAKKy0gICAgY2xhc3MgRmlsZTsgIAorLSAg ICAgIAorLSAgICBjbGFzcyBBdHRyaWJ1dGUgeworLQorLSAgICAgIGZyaWVuZCBjbGFzcyBGaWxl OyAgCistICAgICAgICAKKy0gICAgcHVibGljOgorLQorLSAgICAgIC8qIQorLSAgICAgICAqIEVu dW0gb2YgdHlwZXMgYW4gQXR0cmlidXRlIGNhbiBoYXZlLgorLSAgICAgICAqLworLSAgICAgIGVu dW0gQXR0cmlidXRlVHlwZXMgeworLSAgICAgICAgVW5pY29kZVR5cGUgPSAwLAorLSAgICAgICAg Qnl0ZXNUeXBlICAgPSAxLAorLSAgICAgICAgQm9vbFR5cGUgICAgPSAyLAorLSAgICAgICAgRFdv cmRUeXBlICAgPSAzLAorLSAgICAgICAgUVdvcmRUeXBlICAgPSA0LAorLSAgICAgICAgV29yZFR5 cGUgICAgPSA1CistICAgICAgfTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBDb25zdHJ1Y3Rz IGFuIGVtcHR5IGF0dHJpYnV0ZS4KKy0gICAgICAgKi8gICAgICAgCistICAgICAgQXR0cmlidXRl KCk7CistICAgICAgCistICAgICAgLyohCistICAgICAgICogQ29uc3RydWN0cyBhbiBhdHRyaWJ1 dGUgd2l0aCBcYSBrZXkgYW5kIFxhIHZhbHVlLgorLSAgICAgICAqLyAgICAgICAKKy0gICAgICBB dHRyaWJ1dGUoY29uc3QgU3RyaW5nICZrZXksIGNvbnN0IFN0cmluZyAmdmFsdWUpOworLSAgICAg IEF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJmtleSwgY29uc3QgQnl0ZVZlY3RvciAmdmFsdWUpOwor LSAgICAgIEF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJmtleSwgdW5zaWduZWQgaW50IHZhbHVlKTsK Ky0gICAgICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZrZXksIHVuc2lnbmVkIGxvbmcgbG9uZyB2 YWx1ZSk7CistICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyAma2V5LCB1bnNpZ25lZCBzaG9y dCB2YWx1ZSk7CistICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyAma2V5LCBib29sIHZhbHVl KTsKKy0gICAgICAKKy0gICAgICAvKiEKKy0gICAgICAgKiBDb25zdHJ1Y3QgYW4gYXR0cmlidXRl IGFzIGEgY29weSBvZiBcYSBpdGVtLgorLSAgICAgICAqLworLSAgICAgIEF0dHJpYnV0ZShjb25z dCBBdHRyaWJ1dGUgJml0ZW0pOyAgICAgICAKKy0gICAgICAKKy0gICAgICAvKiEKKy0gICAgICAg KiBEZXN0cm95cyB0aGUgYXR0cmlidXRlLgorLSAgICAgICAqLyAKKy0gICAgICB2aXJ0dWFsIH5B dHRyaWJ1dGUoKTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSBuYW1lLgor LSAgICAgICAqLworLSAgICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CistICAgICAgCistICAgICAg LyohCistICAgICAgICogUmV0dXJucyB0eXBlIG9mIHRoZSB2YWx1ZS4KKy0gICAgICAgKi8KKy0g ICAgICBBdHRyaWJ1dGVUeXBlcyB0eXBlKCkgY29uc3Q7CistICAgICAgCistICAgICAgLyohCist ICAgICAgICogUmV0dXJucyB0aGUgdmFsdWUgYXMgYSBTdHJpbmcuCistICAgICAgICovCistICAg ICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CistICAgICAgCistICAgICAgLyohCistICAgICAg ICogUmV0dXJucyB0aGUgdmFsdWUgYXMgYSBCeXRlVmVjdG9yLgorLSAgICAgICAqLworLSAgICAg IEJ5dGVWZWN0b3IgdG9CeXRlVmVjdG9yKCkgY29uc3Q7CistICAgICAgCistICAgICAgLyohCist ICAgICAgICogUmV0dXJucyB0aGUgdmFsdWUgYXMgYW4gaW50ZWdlci4KKy0gICAgICAgKi8KKy0g ICAgICBpbnQgdG9JbnQoKSBjb25zdDsKKy0gICAgICAKKy0gICAgICAvKiEKKy0gICAgICAgKiBS ZXR1cm5zIHRoZSB2YWx1ZSBhcyBhIGxvbmcgbG9uZy4KKy0gICAgICAgKi8KKy0gICAgICBsb25n IGxvbmcgdG9Mb25nTG9uZygpIGNvbnN0OworLSAgICAgIAorLSAgICAgIEJ5dGVWZWN0b3IgcmVu ZGVyKCkgY29uc3Q7CistICAgICAgCistICAgIHByb3RlY3RlZDoKKy0gICAgCistICAgICAgQXR0 cmlidXRlKFdNQTo6RmlsZSAmZmlsZSk7CistICAgICAgYm9vbCBwYXJzZShXTUE6OkZpbGUgJmZp bGUpOworLSAgICAgIAorLSAgICBwcml2YXRlOgorLSAgICAgIAorLSAgICAgIGNsYXNzIEF0dHJp YnV0ZVByaXZhdGU7CistICAgICAgQXR0cmlidXRlUHJpdmF0ZSAqZDsKKy0gICAgCistICAgIH07 CistICAKKy0gIH0KKy0gIAorLX0KKy0KKy0jZW5kaWYKKworUHJvcGVydHkgY2hhbmdlcyBvbjog YW1hcm9rL3NyYy9tZXRhZGF0YS93bWEKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK05hbWU6IHN2bjppZ25vcmUKKyAg IC0gLmxpYnMKKy5kZXBzCitNYWtlZmlsZQorTWFrZWZpbGUuaW4KKworCitJbmRleDogYW1hcm9r L3NyYy9tZXRhZGF0YS90cGx1Z2lucy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21l dGFkYXRhL3RwbHVnaW5zLmNwcAkocmV2aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0 YWRhdGEvdHBsdWdpbnMuY3BwCSh3b3JraW5nIGNvcHkpCitAQCAtNDIsOCArNDIsOCBAQAorICNp bmNsdWRlICJ3YXZwYWNrL3d2ZmlsZS5oIgorICNpbmNsdWRlICJzcGVleC90YWdsaWJfc3BlZXhm aWxldHlwZXJlc29sdmVyLmgiCisgI2luY2x1ZGUgInNwZWV4L3NwZWV4ZmlsZS5oIgorLSNpbmNs dWRlICJ3bWEvdGFnbGliX3dtYWZpbGV0eXBlcmVzb2x2ZXIuaCIKKy0jaW5jbHVkZSAid21hL3dt YWZpbGUuaCIKKysjaW5jbHVkZSAiYXNmL3RhZ2xpYl9hc2ZmaWxldHlwZXJlc29sdmVyLmgiCisr I2luY2x1ZGUgImFzZi9hc2ZmaWxlLmgiCisgI2luY2x1ZGUgInJtZmYvdGFnbGliX3JlYWxtZWRp YWZpbGV0eXBlcmVzb2x2ZXIuaCIKKyAjaW5jbHVkZSAicm1mZi90YWdsaWJfcmVhbG1lZGlhZmls ZS5oIgorICNpbmNsdWRlICJhdWRpYmxlL3RhZ2xpYl9hdWRpYmxlZmlsZXR5cGVyZXNvbHZlci5o IgorQEAgLTk1LDcgKzk1LDcgQEAKKyAgICAgICAgICAgICB8fCBtaW1ldHlwZS0+aXMoICJ2aWRl by94LW1zdmlkZW8iICkKKyAgICAgICAgICAgICB8fCBtaW1ldHlwZS0+aXMoICJ2aWRlby94LW1z LXdtdiIgKSApCisgICAgIHsKKy0gICAgICAgIHJldHVybiBuZXcgVGFnTGliOjpXTUE6OkZpbGUo ZmlsZU5hbWUsIHJlYWRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzU3R5bGUpOworKyAgICAgICAgcmV0 dXJuIG5ldyBUYWdMaWI6OkFTRjo6RmlsZShmaWxlTmFtZSwgcmVhZFByb3BlcnRpZXMsIHByb3Bl cnRpZXNTdHlsZSk7CisgICAgIH0KKyAgICAgZWxzZSBpZiggbWltZXR5cGUtPmlzKCAiYXVkaW8v dm5kLnJuLXJlYWxhdWRpbyIgKQorICAgICAgICAgICAgIHx8IG1pbWV0eXBlLT5pcyggImF1ZGlv L3gtcG4tcmVhbGF1ZGlvIiApCitAQCAtMTMwLDcgKzEzMCw3IEBACisgeworICAgICAvL1RhZ0xp Yjo6RmlsZVJlZjo6YWRkRmlsZVR5cGVSZXNvbHZlcihuZXcgTWltZVR5cGVGaWxlVHlwZVJlc29s dmVyKTsKKyAgICAgVGFnTGliOjpGaWxlUmVmOjphZGRGaWxlVHlwZVJlc29sdmVyKG5ldyBNUDRG aWxlVHlwZVJlc29sdmVyKTsKKy0gICAgVGFnTGliOjpGaWxlUmVmOjphZGRGaWxlVHlwZVJlc29s dmVyKG5ldyBXTUFGaWxlVHlwZVJlc29sdmVyKTsKKysgICAgVGFnTGliOjpGaWxlUmVmOjphZGRG aWxlVHlwZVJlc29sdmVyKG5ldyBBU0ZGaWxlVHlwZVJlc29sdmVyKTsKKyAgICAgVGFnTGliOjpG aWxlUmVmOjphZGRGaWxlVHlwZVJlc29sdmVyKG5ldyBSZWFsTWVkaWFGaWxlVHlwZVJlc29sdmVy KTsKKyAgICAgVGFnTGliOjpGaWxlUmVmOjphZGRGaWxlVHlwZVJlc29sdmVyKG5ldyBBdWRpYmxl RmlsZVR5cGVSZXNvbHZlcik7CisgICAgIFRhZ0xpYjo6RmlsZVJlZjo6YWRkRmlsZVR5cGVSZXNv bHZlcihuZXcgQUFDRmlsZVR5cGVSZXNvbHZlcik7CitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0 YS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvTWFrZWZp bGUuYW0JKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL01ha2VmaWxl LmFtCSh3b3JraW5nIGNvcHkpCitAQCAtNiw3ICs2LDcgQEAKKyBNUDRfTERBREQgPSBtNGEvbGli dGFnbTRhLmxhCisgZW5kaWYKKyAKKy1TVUJESVJTID0gc3BlZXggd2F2cGFjayB0cnVlYXVkaW8g d21hIGF1ZGlibGUgcm1mZiAkKE1QNF9TVUJESVIpIGFhYyB3YXYKKytTVUJESVJTID0gc3BlZXgg d2F2cGFjayB0cnVlYXVkaW8gYXNmIGF1ZGlibGUgcm1mZiAkKE1QNF9TVUJESVIpIGFhYyB3YXYK KyAKKyAKKyBJTkNMVURFUyAgICAgICAgICAgPSAtSSQodG9wX3NyY2RpcikvYW1hcm9rL3NyYyAk KGFsbF9pbmNsdWRlcykgJCh0YWdsaWJfaW5jbHVkZXMpCitAQCAtMjQsNyArMjQsNyBAQAorICAg ICAgICAgICAgICAgICAgICAgIHNwZWV4L2xpYnRhZ3NwZWV4LmxhIFwKKyAgICAgICAgICAgICAg ICAgICAgICB0cnVlYXVkaW8vbGlidGFndHJ1ZWF1ZGlvLmxhIFwKKyAgICAgICAgICAgICAgICAg ICAgICB3YXZwYWNrL2xpYnRhZ3dhdnBhY2subGEgXAorLSAgICAgICAgICAgICAgICAgICAgIHdt YS9saWJ0YWd3bWEubGEgXAorKyAgICAgICAgICAgICAgICAgICAgIGFzZi9saWJ0YWdhc2YubGEg XAorICAgICAgICAgICAgICAgICAgICAgIHdhdi9saWJ0YWd3YXYubGEgXAorICAgICAgICAgICAg ICAgICAgICAgIHJtZmYvbGlidGFncmVhbG1lZGlhLmxhIFwKKyAgICAgICAgICAgICAgICAgICAg ICAkKE1QNF9MREFERCkgXAoKZGlmZiAtLWdpdCBhL2FtYXJvay5zcGVjIGIvYW1hcm9rLnNwZWMK aW5kZXggZTQ3NjQxZC4uNjZiNWJhMyAxMDA2NDQKLS0tIGEvYW1hcm9rLnNwZWMKKysrIGIvYW1h cm9rLnNwZWMKQEAgLTEsMTAgKzEsMTIgQEAKICMgVE9ETzoKICMgUmlvIEthcm1hIHN1cHBvcnQg OiBsaWJrYXJtYQogCislZGVmaW5lIF93aXRoX21wNHYyIC0td2l0aC1tcDR2MgorCiBOYW1lOiAg ICAgICBhbWFyb2sKIFN1bW1hcnk6ICAgIE1lZGlhIHBsYXllcgogVmVyc2lvbjogICAgMS40LjcK LVJlbGVhc2U6ICAgIDExJXs/ZGlzdH0KK1JlbGVhc2U6ICAgIDEyJXs/ZGlzdH0KIAogR3JvdXA6 IAkgICAgQXBwbGljYXRpb25zL011bHRpbWVkaWEKIExpY2Vuc2U6ICAgIEdQTHYyKwpAQCAtMjEs OCArMjMsMTIgQEAgUGF0Y2gyOiAgICAgYW1hcm9rLTEuNC43LXhkZy5wYXRjaAogIyBodHRwOi8v YnVncy5rZGUub3JnLzE0ODMxNyAtIGR5bmFtaWMgbW9kZSBmbG9vZHMgcGxheWxpc3QgLi4uCiAj IGh0dHA6Ly93ZWJzdm4ua2RlLm9yZy9icmFuY2hlcy9zdGFibGUvZXh0cmFnZWFyL211bHRpbWVk aWEvYW1hcm9rL3NyYy9wbGF5bGlzdC5jcHA/cjE9NzA1NDk0JnIyPTcwNTQ5MyZwYXRocmV2PTcw NTQ5NCZ2aWV3PXBhdGNoCiBQYXRjaDM6ICAgICBhbWFyb2stMS40LjctMTQ4MzE3LnBhdGNoIAor IyBmaXggYXNmL3dtYSBzdXBwb3J0ICh3aXRoIHJlY2VudCB0YWdsaWIpCisjIHN2biBkaWZmIGFt YXJvay9zcmMvbWV0YWRhdGEgLS1yZXZpc2lvbiA3MDUyMzEKK1BhdGNoNDogICAgIGFtYXJvay1h c2YucGF0Y2gKIEJ1aWxkUm9vdDogICAgICAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0t JXtyZWxlYXNlfS1yb290LSUoJXtfX2lkX3V9IC1uKQogCitCdWlsZFJlcXVpcmVzOiAgYXV0b21h a2UgbGlidG9vbAogQnVpbGRSZXF1aXJlczogIGFsc2EtbGliLWRldmVsCiBCdWlsZFJlcXVpcmVz OiAgZGVza3RvcC1maWxlLXV0aWxzCiBCdWlsZFJlcXVpcmVzOiAgZXNvdW5kLWRldmVsCkBAIC00 MCw2ICs0Niw3IEBAIEJ1aWxkUmVxdWlyZXM6ICB0YWdsaWItZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6 ICBsaWJpZnAtZGV2ZWwKICMgSXBvZAogQnVpbGRSZXF1aXJlczogIGxpYmdwb2QtZGV2ZWwKKyV7 P193aXRoX21wNHYyOkJ1aWxkUmVxdWlyZXM6IGxpYm1wNHYyLWRldmVsfQogIyBNVFAgcGxheWVy cwogQnVpbGRSZXF1aXJlczogIGxpYm10cC1kZXZlbAogQnVpbGRSZXF1aXJlczogIGxpYm11c2lj YnJhaW56LWRldmVsCkBAIC05OSwxMiArMTA2LDE2IEBAIHVzZSBhbnkgb2YgeG1tcycgdmlzdWFs aXNhdGlvbiBwbHVnaW5zIHdpdGggQW1hcm9rLgogCiAKICVwcmVwCi0lc2V0dXAgLXEKKyVzZXR1 cCAtcSAKKwogJXBhdGNoMCAtcDAgLWIgLjE0NzEyNgogJXBhdGNoMSAtcDEgLWIgLnV0ZjgKICVw YXRjaDIgLXAxIC1iIC54ZGcKICVwYXRjaDMgLXA0IC1iIC4xNDgzMTcKKyVwYXRjaDQgLXAwIC1i IC5hc2YKIAorIyBmb3IgcGF0Y2g0CittYWtlIC1mIGFkbWluL01ha2VmaWxlLmNvbW1vbiAKIAog CiAlYnVpbGQKQEAgLTEyMCw3ICsxMzEsOCBAQCB1bnNldCBRVERJUiAmJiAuICV7X3N5c2NvbmZk aXJ9L3Byb2ZpbGUuZC9xdC5zaAogJWlmbmFyY2ggcHBjNjQgeDg2XzY0IHMzOTAgczM5MHggaWE2 NCBzcGFyYyBzcGFyYzY0IGFscGhhCiAgICAgIC0td2l0aC1oZWxpeD0le19saWJkaXJ9L2hlbGl4 IFwKICVlbmRpZgotICAgICAlez9fd2l0aF9nc3RyZWFtZXJ9CisgICAgICV7P193aXRoX2dzdHJl YW1lcn0gXAorICAgICAlez9fd2l0aF9saXZtNHYyfQogCiAjICAgICAtLWVuYWJsZS1maW5hbCBc CiAjICAgICAtLXdpdGgtbm1tIFwKQEAgLTE0OCwxMiArMTYwLDE0IEBAIGRlc2t0b3AtZmlsZS1p bnN0YWxsICAtLXZlbmRvciAiIiBcCiBybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9Lyou bGEKIAogCi0lZmluZF9sYW5nICV7bmFtZX0KKyVmaW5kX2xhbmcgJXtuYW1lfSAKICMgSFRNTAog Zm9yIGxhbmdfZGlyIGluICRSUE1fQlVJTERfUk9PVCV7X2RvY2Rpcn0vSFRNTC8qIDsgZG8KLSAg bGFuZz0kKGJhc2VuYW1lICRsYW5nX2RpcikKLSAgWyAiJGxhbmciID09ICJlbiIgXSAmJiBkPWVu LyV7bmFtZX0gfHwgZD0kbGFuZwotICBlY2hvICIlbGFuZygkbGFuZykgJWRvYyAle19kb2NkaXJ9 L0hUTUwvJGQiID4+ICV7bmFtZX0ubGFuZworICBpZiBbIC1kICRsYW5nX2RpciBdOyB0aGVuCisg ICAgbGFuZz0kKGJhc2VuYW1lICRsYW5nX2RpcikKKyAgICBbICIkbGFuZyIgPT0gImVuIiBdICYm IGQ9ZW4vJXtuYW1lfSB8fCBkPSRsYW5nCisgICAgZWNobyAiJWxhbmcoJGxhbmcpICVkb2MgJXtf ZG9jZGlyfS9IVE1MLyRkIiA+PiAle25hbWV9LmxhbmcKKyAgZmkKIGRvbmUKIAogCkBAIC0yNDgs MTQgKzI2MiwxNiBAQCBybSAtZnIgJFJQTV9CVUlMRF9ST09UCiAle19kYXRhZGlyfS9zZXJ2aWNl cy9hbWFyb2tfaGVsaXhlbmdpbmVfcGx1Z2luLmRlc2t0b3AKICVlbmRpZgogCi0KICVmaWxlcyB2 aXN1YWxpc2F0aW9uCiAlZGVmYXR0cigtLHJvb3Qscm9vdCwtKQogJXtfYmluZGlyfS9hbWFyb2tf bGlidmlzdWFsCiAKIAotCiAlY2hhbmdlbG9nCisqIFRodSBOb3YgMjkgMjAwNyBSZXggRGlldGVy IDxyZGlldGVyW0FUXWZlZG9yYXByb2plY3Qub3JnPiAxLjQuNy0xMgorLSAtLXdpdGgtbXA0djIg KHJoIzM0NjAxMSkKKy0gZml4IGFzZi93bWEgc3VwcG9ydCAocmgjMzQ2MDExLGtkZSMxNTE3MzMp CisKICogV2VkIE5vdiAyMSAyMDA3IFJleCBEaWV0ZXIgPHJkaWV0ZXJbQVRdZmVkb3JhcHJvamVj dC5vcmc+IDEuNC43LTExCiAtIGR5bmFtaWMgbW9kZSBmbG9vZHMgcGxheWxpc3QgLi4uIChrZGUg IzE0ODMxNykKIAo=