IyBmb250Y29uZmlnIGRlYmNvbmYgdHJhbnNsYXRpb24gdG8gc3BhbmlzaAojIENvcHlyaWdodCAoQykgMjAwNCBTb2Z0d2FyZSBpbiB0aGUgUHVibGljIEludGVyZXN0CiMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGZvbnRjb25maWcgcGFja2FnZS4KIwojIENoYW5nZXM6CiMgLSBJbml0aWFsIHRyYW5zbGF0aW9uCiMgICAgICAgIEZjby4gSmF2aWVyIFPhbmNoZXogQ2FzdGVsbyA8amF2aWNhc3RlbG9Ab25vLmNvbT4gLCAyMDA0CiMgLSBSZXZpc2lvbjoKIyAJIEphdmllciBGZXJu4W5kZXotU2FuZ3Vpbm8gUGXxYSA8amZzQGRlYmlhbi5vcmc+CiMgLSBUcmFuc2xhdGlvbiBvZiBuZXcgcGFyYWdyYXBoczoKIyAgICAJIFJ1YuluIFBvcnJhcyA8bmFob29AaW5pY2lhLmVzPiwgMjAwNAojCiMgIFRyYWR1Y3RvcmVzLCBzaSBubyBjb25vY2UgZWwgZm9ybWF0byBQTywgbWVyZWNlIGxhIHBlbmEgbGVlciBsYSAKIyAgZG9jdW1lbnRhY2nzbiBkZSBnZXR0ZXh0LCBlc3BlY2lhbG1lbnRlIGxhcyBzZWNjaW9uZXMgZGVkaWNhZGFzIGEgZXN0ZQojICBmb3JtYXRvLCBwb3IgZWplbXBsbyBlamVjdXRhbmRvOgojICAgICAgICAgaW5mbyAtbiAnKGdldHRleHQpUE8gRmlsZXMnCiMgICAgICAgICBpbmZvIC1uICcoZ2V0dGV4dClIZWFkZXIgRW50cnknCiMKIyBFcXVpcG8gZGUgdHJhZHVjY2nzbiBhbCBlc3Bh8W9sLCBwb3IgZmF2b3IgbGVhbiBhbnRlcyBkZSB0cmFkdWNpcgojIGxvcyBzaWd1aWVudGVzIGRvY3VtZW50b3M6CiMgCiMgLSBFbCBwcm95ZWN0byBkZSB0cmFkdWNjafNuIGRlIERlYmlhbiBhbCBlc3Bh8W9sCiMgICBodHRwOi8vd3d3LmRlYmlhbi5vcmcvaW50bC9zcGFuaXNoL2Nvb3JkaW5hY2lvbgojICAgZXNwZWNpYWxtZW50ZSBsYXMgbm90YXMgZGUgdHJhZHVjY2nzbiBlbgojICAgaHR0cDovL3d3dy5kZWJpYW4ub3JnL2ludGwvc3BhbmlzaC9ub3RhcwojCiMgLSBMYSBnde1hIGRlIHRyYWR1Y2Np824gZGUgcG8ncyBkZSBkZWJjb25mOgojICAgL3Vzci9zaGFyZS9kb2MvcG8tZGViY29uZi9SRUFETUUtdHJhbnMKIyAgIG8gaHR0cDovL3d3dy5kZWJpYW4ub3JnL2ludGwvbDEwbi9wby1kZWJjb25mL1JFQURNRS10cmFucwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogZm9udGNvbmZpZyAyLjIuMy0zXG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNS0wMy0yOSAxMzozMy0wODAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTEwLTI0IDE0OjA1KzAyMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUnVi6W4gUG9ycmFzXG4iCiJMYW5ndWFnZS1UZWFtOiBEZWJpYW4gU3BhbmlzaCA8ZGViaWFuLWwxMG4tc3BhbmlzaEBsaXN0cy5kZWJpYW4ub3JnPlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoKIy4gVHlwZTogc2VsZWN0CiMuIENob2ljZXMKIzogLi4vZm9udGNvbmZpZy50ZW1wbGF0ZXM6Mwptc2dpZCAiTmF0aXZlLCBBdXRvaGludGVyLCBOb25lIgptc2dzdHIgIiIKCiMuIFR5cGU6IHNlbGVjdAojLiBEZXNjcmlwdGlvbgojOiAuLi9mb250Y29uZmlnLnRlbXBsYXRlczo1Cm1zZ2lkICJIb3cgc2hvdWxkIGZvbnRzIGJlIHR1bmVkIGZvciB0aGUgc2NyZWVuPyIKbXNnc3RyICIiCgojLiBUeXBlOiBzZWxlY3QKIy4gRGVzY3JpcHRpb24KIzogLi4vZm9udGNvbmZpZy50ZW1wbGF0ZXM6NQptc2dpZCAiIgoiU2VsZWN0IE5hdGl2ZSBpZiB5b3UgbW9zdGx5IHVzZSBCaXRzdHJlYW0gVmVyYSAodGhlIGRlZmF1bHQgaW4gRGViaWFuKSBvciAiCiJhbnkgb2YgdGhlIE1pY3Jvc29mdCBmb250cy4gIFNlbGVjdCBBdXRvaGludGVyIGlmIHlvdSBtb3N0bHkgdXNlIG90aGVyICIKIlRydWVUeXBlIGZvbnRzLiAgU2VsZWN0IE5vbmUgaWYgeW91IHdhbnQgYmx1cnJ5IHRleHQuIgptc2dzdHIgIiIKCiMuIFR5cGU6IHNlbGVjdAojLiBDaG9pY2VzCiM6IC4uL2ZvbnRjb25maWcudGVtcGxhdGVzOjEyCm1zZ2lkICJBdXRvbWF0aWMsIEFsd2F5cywgTmV2ZXIiCm1zZ3N0ciAiIgoKIy4gVHlwZTogc2VsZWN0CiMuIERlc2NyaXB0aW9uCiM6IC4uL2ZvbnRjb25maWcudGVtcGxhdGVzOjE0CiMsIGZ1enp5Cm1zZ2lkICJFbmFibGUgc3VicGl4ZWwgcmVuZGVyaW5nIG9mIHRleHQ/Igptc2dzdHIgIr9BY3RpdmFyIGVsIHJlbmRlcml6YWRvIGRlIHN1Yi1waXhlbCBkZSB0ZXh0bz8iCgojLiBUeXBlOiBzZWxlY3QKIy4gRGVzY3JpcHRpb24KIzogLi4vZm9udGNvbmZpZy50ZW1wbGF0ZXM6MTQKbXNnaWQgIiIKIlJlbmRlcmluZyB0ZXh0IGF0IGEgc3VicGl4ZWwgbGV2ZWwgZ2VuZXJhbGx5IG1ha2VzIGl0IGxvb2sgYSBiaXQgYmV0dGVyIG9uICIKImZsYXQgKExDRCkgc2NyZWVucywgYnV0IGNhbiBzaG93IGNvbG9yIGFydGlmYWN0cyBvbiBDUlQgc2NyZWVucy4gVGhlICIKIlwiQXV0b21hdGljXCIgY2hvaWNlIHdpbGwgZW5hYmxlIGl0IG9ubHkgaWYgYSBMQ0Qgc2NyZWVuIGlzIGRldGVjdGVkLiIKbXNnc3RyICIiCgojLiBUeXBlOiBib29sZWFuCiMuIERlc2NyaXB0aW9uCiM6IC4uL2ZvbnRjb25maWcudGVtcGxhdGVzOjIyCm1zZ2lkICJFbmFibGUgYml0bWFwcGVkIGZvbnRzIGJ5IGRlZmF1bHQ/Igptc2dzdHIgIr9BY3RpdmFyIGVsIHRpcG8gZGUgbGV0cmEgq2JpdG1hcHBlZLsgcG9yIG9taXNp824/IgoKIy4gVHlwZTogYm9vbGVhbgojLiBEZXNjcmlwdGlvbgojOiAuLi9mb250Y29uZmlnLnRlbXBsYXRlczoyMgptc2dpZCAiIgoiQnkgZGVmYXVsdCwgb25seSBvdXRsaW5lIGZvbnRzIGFyZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB3aGljaCBzdXBwb3J0ICIKImZvbnRjb25maWcuICBPdXRsaW5lIGZvbnRzIGFyZSBmb250cyB3aGljaCBzY2FsZSB3ZWxsIHRvIHZhcmlvdXMgc2l6ZXMuICBJbiAiCiJjb250cmFzdCwgYml0bWFwcGVkIGZvbnRzIGFyZSBvZnRlbiBsb3dlciBxdWFsaXR5LiBFbmFibGluZyB0aGlzIG9wdGlvbiB3aWxsICIKImFmZmVjdCB0aGUgc3lzdGVtd2lkZSBkZWZhdWx0OyB0aGlzIGFuZCBtYW55IG90aGVyIGZvbnRjb25maWcgb3B0aW9ucyBtYXkgYmUgIgoiZW5hYmxlZCBvciBkaXNhYmxlZCBvbiBhIHBlci11c2VyIGJhc2lzLiIKbXNnc3RyICIiCiJQb3Igb21pc2nzbiwgc/NsbyBsYXMgYXBsaWNhY2lvbmVzIHF1ZSBhZG1pdGVuIGZvbnRjb25maWcgdXNhbiB0aXBvcyBkZSAiCiJsZXRyYSCrb3V0bGluZbsuIEVzdG9zIHRpcG9zIGRlIGxldHJhIGVzY2FsYW4gYmFzdGFudGUgYmllbiBlbiBkaXN0aW50b3MgIgoidGFtYfFvcy4gU2luIGVtYmFyZ28sIGVsIHRpcG8gZGUgbGV0cmEgYml0bWFwcGVkIGVzIGhhYml0dWFsbWVudGUgZGUgcGVvciAiCiJjYWxpZGFkLiBBY3RpdmFyIGVzdGEgb3BjafNuIGFmZWN0YXLhIGFsIHZhbG9yIHBvciBvbWlzafNuIGRlIHRvZG8gZWwgIgoic2lzdGVtYTsgbG9zIHVzdWFyaW9zIHBvZHLhbiwgZGUgZm9ybWEgaW5kaXZpZHVhbCwgYWN0aXZhciDpc3RhIHkgbXVjaGFzICIKIm90cmFzIG9wY2lvbmVzIGRlIGZvbnRjb25maWcuIgoKIywgZnV6enkKI34gbXNnaWQgIldpdGggd2hhdCBtZXRob2Qgc2hvdWxkIGZvbnRzIGJlIGhpbnRlZD8iCiN+IG1zZ3N0ciAiv0NvbiBxdekgbel0b2RvIHNlIGRlYmVuIGludGVycHJldGFyIGxvcyB0ZXh0b3M/IgoKI34gbXNnaWQgIiIKI34gIkJ5dGVjb2RlIGludGVycHJldGVyIChDUlQgc2NyZWVucyksIEF1dG9oaW50ZXIsIFN1YnBpeGVsIHJlbmRlcmluZyAoTENEICIKI34gInNjcmVlbnMpIgojfiBtc2dzdHIgIiIKI34gIkludOlycHJldGUgq2J5dGVjb2RluyAocGFudGFsbGFzIFRSQyksIKtBdXRvaGludGVyuywgSW506XJwcmV0ZSBtZWRpYW50ZSAiCiN+ICJzdWJw7XhlbGVzIChwYW50YWxsYXMgTENEKSIKCiN+IG1zZ2lkICIiCiN+ICJUaGUgRnJlZXR5cGUgZm9udCBsaWJyYXJ5IGlzIGFibGUgdG8gcmVuZGVyIGZvbnRzIHdpdGggZGlmZmVyZW50IG1ldGhvZHMuICIKI34gIkRlcGVuZGluZyBvbiB5b3VyIGhhcmR3YXJlIGFuZCB0aGUgZm9udHMgeW91IGdlbmVyYWxseSB1c2UsIHNvbWUgd2lsbCAiCiN+ICJnaXZlIGJldHRlciByZXN1bHRzLiIKI34gbXNnc3RyICIiCiN+ICJMYSBiaWJsaW90ZWNhIEZyZWV0eXBlIGVzIGNhcGF6IGRlIGludGVycHJldGFyIGxvcyB0aXBvcyBkZSBsZXRyYSB1c2FuZG8gIgojfiAidmFyaW9zIG3pdG9kb3MuIERlcGVuZGllbmRvIGRlbCBoYXJkd2FyZSB5IGxvcyB0aXBvcyBkZSBsZXRyYSBxdWUgdXNlICIKI34gImhhYml0dWFsbWVudGUsIGFsZ3Vub3MgZGFy4W4gbWVqb3JlcyByZXN1bHRhZG9zLiIKCiN+IG1zZ2lkICIiCiN+ICJUaGUgYXV0b2hpbnRlciBtb2R1bGUgaXMgdGhlIGRlZmF1bHQ7IGl0IGdpdmVzIGNvcnJlY3QgcmVzdWx0cyBvbiBtb3N0ICIKI34gImNvbmZpZ3VyYXRpb25zLiBUaGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgcmVuZGVycyBmb250cyB2ZXJ5IHNoYXJwbHksIGFuZCAiCiN+ICJpcyBvZnRlbiBhIGJldHRlciBjaG9pY2UgaWYgeW91IGFyZSB1c2luZyBhIGNhdGhvZGUtcmF5IHNjcmVlbi4gT24gdGhlICIKI34gIm90aGVyIGhhbmQsIHRoZSBzdWJwaXhlbCByZW5kZXJpbmcgbWV0aG9kIGlzIG9wdGltaXplZCBmb3IgaGlnaC1xdWFsaXR5ICIKI34gInJlbmRlcmluZyBvbiBtb3N0IGxpcXVpZCBjcnlzdGFsIGRpc3BsYXlzLiIKI34gbXNnc3RyICIiCiN+ICJFbCBt82R1bG8gq2F1dG9oaW50ZXK7IGVzIGVsIHByZWRldGVybWluYWRvOyBvYnRpZW5lIHJlc3VsdGFkb3MgY29ycmVjdG9zICIKI34gImVuIGxhIG1heW9y7WEgZGUgbGFzIGNvbmZpZ3VyYWNpb25lcy4gRWwgaW506XJwcmV0ZSCrYnl0ZWNvZGW7IGdlbmVyYSAiCiN+ICJ0aXBvcyBkZSBsZXRyYSBtdXkgbWFyY2FkYSwgeSBzdWVsZSBzZXIgbGEgbWVqb3Igb3BjafNuIHNpIHVzYSB1bmEgIgojfiAicGFudGFsbGEgZGUgcmF5b3MgY2F082RpY29zLiBQb3Igb3RybyBsYWRvLCBlbCBpbnTpcnByZXRlIG1lZGlhbnRlICIKI34gInN1YnDteGVsZXMgZXN04SBvcHRpbWl6YWRvIHBhcmEgb2J0ZW5lciByZXN1bHRhZG9zIGRlIGFsdGEgY2FsaWRhZCBlbiAiCiN+ICJwYW50YWxsYXMgZGUgY3Jpc3RhbCBs7XF1aWRvLiIKCiN+IG1zZ2lkICIiCiN+ICJJZiB5b3UgaGF2ZSBhbiBMQ0QgZGlzcGxheSwgdGhlbiB5b3Ugd2lsbCB3YW50IHRvIGVuYWJsZSB0aGlzIG9wdGlvbi4gSXQgIgojfiAiYWxsb3dzIGZvciBoaWdoZXItcXVhbGl0eSB0ZXh0IHJlbmRlcmluZy4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgIgojfiAic2VlIHRoZSBmb250Y29uZmlnIG1hbnVhbCBpbiAvdXNyL3NoYXJlL2RvYy9mb250Y29uZmlnLyBvbiB5b3VyIERlYmlhbiAiCiN+ICJzeXN0ZW0uIgojfiBtc2dzdHIgIiIKI34gIlNpIHRpZW5lIHVuIG1vbml0b3IgTENELCBlbnRvbmNlcyBzZWd1cmFtZW50ZSBxdWVycuEgYWN0aXZhciBlc3RhIG9wY2nzbi4gIgojfiAiRXN0YSBwZXJtaXRlIHJlbmRlcml6YXIgZWwgdGV4dG8gY29uIG1lam9yIGNhbGlkYWQuIFBhcmEgbeFzIGluZm9ybWFjafNuLCAiCiN+ICJwb3IgZmF2b3IgdmVhIGVsIG1hbnVhbCBkZSBmb250Y29uZmlnIGVuIKsvdXNyL3NoYXJlL2RvYy9mb250Y29uZmlnL7sgZW4gIgojfiAic3Ugc2lzdGVtYSBEZWJpYW4uIgoKI34gbXNnaWQgIkVuYWJsZSB0aGUgZnJlZXR5cGUgYXV0b2hpbnRlciBtb2R1bGU/IgojfiBtc2dzdHIgIr9BY3RpdmFyIGVsIG3zZHVsbyCrZnJlZXR5cGUgYXV0b2hpbnRlcrs/IgoKI34gbXNnaWQgIiIKI34gIkRlcGVuZGluZyBvbiB5b3VyIGRpc3BsYXkgYW5kIG9uIHdoaWNoIGZvbnRzIHlvdSB1c2UsIHRoZXkgY2FuIGxvb2sgIgojfiAiYmV0dGVyIG9yIHdvcnNlIHdoZW4gdXNpbmcgdGhlIGF1dG9oaW50ZXIgbW9kdWxlLiBFbmFibGUgaXQgaWYgeW91IGhhcHBlbiAiCiN+ICJ0byBwcmVmZXIgdGhlIGxvb2sgaXQgZ2l2ZXMgdG8geW91ciBmb250cy4iCiN+IG1zZ3N0ciAiIgojfiAiRGVwZW5kaWVuZG8gZGUgc3UgbW9uaXRvciB5IGRlbCB0aXBvIGRlIGxldHJhIHF1ZSB1dGlsaWNlLCBwb2Ry4SAiCiN+ICJ2aXN1YWxpemFybGEgbWVqb3IgbyBwZW9yIGN1YW5kbyB1c2UgZWwgbfNkdWxvIKthdXRvaGludGVyuy4gQWN07XZlbG8gc2kgIgojfiAicHJlZmllcmUgZWwgYXNwZWN0byBxdWUgbGUgZGEgYSBzdXMgdGlwb3MgZGUgbGV0cmEuIgo=