[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control\n#\n# Pods/\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n\n# Swift Package Manager\n.build/\n.DS_Store"
  },
  {
    "path": ".swift-version",
    "content": "3.0.1\n"
  },
  {
    "path": ".travis.yml",
    "content": "# Also works for Swift\nlanguage: objective-c\n\n# Xcode version\nosx_image: xcode14.2\n\n# Specify the opening file for the project\nxcode_workspace: TouchDraw.xcworkspace\n\n# Specify the main build\nxcode_scheme: TouchDraw\n\n# Specify the last iOS sdk\nxcode_sdk: iphonesimulator\n\ninstall:\n  - ./install_swiftlint.sh\n\nscript:\n  - swiftlint\n  - set -o pipefail && xcodebuild -workspace $TRAVIS_XCODE_WORKSPACE -scheme $TRAVIS_XCODE_SCHEME -sdk $TRAVIS_XCODE_SDK -destination 'OS=16.2,name=iPhone 14' build test | xcpretty\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# 2.2.0\n\n- Update for Xcode 15 (thanks to @ricsantos!)\n- Fix assertion due to zero size (thanks to @ricsantos!)\n- Fix [CI](https://app.travis-ci.com/github/dehli/TouchDraw)\n\n# 2.1.3\n\n- Update Package.swift\n- Make TouchDrawView inherit from UIView\n\n# 2.1.2\n\n- Fixed drawing issue where `touchDrawView` and `imageView` bounds\n  didn't line up (thanks to @mkoorn!)\n- Change base class to `UIImageView`\n\n# 2.1.1\n\n- Upgrades project to Swift 4 (thanks to @codyaweber!)\n\n# 2.1.0\n\n- Cleaned up a lot of the library's logic\n- Added eraser functionality (`touchDrawView.setColor(nil)`)\n- Significant performance improvements!\n\n# 2.0.0\n\n- Upgraded project to Swift 3.0.1 (thanks to @sirnacnud!)\n- Set correct content scale on image contexts (also thanks to @sirnacnud!)\n- Added some comments\n\n# 1.3.1\n\n- Refactored project into 3 separate files (for each class)\n- Fixed `exportStack` so it follows `NSCoding`\n- Added deployment target `8.0`\n\n# 1.3.0\n\n- Added the ability to import and export the stack.\n- Made the protocol methods optional.\n- Made the code more Swifty.\n\n# 1.2.4\n\n- Added a few more tests\n- Updated `README.md`\n\n# 1.2.3\n\n- Added a handful of tests\n- Updated `README.md`\n\n# 1.2.2\n\n- Switched project settings to recommended settings\n- Added documentation\n\n# 1.2.1\n\n- Fixed a bug where pressing clear wouldn't trigger `redoDisabled()`\n- Updated deprecated code\n- Added documentation\n\n# 1.2.0\n\n- Fixed `redo()` and `undo()` so they work with various brush sizes and colors\n- Implemented `clearEnabled()` to the protocol\n- Implemented `clearDisabled()` to the protocol\n- Fixed a bug where `TouchDrawView` only worked when it took up the entire `ViewController`'s screen\n\n# 1.1.0\n\n- Implemented `undo()` (using last selected brush settings)\n- Implemented `redo()` (using last selected brush settings)\n- Implemented `redoEnabled()` and `redoDisabled()` protocol methods\n- Implemented `undoEnabled()` and `undoDisabled()` protocol methods\n\n# 1.0.0\n\n- Initial release\n- Implemented `TouchDrawView` which is a subclass of `UIView` that you can draw on\n- Implemented `clear()`\n- Implemented `exportDrawing()`\n- Implemented `setColor(color: UIColor)`\n- Implemented `setWidth(width: CGFloat)`\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\nadvances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at touchdraw@dehli.io. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to TouchDraw\n\nFirst off, thank you for wanting to contribute! You rock!\n\nWhen contributing to this repository, please first discuss the change\nyou wish to make via issue before making a change.\n\nPlease note we have a [Code of Conduct](/CODE_OF_CONDUCT.md), please follow it in all your interactions with the project.\n\n## Example Contributions\n\n1. Report a bug by opening an issue.\n2. Request a feature by opening an issue.\n3. Discuss a feature you want to implement by opening an issue.\n4. Implement a feature, by submitting a pull request.\n5. Ask a question, by submitting an issue.\n\n## Pull Request Process\n\n1. Update `README.md` with the changes you made.\n2. Add a `master` release to the top of `CHANGELOG.md`\n   if it doesn't exist.\n3. Update `CHANGELOG.md` with the changes you made\n   under the `master` release (feel free to tag yourself!)\n4. Make sure your public functions and variables  are documented.\n"
  },
  {
    "path": "Demo/Podfile",
    "content": "use_frameworks!\n\ntarget \"TouchDrawDemo\" do\n    pod 'TouchDraw', path: '../'\n    platform :ios, '8.1'\nend\n"
  },
  {
    "path": "Demo/Pods/Local Podspecs/TouchDraw.podspec.json",
    "content": "{\n  \"name\": \"TouchDraw\",\n  \"version\": \"2.2.0\",\n  \"summary\": \"TouchDraw is a UIView you can draw on.\",\n  \"description\": \"TouchDraw is a subclass of UIView that allows you to draw using touch. It exposes the following functions:\\n- `exportDrawing() -> UIImage`\\n- `clearDrawing()`\\n- `undo()`\\n- `redo()`\\n- `setColor(color: UIColor?)`\\n- `setWidth(width: CGFloat)`\\n- `importStack(stack: [Stroke])`\\n- `exportStack() -> [Stroke]`\",\n  \"homepage\": \"https://github.com/dehli/TouchDraw\",\n  \"license\": {\n    \"type\": \"MIT\",\n    \"file\": \"LICENSE\"\n  },\n  \"authors\": {\n    \"Christian Paul Dehli\": \"dehli@gatech.edu\"\n  },\n  \"social_media_url\": \"http://twitter.com/cpdehli\",\n  \"platforms\": {\n    \"ios\": \"12.0\"\n  },\n  \"source\": {\n    \"git\": \"https://github.com/dehli/TouchDraw.git\",\n    \"tag\": \"2.2.0\"\n  },\n  \"source_files\": \"Sources/**/*.{swift}\"\n}\n"
  },
  {
    "path": "Demo/Pods/Pods.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t0B7FB5AEF4AFE5656F49FC413EF85A68 /* TouchDraw-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5444EA758DA8277797948CF46A4BD61D /* TouchDraw-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t211BC6B5249B4019D4E96B2DC1C033B1 /* Pods-TouchDrawDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A3948C35DF87486E5418BBAF280C0B9 /* Pods-TouchDrawDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t230738C53AF1FD048536B89BC2F237E0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };\n\t\t305A60A5D22337086B06415810425658 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };\n\t\t8AACAB505466AEEBB659723597BC0010 /* TouchDraw-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 535B4437B92483FE0DEFB49F0233CAA2 /* TouchDraw-dummy.m */; };\n\t\t901A90B21627B4D541D9D2E3E097620C /* Stroke.swift in Sources */ = {isa = PBXBuildFile; fileRef = E89A502373D3E56EA893765C0E295F34 /* Stroke.swift */; };\n\t\t9265DE468D201652203B28B34C88A41A /* TouchDrawView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C58B4D42B366C162788F3E351D5FFC9 /* TouchDrawView.swift */; };\n\t\tA563B92956DA6B1FA7658D6CDB436D05 /* StrokeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292F083F3164B387807405A151E5087A /* StrokeSettings.swift */; };\n\t\tC6C09CF502546B170BC035E6949EED3E /* Pods-TouchDrawDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F306792AB76CFE9BD510C21C21DDA11 /* Pods-TouchDrawDemo-dummy.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t8E35F417A86D02995FEDB2F4D222642B /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 4078B568085D268C4E7C16909219F06F;\n\t\t\tremoteInfo = TouchDraw;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t161082C63FE27DE5BDBF540696422C47 /* TouchDraw.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = TouchDraw.modulemap; sourceTree = \"<group>\"; };\n\t\t17EFE0D395529165BA88E757E8C6E423 /* Pods-TouchDrawDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = \"Pods-TouchDrawDemo-acknowledgements.plist\"; sourceTree = \"<group>\"; };\n\t\t252BDC1E3A1D8CE686615CAF040C40C2 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = \"<group>\"; };\n\t\t292F083F3164B387807405A151E5087A /* StrokeSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StrokeSettings.swift; path = Sources/StrokeSettings.swift; sourceTree = \"<group>\"; };\n\t\t4B47A45C432BE77F7E85543804AAB36F /* Pods-TouchDrawDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = \"Pods-TouchDrawDemo-acknowledgements.markdown\"; sourceTree = \"<group>\"; };\n\t\t4C79E5A67192ACCB8A58F6FEC33A66B0 /* Pods-TouchDrawDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = \"Pods-TouchDrawDemo-frameworks.sh\"; sourceTree = \"<group>\"; };\n\t\t4D21F92790C27EBBAC4B52FD72B2DE46 /* Pods-TouchDrawDemo-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = \"Pods-TouchDrawDemo-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t535B4437B92483FE0DEFB49F0233CAA2 /* TouchDraw-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"TouchDraw-dummy.m\"; sourceTree = \"<group>\"; };\n\t\t5444EA758DA8277797948CF46A4BD61D /* TouchDraw-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"TouchDraw-umbrella.h\"; sourceTree = \"<group>\"; };\n\t\t5BE9E964E64F49A3514053001C6A7D9B /* Pods-TouchDrawDemo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = \"Pods-TouchDrawDemo.modulemap\"; sourceTree = \"<group>\"; };\n\t\t6A3948C35DF87486E5418BBAF280C0B9 /* Pods-TouchDrawDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"Pods-TouchDrawDemo-umbrella.h\"; sourceTree = \"<group>\"; };\n\t\t6C58B4D42B366C162788F3E351D5FFC9 /* TouchDrawView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TouchDrawView.swift; path = Sources/TouchDrawView.swift; sourceTree = \"<group>\"; };\n\t\t71BB46656F90C919FB96A3D59DF9B448 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = \"<group>\"; };\n\t\t71C93A90E631872513BD16F6A5CBB773 /* TouchDraw.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TouchDraw.debug.xcconfig; sourceTree = \"<group>\"; };\n\t\t73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };\n\t\t8F306792AB76CFE9BD510C21C21DDA11 /* Pods-TouchDrawDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"Pods-TouchDrawDemo-dummy.m\"; sourceTree = \"<group>\"; };\n\t\t9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };\n\t\t9DF14A2248C17B3DE202FAACF1A74E0F /* Pods-TouchDrawDemo */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = \"Pods-TouchDrawDemo\"; path = Pods_TouchDrawDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tAB4305B9D381159CE22D0332EF5F3E94 /* TouchDraw-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"TouchDraw-prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tB25A89A67988EC6476500922FAA6DBB1 /* TouchDraw.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = TouchDraw.podspec; sourceTree = \"<group>\"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };\n\t\tB99C1463AE131BB2E21DC0A3289E396C /* TouchDraw.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TouchDraw.release.xcconfig; sourceTree = \"<group>\"; };\n\t\tC12551E4E94CE844862E86A3A662F241 /* Pods-TouchDrawDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = \"Pods-TouchDrawDemo.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tD0496BAB559274643EE7EE1E2E099158 /* Pods-TouchDrawDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = \"Pods-TouchDrawDemo.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tD5A344F9F2434E66FB5F1D5A3846DB8D /* TouchDraw */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = TouchDraw; path = TouchDraw.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tE89A502373D3E56EA893765C0E295F34 /* Stroke.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stroke.swift; path = Sources/Stroke.swift; sourceTree = \"<group>\"; };\n\t\tF83D3ADF240DC34AEA8AAC618DF185D2 /* TouchDraw-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = \"TouchDraw-Info.plist\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t32782AA11DFFDB9B9E789BAB5CFA401F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t305A60A5D22337086B06415810425658 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC001423B88228A2DADC9DEEB52DA98F9 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t230738C53AF1FD048536B89BC2F237E0 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t03C6AAD9D1FB7A7931B4004660D51EAA /* TouchDraw */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tE89A502373D3E56EA893765C0E295F34 /* Stroke.swift */,\n\t\t\t\t292F083F3164B387807405A151E5087A /* StrokeSettings.swift */,\n\t\t\t\t6C58B4D42B366C162788F3E351D5FFC9 /* TouchDrawView.swift */,\n\t\t\t\t07ADAD9DCDD5FC17491CE21F994D6C5D /* Pod */,\n\t\t\t\t94007F4A847109372D820901155BDADE /* Support Files */,\n\t\t\t);\n\t\t\tname = TouchDraw;\n\t\t\tpath = ../..;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0754750D27FCB4E9AD45783F7F7ED513 /* Pods-TouchDrawDemo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t5BE9E964E64F49A3514053001C6A7D9B /* Pods-TouchDrawDemo.modulemap */,\n\t\t\t\t4B47A45C432BE77F7E85543804AAB36F /* Pods-TouchDrawDemo-acknowledgements.markdown */,\n\t\t\t\t17EFE0D395529165BA88E757E8C6E423 /* Pods-TouchDrawDemo-acknowledgements.plist */,\n\t\t\t\t8F306792AB76CFE9BD510C21C21DDA11 /* Pods-TouchDrawDemo-dummy.m */,\n\t\t\t\t4C79E5A67192ACCB8A58F6FEC33A66B0 /* Pods-TouchDrawDemo-frameworks.sh */,\n\t\t\t\t4D21F92790C27EBBAC4B52FD72B2DE46 /* Pods-TouchDrawDemo-Info.plist */,\n\t\t\t\t6A3948C35DF87486E5418BBAF280C0B9 /* Pods-TouchDrawDemo-umbrella.h */,\n\t\t\t\tC12551E4E94CE844862E86A3A662F241 /* Pods-TouchDrawDemo.debug.xcconfig */,\n\t\t\t\tD0496BAB559274643EE7EE1E2E099158 /* Pods-TouchDrawDemo.release.xcconfig */,\n\t\t\t);\n\t\t\tname = \"Pods-TouchDrawDemo\";\n\t\t\tpath = \"Target Support Files/Pods-TouchDrawDemo\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t07ADAD9DCDD5FC17491CE21F994D6C5D /* Pod */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t71BB46656F90C919FB96A3D59DF9B448 /* LICENSE */,\n\t\t\t\t252BDC1E3A1D8CE686615CAF040C40C2 /* README.md */,\n\t\t\t\tB25A89A67988EC6476500922FAA6DBB1 /* TouchDraw.podspec */,\n\t\t\t);\n\t\t\tname = Pod;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3077EFCD38303A48958BA55B2CD44E5C /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9DF14A2248C17B3DE202FAACF1A74E0F /* Pods-TouchDrawDemo */,\n\t\t\t\tD5A344F9F2434E66FB5F1D5A3846DB8D /* TouchDraw */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t578452D2E740E91742655AC8F1636D1F /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */,\n\t\t\t);\n\t\t\tname = iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t94007F4A847109372D820901155BDADE /* Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t161082C63FE27DE5BDBF540696422C47 /* TouchDraw.modulemap */,\n\t\t\t\t535B4437B92483FE0DEFB49F0233CAA2 /* TouchDraw-dummy.m */,\n\t\t\t\tF83D3ADF240DC34AEA8AAC618DF185D2 /* TouchDraw-Info.plist */,\n\t\t\t\tAB4305B9D381159CE22D0332EF5F3E94 /* TouchDraw-prefix.pch */,\n\t\t\t\t5444EA758DA8277797948CF46A4BD61D /* TouchDraw-umbrella.h */,\n\t\t\t\t71C93A90E631872513BD16F6A5CBB773 /* TouchDraw.debug.xcconfig */,\n\t\t\t\tB99C1463AE131BB2E21DC0A3289E396C /* TouchDraw.release.xcconfig */,\n\t\t\t);\n\t\t\tname = \"Support Files\";\n\t\t\tpath = \"Demo/Pods/Target Support Files/TouchDraw\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t965DDADE1A5FCA7F4F91F39C75A16D20 /* Development Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t03C6AAD9D1FB7A7931B4004660D51EAA /* TouchDraw */,\n\t\t\t);\n\t\t\tname = \"Development Pods\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tCF1408CF629C7361332E53B88F7BD30C = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,\n\t\t\t\t965DDADE1A5FCA7F4F91F39C75A16D20 /* Development Pods */,\n\t\t\t\tD210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,\n\t\t\t\t3077EFCD38303A48958BA55B2CD44E5C /* Products */,\n\t\t\t\tE1D450F7B48CE34D607114A7299BD9A6 /* Targets Support Files */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t578452D2E740E91742655AC8F1636D1F /* iOS */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE1D450F7B48CE34D607114A7299BD9A6 /* Targets Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0754750D27FCB4E9AD45783F7F7ED513 /* Pods-TouchDrawDemo */,\n\t\t\t);\n\t\t\tname = \"Targets Support Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t89813EFE68021BE7D0CD023843A6C1A5 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t211BC6B5249B4019D4E96B2DC1C033B1 /* Pods-TouchDrawDemo-umbrella.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tFC3F0EA066AC99758052AF1B2DCC65F4 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0B7FB5AEF4AFE5656F49FC413EF85A68 /* TouchDraw-umbrella.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t4078B568085D268C4E7C16909219F06F /* TouchDraw */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 4EBB3B7E7AA48F79976D8FDD4DC27228 /* Build configuration list for PBXNativeTarget \"TouchDraw\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tFC3F0EA066AC99758052AF1B2DCC65F4 /* Headers */,\n\t\t\t\tB6E795E9C40AF26135EEE154F89DCEB9 /* Sources */,\n\t\t\t\tC001423B88228A2DADC9DEEB52DA98F9 /* Frameworks */,\n\t\t\t\tFA8C4BC0E1F7AAE8E9B334B62A71B051 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = TouchDraw;\n\t\t\tproductName = TouchDraw;\n\t\t\tproductReference = D5A344F9F2434E66FB5F1D5A3846DB8D /* TouchDraw */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t7A871CE577368070176CD9511C551648 /* Pods-TouchDrawDemo */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3728BAD3BB84AAE1B5FEBDA7FF2D2B09 /* Build configuration list for PBXNativeTarget \"Pods-TouchDrawDemo\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t89813EFE68021BE7D0CD023843A6C1A5 /* Headers */,\n\t\t\t\t8B2227A61DCCD495A8555782349AF713 /* Sources */,\n\t\t\t\t32782AA11DFFDB9B9E789BAB5CFA401F /* Frameworks */,\n\t\t\t\t48D3178E20C35F2FDDB895826A9E0517 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tD3B35B855917C6BBB1199C778A8CE4BC /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Pods-TouchDrawDemo\";\n\t\t\tproductName = Pods_TouchDrawDemo;\n\t\t\tproductReference = 9DF14A2248C17B3DE202FAACF1A74E0F /* Pods-TouchDrawDemo */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tBFDFE7DC352907FC980B868725387E98 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 1300;\n\t\t\t\tLastUpgradeCheck = 1300;\n\t\t\t};\n\t\t\tbuildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject \"Pods\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tBase,\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = CF1408CF629C7361332E53B88F7BD30C;\n\t\t\tproductRefGroup = 3077EFCD38303A48958BA55B2CD44E5C /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t7A871CE577368070176CD9511C551648 /* Pods-TouchDrawDemo */,\n\t\t\t\t4078B568085D268C4E7C16909219F06F /* TouchDraw */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t48D3178E20C35F2FDDB895826A9E0517 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tFA8C4BC0E1F7AAE8E9B334B62A71B051 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t8B2227A61DCCD495A8555782349AF713 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC6C09CF502546B170BC035E6949EED3E /* Pods-TouchDrawDemo-dummy.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tB6E795E9C40AF26135EEE154F89DCEB9 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t901A90B21627B4D541D9D2E3E097620C /* Stroke.swift in Sources */,\n\t\t\t\tA563B92956DA6B1FA7658D6CDB436D05 /* StrokeSettings.swift in Sources */,\n\t\t\t\t8AACAB505466AEEBB659723597BC0010 /* TouchDraw-dummy.m in Sources */,\n\t\t\t\t9265DE468D201652203B28B34C88A41A /* TouchDrawView.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tD3B35B855917C6BBB1199C778A8CE4BC /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = TouchDraw;\n\t\t\ttarget = 4078B568085D268C4E7C16909219F06F /* TouchDraw */;\n\t\t\ttargetProxy = 8E35F417A86D02995FEDB2F4D222642B /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t68503FC2431E8A37AE0FB79845599370 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = D0496BAB559274643EE7EE1E2E099158 /* Pods-TouchDrawDemo.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.1;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMACH_O_TYPE = staticlib;\n\t\t\t\tMODULEMAP_FILE = \"Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.modulemap\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPODS_ROOT = \"$(SRCROOT)\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t6E2567B4BB8D2927ED8D381CC59A6391 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = C12551E4E94CE844862E86A3A662F241 /* Pods-TouchDrawDemo.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.1;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMACH_O_TYPE = staticlib;\n\t\t\t\tMODULEMAP_FILE = \"Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.modulemap\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPODS_ROOT = \"$(SRCROOT)\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t6F8841CFBC22A1D21664A78055B72922 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 71C93A90E631872513BD16F6A5CBB773 /* TouchDraw.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = NO;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/TouchDraw/TouchDraw-prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"Target Support Files/TouchDraw/TouchDraw-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMODULEMAP_FILE = \"Target Support Files/TouchDraw/TouchDraw.modulemap\";\n\t\t\t\tPRODUCT_MODULE_NAME = TouchDraw;\n\t\t\t\tPRODUCT_NAME = TouchDraw;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t8F43E8ACC75C6601D5016EC4DBD476D1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"POD_CONFIGURATION_DEBUG=1\",\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.1;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSTRIP_INSTALLED_PRODUCT = NO;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tSYMROOT = \"${SRCROOT}/../build\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t96FC937F9C05C7467D7014D952B370B2 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = B99C1463AE131BB2E21DC0A3289E396C /* TouchDraw.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = NO;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/TouchDraw/TouchDraw-prefix.pch\";\n\t\t\t\tINFOPLIST_FILE = \"Target Support Files/TouchDraw/TouchDraw-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMODULEMAP_FILE = \"Target Support Files/TouchDraw/TouchDraw.modulemap\";\n\t\t\t\tPRODUCT_MODULE_NAME = TouchDraw;\n\t\t\t\tPRODUCT_NAME = TouchDraw;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t975D96EA061DE0BC33417E43C6BC053C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"POD_CONFIGURATION_RELEASE=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.1;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSTRIP_INSTALLED_PRODUCT = NO;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tSYMROOT = \"${SRCROOT}/../build\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3728BAD3BB84AAE1B5FEBDA7FF2D2B09 /* Build configuration list for PBXNativeTarget \"Pods-TouchDrawDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t6E2567B4BB8D2927ED8D381CC59A6391 /* Debug */,\n\t\t\t\t68503FC2431E8A37AE0FB79845599370 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject \"Pods\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t8F43E8ACC75C6601D5016EC4DBD476D1 /* Debug */,\n\t\t\t\t975D96EA061DE0BC33417E43C6BC053C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t4EBB3B7E7AA48F79976D8FDD4DC27228 /* Build configuration list for PBXNativeTarget \"TouchDraw\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t6F8841CFBC22A1D21664A78055B72922 /* Debug */,\n\t\t\t\t96FC937F9C05C7467D7014D952B370B2 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;\n}\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleDevelopmentRegion</key>\n  <string>en</string>\n  <key>CFBundleExecutable</key>\n  <string>${EXECUTABLE_NAME}</string>\n  <key>CFBundleIdentifier</key>\n  <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>\n  <key>CFBundleInfoDictionaryVersion</key>\n  <string>6.0</string>\n  <key>CFBundleName</key>\n  <string>${PRODUCT_NAME}</string>\n  <key>CFBundlePackageType</key>\n  <string>FMWK</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0.0</string>\n  <key>CFBundleSignature</key>\n  <string>????</string>\n  <key>CFBundleVersion</key>\n  <string>${CURRENT_PROJECT_VERSION}</string>\n  <key>NSPrincipalClass</key>\n  <string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-acknowledgements.markdown",
    "content": "# Acknowledgements\nThis application makes use of the following third party libraries:\n\n## TouchDraw\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Christian Paul Dehli\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nGenerated by CocoaPods - https://cocoapods.org\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-acknowledgements.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreferenceSpecifiers</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>This application makes use of the following third party libraries:</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>Acknowledgements</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>The MIT License (MIT)\n\nCopyright (c) 2015 Christian Paul Dehli\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n</string>\n\t\t\t<key>License</key>\n\t\t\t<string>MIT</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>TouchDraw</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>Generated by CocoaPods - https://cocoapods.org</string>\n\t\t\t<key>Title</key>\n\t\t\t<string></string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t</array>\n\t<key>StringsTable</key>\n\t<string>Acknowledgements</string>\n\t<key>Title</key>\n\t<string>Acknowledgements</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_TouchDrawDemo : NSObject\n@end\n@implementation PodsDummy_Pods_TouchDrawDemo\n@end\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-frameworks.sh",
    "content": "#!/bin/sh\nset -e\nset -u\nset -o pipefail\n\nfunction on_error {\n  echo \"$(realpath -mq \"${0}\"):$1: error: Unexpected failure\"\n}\ntrap 'on_error $LINENO' ERR\n\nif [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then\n  # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy\n  # frameworks to, so exit 0 (signalling the script phase was successful).\n  exit 0\nfi\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\nCOCOAPODS_PARALLEL_CODE_SIGN=\"${COCOAPODS_PARALLEL_CODE_SIGN:-false}\"\nSWIFT_STDLIB_PATH=\"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"\nBCSYMBOLMAP_DIR=\"BCSymbolMaps\"\n\n\n# This protects against multiple targets copying the same framework dependency at the same time. The solution\n# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html\nRSYNC_PROTECT_TMP_FILES=(--filter \"P .*.??????\")\n\n# Copies and strips a vendored framework\ninstall_framework()\n{\n  if [ -r \"${BUILT_PRODUCTS_DIR}/$1\" ]; then\n    local source=\"${BUILT_PRODUCTS_DIR}/$1\"\n  elif [ -r \"${BUILT_PRODUCTS_DIR}/$(basename \"$1\")\" ]; then\n    local source=\"${BUILT_PRODUCTS_DIR}/$(basename \"$1\")\"\n  elif [ -r \"$1\" ]; then\n    local source=\"$1\"\n  fi\n\n  local destination=\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\n  if [ -L \"${source}\" ]; then\n    echo \"Symlinked...\"\n    source=\"$(readlink -f \"${source}\")\"\n  fi\n\n  if [ -d \"${source}/${BCSYMBOLMAP_DIR}\" ]; then\n    # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied\n    find \"${source}/${BCSYMBOLMAP_DIR}\" -name \"*.bcsymbolmap\"|while read f; do\n      echo \"Installing $f\"\n      install_bcsymbolmap \"$f\" \"$destination\"\n      rm \"$f\"\n    done\n    rmdir \"${source}/${BCSYMBOLMAP_DIR}\"\n  fi\n\n  # Use filter instead of exclude so missing patterns don't throw errors.\n  echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --links --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${source}\\\" \\\"${destination}\\\"\"\n  rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"\n\n  local basename\n  basename=\"$(basename -s .framework \"$1\")\"\n  binary=\"${destination}/${basename}.framework/${basename}\"\n\n  if ! [ -r \"$binary\" ]; then\n    binary=\"${destination}/${basename}\"\n  elif [ -L \"${binary}\" ]; then\n    echo \"Destination binary is symlinked...\"\n    dirname=\"$(dirname \"${binary}\")\"\n    binary=\"${dirname}/$(readlink \"${binary}\")\"\n  fi\n\n  # Strip invalid architectures so \"fat\" simulator / device frameworks work on device\n  if [[ \"$(file \"$binary\")\" == *\"dynamically linked shared library\"* ]]; then\n    strip_invalid_archs \"$binary\"\n  fi\n\n  # Resign the code if required by the build settings to avoid unstable apps\n  code_sign_if_enabled \"${destination}/$(basename \"$1\")\"\n\n  # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.\n  if [ \"${XCODE_VERSION_MAJOR}\" -lt 7 ]; then\n    local swift_runtime_libs\n    swift_runtime_libs=$(xcrun otool -LX \"$binary\" | grep --color=never @rpath/libswift | sed -E s/@rpath\\\\/\\(.+dylib\\).*/\\\\1/g | uniq -u)\n    for lib in $swift_runtime_libs; do\n      echo \"rsync -auv \\\"${SWIFT_STDLIB_PATH}/${lib}\\\" \\\"${destination}\\\"\"\n      rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"\n      code_sign_if_enabled \"${destination}/${lib}\"\n    done\n  fi\n}\n# Copies and strips a vendored dSYM\ninstall_dsym() {\n  local source=\"$1\"\n  warn_missing_arch=${2:-true}\n  if [ -r \"$source\" ]; then\n    # Copy the dSYM into the targets temp dir.\n    echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${source}\\\" \\\"${DERIVED_FILES_DIR}\\\"\"\n    rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"\n\n    local basename\n    basename=\"$(basename -s .dSYM \"$source\")\"\n    binary_name=\"$(ls \"$source/Contents/Resources/DWARF\")\"\n    binary=\"${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}\"\n\n    # Strip invalid architectures from the dSYM.\n    if [[ \"$(file \"$binary\")\" == *\"Mach-O \"*\"dSYM companion\"* ]]; then\n      strip_invalid_archs \"$binary\" \"$warn_missing_arch\"\n    fi\n    if [[ $STRIP_BINARY_RETVAL == 0 ]]; then\n      # Move the stripped file into its final destination.\n      echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --links --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\\\" \\\"${DWARF_DSYM_FOLDER_PATH}\\\"\"\n      rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"\n    else\n      # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.\n      mkdir -p \"${DWARF_DSYM_FOLDER_PATH}\"\n      touch \"${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM\"\n    fi\n  fi\n}\n\n# Used as a return value for each invocation of `strip_invalid_archs` function.\nSTRIP_BINARY_RETVAL=0\n\n# Strip invalid architectures\nstrip_invalid_archs() {\n  binary=\"$1\"\n  warn_missing_arch=${2:-true}\n  # Get architectures for current target binary\n  binary_archs=\"$(lipo -info \"$binary\" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)\"\n  # Intersect them with the architectures we are building for\n  intersected_archs=\"$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\\n' | sort | uniq -d)\"\n  # If there are no archs supported by this binary then warn the user\n  if [[ -z \"$intersected_archs\" ]]; then\n    if [[ \"$warn_missing_arch\" == \"true\" ]]; then\n      echo \"warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS).\"\n    fi\n    STRIP_BINARY_RETVAL=1\n    return\n  fi\n  stripped=\"\"\n  for arch in $binary_archs; do\n    if ! [[ \"${ARCHS}\" == *\"$arch\"* ]]; then\n      # Strip non-valid architectures in-place\n      lipo -remove \"$arch\" -output \"$binary\" \"$binary\"\n      stripped=\"$stripped $arch\"\n    fi\n  done\n  if [[ \"$stripped\" ]]; then\n    echo \"Stripped $binary of architectures:$stripped\"\n  fi\n  STRIP_BINARY_RETVAL=0\n}\n\n# Copies the bcsymbolmap files of a vendored framework\ninstall_bcsymbolmap() {\n    local bcsymbolmap_path=\"$1\"\n    local destination=\"${BUILT_PRODUCTS_DIR}\"\n    echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${bcsymbolmap_path}\" \"${destination}\"\"\n    rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${bcsymbolmap_path}\" \"${destination}\"\n}\n\n# Signs a framework with the provided identity\ncode_sign_if_enabled() {\n  if [ -n \"${EXPANDED_CODE_SIGN_IDENTITY:-}\" -a \"${CODE_SIGNING_REQUIRED:-}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n    # Use the current code_sign_identity\n    echo \"Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}\"\n    local code_sign_cmd=\"/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'\"\n\n    if [ \"${COCOAPODS_PARALLEL_CODE_SIGN}\" == \"true\" ]; then\n      code_sign_cmd=\"$code_sign_cmd &\"\n    fi\n    echo \"$code_sign_cmd\"\n    eval \"$code_sign_cmd\"\n  fi\n}\n\nif [[ \"$CONFIGURATION\" == \"Debug\" ]]; then\n  install_framework \"${BUILT_PRODUCTS_DIR}/TouchDraw/TouchDraw.framework\"\nfi\nif [[ \"$CONFIGURATION\" == \"Release\" ]]; then\n  install_framework \"${BUILT_PRODUCTS_DIR}/TouchDraw/TouchDraw.framework\"\nfi\nif [ \"${COCOAPODS_PARALLEL_CODE_SIGN}\" == \"true\" ]; then\n  wait\nfi\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-resources.sh",
    "content": "#!/bin/sh\nset -e\nset -u\nset -o pipefail\n\nif [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then\n    # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy\n    # resources to, so exit 0 (signalling the script phase was successful).\n    exit 0\nfi\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt\n> \"$RESOURCES_TO_COPY\"\n\nXCASSET_FILES=()\n\n# This protects against multiple targets copying the same framework dependency at the same time. The solution\n# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html\nRSYNC_PROTECT_TMP_FILES=(--filter \"P .*.??????\")\n\ncase \"${TARGETED_DEVICE_FAMILY:-}\" in\n  1,2)\n    TARGET_DEVICE_ARGS=\"--target-device ipad --target-device iphone\"\n    ;;\n  1)\n    TARGET_DEVICE_ARGS=\"--target-device iphone\"\n    ;;\n  2)\n    TARGET_DEVICE_ARGS=\"--target-device ipad\"\n    ;;\n  3)\n    TARGET_DEVICE_ARGS=\"--target-device tv\"\n    ;;\n  4)\n    TARGET_DEVICE_ARGS=\"--target-device watch\"\n    ;;\n  *)\n    TARGET_DEVICE_ARGS=\"--target-device mac\"\n    ;;\nesac\n\ninstall_resource()\n{\n  if [[ \"$1\" = /* ]] ; then\n    RESOURCE_PATH=\"$1\"\n  else\n    RESOURCE_PATH=\"${PODS_ROOT}/$1\"\n  fi\n  if [[ ! -e \"$RESOURCE_PATH\" ]] ; then\n    cat << EOM\nerror: Resource \"$RESOURCE_PATH\" not found. Run 'pod install' to update the copy resources script.\nEOM\n    exit 1\n  fi\n  case $RESOURCE_PATH in\n    *.storyboard)\n      echo \"ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}\" || true\n      ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .storyboard`.storyboardc\" \"$RESOURCE_PATH\" --sdk \"${SDKROOT}\" ${TARGET_DEVICE_ARGS}\n      ;;\n    *.xib)\n      echo \"ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}\" || true\n      ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .xib`.nib\" \"$RESOURCE_PATH\" --sdk \"${SDKROOT}\" ${TARGET_DEVICE_ARGS}\n      ;;\n    *.framework)\n      echo \"mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\" || true\n      mkdir -p \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n      echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\" || true\n      rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n      ;;\n    *.xcdatamodel)\n      echo \"xcrun momc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\"`.mom\\\"\" || true\n      xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodel`.mom\"\n      ;;\n    *.xcdatamodeld)\n      echo \"xcrun momc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodeld`.momd\\\"\" || true\n      xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodeld`.momd\"\n      ;;\n    *.xcmappingmodel)\n      echo \"xcrun mapc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcmappingmodel`.cdm\\\"\" || true\n      xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcmappingmodel`.cdm\"\n      ;;\n    *.xcassets)\n      ABSOLUTE_XCASSET_FILE=\"$RESOURCE_PATH\"\n      XCASSET_FILES+=(\"$ABSOLUTE_XCASSET_FILE\")\n      ;;\n    *)\n      echo \"$RESOURCE_PATH\" || true\n      echo \"$RESOURCE_PATH\" >> \"$RESOURCES_TO_COPY\"\n      ;;\n  esac\n}\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nrsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nif [[ \"${ACTION}\" == \"install\" ]] && [[ \"${SKIP_INSTALL}\" == \"NO\" ]]; then\n  mkdir -p \"${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n  rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nfi\nrm -f \"$RESOURCES_TO_COPY\"\n\nif [[ -n \"${WRAPPER_EXTENSION}\" ]] && [ \"`xcrun --find actool`\" ] && [ -n \"${XCASSET_FILES:-}\" ]\nthen\n  # Find all other xcassets (this unfortunately includes those of path pods and other targets).\n  OTHER_XCASSETS=$(find \"$PWD\" -iname \"*.xcassets\" -type d)\n  while read line; do\n    if [[ $line != \"${PODS_ROOT}*\" ]]; then\n      XCASSET_FILES+=(\"$line\")\n    fi\n  done <<<\"$OTHER_XCASSETS\"\n\n  if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then\n    printf \"%s\\0\" \"${XCASSET_FILES[@]}\" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform \"${PLATFORM_NAME}\" --minimum-deployment-target \"${!DEPLOYMENT_TARGET_SETTING_NAME}\" ${TARGET_DEVICE_ARGS} --compress-pngs --compile \"${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n  else\n    printf \"%s\\0\" \"${XCASSET_FILES[@]}\" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform \"${PLATFORM_NAME}\" --minimum-deployment-target \"${!DEPLOYMENT_TARGET_SETTING_NAME}\" ${TARGET_DEVICE_ARGS} --compress-pngs --compile \"${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\" --app-icon \"${ASSETCATALOG_COMPILER_APPICON_NAME}\" --output-partial-info-plist \"${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist\"\n  fi\nfi\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-umbrella.h",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n\nFOUNDATION_EXPORT double Pods_TouchDrawDemoVersionNumber;\nFOUNDATION_EXPORT const unsigned char Pods_TouchDrawDemoVersionString[];\n\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.debug.xcconfig",
    "content": "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES\nCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO\nFRAMEWORK_SEARCH_PATHS = $(inherited) \"${PODS_CONFIGURATION_BUILD_DIR}/TouchDraw\"\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_CONFIGURATION_BUILD_DIR}/TouchDraw/TouchDraw.framework/Headers\"\nLD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'\nLIBRARY_SEARCH_PATHS = $(inherited) \"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\" /usr/lib/swift\nOTHER_LDFLAGS = $(inherited) -framework \"TouchDraw\"\nOTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS\nPODS_BUILD_DIR = ${BUILD_DIR}\nPODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_PODFILE_DIR_PATH = ${SRCROOT}/.\nPODS_ROOT = ${SRCROOT}/Pods\nPODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates\nUSE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.modulemap",
    "content": "framework module Pods_TouchDrawDemo {\n  umbrella header \"Pods-TouchDrawDemo-umbrella.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.release.xcconfig",
    "content": "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES\nCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO\nFRAMEWORK_SEARCH_PATHS = $(inherited) \"${PODS_CONFIGURATION_BUILD_DIR}/TouchDraw\"\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_CONFIGURATION_BUILD_DIR}/TouchDraw/TouchDraw.framework/Headers\"\nLD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'\nLIBRARY_SEARCH_PATHS = $(inherited) \"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\" /usr/lib/swift\nOTHER_LDFLAGS = $(inherited) -framework \"TouchDraw\"\nOTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS\nPODS_BUILD_DIR = ${BUILD_DIR}\nPODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_PODFILE_DIR_PATH = ${SRCROOT}/.\nPODS_ROOT = ${SRCROOT}/Pods\nPODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates\nUSE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/TouchDraw/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleDevelopmentRegion</key>\n  <string>en</string>\n  <key>CFBundleExecutable</key>\n  <string>${EXECUTABLE_NAME}</string>\n  <key>CFBundleIdentifier</key>\n  <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>\n  <key>CFBundleInfoDictionaryVersion</key>\n  <string>6.0</string>\n  <key>CFBundleName</key>\n  <string>${PRODUCT_NAME}</string>\n  <key>CFBundlePackageType</key>\n  <string>FMWK</string>\n  <key>CFBundleShortVersionString</key>\n  <string>2.2.0</string>\n  <key>CFBundleSignature</key>\n  <string>????</string>\n  <key>CFBundleVersion</key>\n  <string>${CURRENT_PROJECT_VERSION}</string>\n  <key>NSPrincipalClass</key>\n  <string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/TouchDraw/TouchDraw-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_TouchDraw : NSObject\n@end\n@implementation PodsDummy_TouchDraw\n@end\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/TouchDraw/TouchDraw-prefix.pch",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/TouchDraw/TouchDraw-umbrella.h",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n\nFOUNDATION_EXPORT double TouchDrawVersionNumber;\nFOUNDATION_EXPORT const unsigned char TouchDrawVersionString[];\n\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/TouchDraw/TouchDraw.modulemap",
    "content": "framework module TouchDraw {\n  umbrella header \"TouchDraw-umbrella.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Demo/Pods/Target Support Files/TouchDraw/TouchDraw.xcconfig",
    "content": "CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/TouchDraw\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nOTHER_SWIFT_FLAGS = $(inherited) \"-D\" \"COCOAPODS\"\nPODS_BUILD_DIR = ${BUILD_DIR}\nPODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_ROOT = ${SRCROOT}\nPODS_TARGET_SRCROOT = ${PODS_ROOT}/../..\nPRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\nSKIP_INSTALL = YES\n"
  },
  {
    "path": "Demo/TouchDrawDemo/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  TouchDrawDemo\n//\n//  Created by Christian Paul Dehli on 10/4/15.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n    func application(_ application: UIApplication,\n                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        return true\n    }\n}\n"
  },
  {
    "path": "Demo/TouchDrawDemo/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"10116\" systemVersion=\"15E65\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"10085\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"TouchDrawDemo\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "Demo/TouchDrawDemo/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"16097\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"vXZ-lx-hvc\">\n    <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"16087\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"ufC-wZ-h7g\">\n            <objects>\n                <viewController id=\"vXZ-lx-hvc\" customClass=\"ViewController\" customModule=\"TouchDrawDemo\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"jyV-Pf-zRb\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"2fi-mo-0CV\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"kh9-bI-dsS\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <toolbar opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JCM-se-Ixi\">\n                                <rect key=\"frame\" x=\"16\" y=\"0.0\" width=\"343\" height=\"44\"/>\n                                <items>\n                                    <barButtonItem style=\"plain\" systemItem=\"undo\" id=\"lxp-Kj-OzZ\">\n                                        <connections>\n                                            <action selector=\"undo:\" destination=\"vXZ-lx-hvc\" id=\"kK8-bV-Hfw\"/>\n                                        </connections>\n                                    </barButtonItem>\n                                    <barButtonItem style=\"plain\" systemItem=\"redo\" id=\"hI9-Tk-pVY\">\n                                        <connections>\n                                            <action selector=\"redo:\" destination=\"vXZ-lx-hvc\" id=\"2LA-lQ-tFa\"/>\n                                        </connections>\n                                    </barButtonItem>\n                                    <barButtonItem style=\"plain\" systemItem=\"flexibleSpace\" id=\"hbp-Ni-ib0\"/>\n                                    <barButtonItem title=\"Random\" style=\"plain\" id=\"LNS-KT-k01\">\n                                        <button key=\"customView\" opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" id=\"Jeh-cE-jOO\">\n                                            <rect key=\"frame\" x=\"127\" y=\"7\" width=\"98\" height=\"30\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                            <state key=\"normal\" title=\"Random\"/>\n                                            <connections>\n                                                <action selector=\"randomColor:\" destination=\"vXZ-lx-hvc\" eventType=\"touchUpInside\" id=\"8un-zP-yyN\"/>\n                                            </connections>\n                                        </button>\n                                    </barButtonItem>\n                                    <barButtonItem style=\"plain\" systemItem=\"flexibleSpace\" id=\"FYI-PE-hqt\"/>\n                                    <barButtonItem title=\"Eraser\" id=\"hiV-BM-QaI\">\n                                        <connections>\n                                            <action selector=\"eraserClicked:\" destination=\"vXZ-lx-hvc\" id=\"wql-2C-PbU\"/>\n                                        </connections>\n                                    </barButtonItem>\n                                    <barButtonItem style=\"plain\" systemItem=\"trash\" id=\"Rwo-UJ-Hpb\">\n                                        <connections>\n                                            <action selector=\"clear:\" destination=\"vXZ-lx-hvc\" id=\"7L5-zl-bwm\"/>\n                                        </connections>\n                                    </barButtonItem>\n                                </items>\n                            </toolbar>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rLC-Uj-OO4\" customClass=\"TouchDrawView\" customModule=\"TouchDraw\">\n                                <rect key=\"frame\" x=\"16\" y=\"44\" width=\"343\" height=\"565\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </view>\n                            <slider opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" value=\"1\" minValue=\"1\" maxValue=\"10\" continuous=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JSe-sH-fRf\">\n                                <rect key=\"frame\" x=\"14\" y=\"622\" width=\"347\" height=\"31\"/>\n                                <color key=\"minimumTrackTintColor\" systemColor=\"systemBlueColor\" red=\"0.0\" green=\"0.47843137250000001\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <color key=\"maximumTrackTintColor\" systemColor=\"systemGrayColor\" red=\"0.5568627451\" green=\"0.5568627451\" blue=\"0.57647058819999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <connections>\n                                    <action selector=\"sliderChanged:\" destination=\"vXZ-lx-hvc\" eventType=\"valueChanged\" id=\"tvJ-XD-7Dh\"/>\n                                </connections>\n                            </slider>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"2fi-mo-0CV\" firstAttribute=\"top\" secondItem=\"JSe-sH-fRf\" secondAttribute=\"bottom\" constant=\"15\" id=\"CHI-5Z-Suy\"/>\n                            <constraint firstItem=\"JSe-sH-fRf\" firstAttribute=\"leading\" secondItem=\"kh9-bI-dsS\" secondAttribute=\"leadingMargin\" id=\"Fd1-lp-llF\"/>\n                            <constraint firstAttribute=\"leadingMargin\" secondItem=\"rLC-Uj-OO4\" secondAttribute=\"leading\" id=\"Fg6-6l-qEe\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"rLC-Uj-OO4\" secondAttribute=\"trailing\" id=\"J5M-2G-QzX\"/>\n                            <constraint firstItem=\"JSe-sH-fRf\" firstAttribute=\"trailing\" secondItem=\"kh9-bI-dsS\" secondAttribute=\"trailingMargin\" id=\"KJt-Ac-GFR\"/>\n                            <constraint firstItem=\"JCM-se-Ixi\" firstAttribute=\"top\" secondItem=\"jyV-Pf-zRb\" secondAttribute=\"bottom\" id=\"QmR-Tr-XuW\"/>\n                            <constraint firstItem=\"rLC-Uj-OO4\" firstAttribute=\"top\" secondItem=\"JCM-se-Ixi\" secondAttribute=\"bottom\" id=\"TIO-10-pgZ\"/>\n                            <constraint firstItem=\"JCM-se-Ixi\" firstAttribute=\"leading\" secondItem=\"kh9-bI-dsS\" secondAttribute=\"leadingMargin\" id=\"ZSd-Fe-POf\"/>\n                            <constraint firstItem=\"JSe-sH-fRf\" firstAttribute=\"top\" secondItem=\"rLC-Uj-OO4\" secondAttribute=\"bottom\" constant=\"13\" id=\"nhy-LG-GOH\"/>\n                            <constraint firstItem=\"JSe-sH-fRf\" firstAttribute=\"centerX\" secondItem=\"kh9-bI-dsS\" secondAttribute=\"centerX\" id=\"rMl-HF-ktv\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"JCM-se-Ixi\" secondAttribute=\"trailing\" id=\"vDI-tv-4uy\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"clearButton\" destination=\"Rwo-UJ-Hpb\" id=\"InB-Ts-DnJ\"/>\n                        <outlet property=\"drawView\" destination=\"rLC-Uj-OO4\" id=\"Yqc-1k-cFG\"/>\n                        <outlet property=\"eraserButton\" destination=\"hiV-BM-QaI\" id=\"DqU-EW-xWI\"/>\n                        <outlet property=\"redoButton\" destination=\"hI9-Tk-pVY\" id=\"FRP-PG-DZl\"/>\n                        <outlet property=\"undoButton\" destination=\"lxp-Kj-OzZ\" id=\"PJN-di-dGh\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"x5A-6p-PRh\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"380\" y=\"487.10644677661173\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Demo/TouchDrawDemo/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"57x57\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"57x57\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ios-marketing\",\n      \"size\" : \"1024x1024\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Demo/TouchDrawDemo/Images.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Demo/TouchDrawDemo/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Demo/TouchDrawDemo/ViewController.swift",
    "content": "//\n//  ViewController.swift\n//  TouchDrawDemo\n//\n//  Created by Christian Paul Dehli on 10/4/15.\n//\n\nimport UIKit\nimport TouchDraw\n\nclass ViewController: UIViewController, TouchDrawViewDelegate {\n\n    @IBOutlet var drawView: TouchDrawView!\n    @IBOutlet weak var undoButton: UIBarButtonItem!\n    @IBOutlet weak var redoButton: UIBarButtonItem!\n    @IBOutlet weak var clearButton: UIBarButtonItem!\n    @IBOutlet weak var eraserButton: UIBarButtonItem!\n\n    private static let deltaWidth = CGFloat(2.0)\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        drawView.delegate = self\n        drawView.setWidth(ViewController.deltaWidth)\n        drawView.image = UIImage(named: \"image.png\")\n\n        undoButton.isEnabled = false\n        redoButton.isEnabled = false\n        clearButton.isEnabled = false\n    }\n\n    @IBAction func eraserClicked(_ sender: Any) {\n        drawView.setColor(nil)\n        eraserButton.isEnabled = false\n    }\n\n    @IBAction func clear(_ sender: AnyObject) {\n        drawView.clearDrawing()\n    }\n\n    // Slider can vary from 1 to 10\n    @IBAction func sliderChanged(_ sender: UISlider) {\n        let newWidth = CGFloat(sender.value) * ViewController.deltaWidth\n        drawView.setWidth(newWidth)\n    }\n\n    @IBAction func randomColor(_ sender: AnyObject) {\n        let red = CGFloat(arc4random() % 255) / 255\n        let green = CGFloat(arc4random() % 255) / 255\n        let blue = CGFloat(arc4random() % 255) / 255\n\n        let color = UIColor(red: red, green: green, blue: blue, alpha: 1.0)\n        drawView.setColor(color)\n        eraserButton.isEnabled = true\n    }\n\n    @IBAction func undo(_ sender: AnyObject) {\n        drawView.undo()\n    }\n\n    @IBAction func redo(_ sender: AnyObject) {\n        drawView.redo()\n    }\n\n    // MARK: - TouchDrawViewDelegate\n\n    func undoEnabled() {\n        self.undoButton.isEnabled = true\n    }\n\n    func undoDisabled() {\n        self.undoButton.isEnabled = false\n    }\n\n    func redoEnabled() {\n        self.redoButton.isEnabled = true\n    }\n\n    func redoDisabled() {\n        self.redoButton.isEnabled = false\n    }\n\n    func clearEnabled() {\n        self.clearButton.isEnabled = true\n    }\n\n    func clearDisabled() {\n        self.clearButton.isEnabled = false\n    }\n}\n"
  },
  {
    "path": "Demo/TouchDrawDemo.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t1499231ED199365D934A6218 /* Pods_TouchDrawDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9419262A54A2526BD1ECD17D /* Pods_TouchDrawDemo.framework */; };\n\t\t9AD1F41F215DA90C00B15066 /* image.png in Resources */ = {isa = PBXBuildFile; fileRef = 9AD1F41E215DA90C00B15066 /* image.png */; };\n\t\tEE43D4731A14A6F200311C06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE43D4721A14A6F200311C06 /* AppDelegate.swift */; };\n\t\tEE43D4751A14A6F200311C06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE43D4741A14A6F200311C06 /* ViewController.swift */; };\n\t\tEE43D4781A14A6F200311C06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EE43D4761A14A6F200311C06 /* Main.storyboard */; };\n\t\tEE43D47A1A14A6F200311C06 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EE43D4791A14A6F200311C06 /* Images.xcassets */; };\n\t\tEE43D47D1A14A6F200311C06 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = EE43D47B1A14A6F200311C06 /* LaunchScreen.xib */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t5484535A4A7D30269DA6B1DD /* Pods-TouchDrawDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TouchDrawDemo.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t9419262A54A2526BD1ECD17D /* Pods_TouchDrawDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TouchDrawDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t9AD1F41E215DA90C00B15066 /* image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image.png; sourceTree = SOURCE_ROOT; };\n\t\tA093867C58B2C460504D298A /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tA361851B2B8E807E7EFAF51F /* Pods-TouchDrawDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-TouchDrawDemo.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tEE43D46D1A14A6F200311C06 /* TouchDrawDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TouchDrawDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tEE43D4711A14A6F200311C06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tEE43D4721A14A6F200311C06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tEE43D4741A14A6F200311C06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\tEE43D4771A14A6F200311C06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\tEE43D4791A14A6F200311C06 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\tEE43D47C1A14A6F200311C06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tEE43D46A1A14A6F200311C06 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1499231ED199365D934A6218 /* Pods_TouchDrawDemo.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t5DDE89E35A71717243AE9141 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA361851B2B8E807E7EFAF51F /* Pods-TouchDrawDemo.debug.xcconfig */,\n\t\t\t\t5484535A4A7D30269DA6B1DD /* Pods-TouchDrawDemo.release.xcconfig */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t89D911C21C25988500DB6DDE /* UI */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEE43D4761A14A6F200311C06 /* Main.storyboard */,\n\t\t\t);\n\t\t\tname = UI;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB90ADA956422C12ACFECF533 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA093867C58B2C460504D298A /* Pods.framework */,\n\t\t\t\t9419262A54A2526BD1ECD17D /* Pods_TouchDrawDemo.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEE43D4641A14A6F200311C06 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEE43D46F1A14A6F200311C06 /* TouchDrawDemo */,\n\t\t\t\tEE43D46E1A14A6F200311C06 /* Products */,\n\t\t\t\tB90ADA956422C12ACFECF533 /* Frameworks */,\n\t\t\t\t5DDE89E35A71717243AE9141 /* Pods */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEE43D46E1A14A6F200311C06 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEE43D46D1A14A6F200311C06 /* TouchDrawDemo.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEE43D46F1A14A6F200311C06 /* TouchDrawDemo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9AD1F41E215DA90C00B15066 /* image.png */,\n\t\t\t\t89D911C21C25988500DB6DDE /* UI */,\n\t\t\t\tEE43D4721A14A6F200311C06 /* AppDelegate.swift */,\n\t\t\t\tEE43D4741A14A6F200311C06 /* ViewController.swift */,\n\t\t\t\tEE43D4791A14A6F200311C06 /* Images.xcassets */,\n\t\t\t\tEE43D47B1A14A6F200311C06 /* LaunchScreen.xib */,\n\t\t\t\tEE43D4701A14A6F200311C06 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = TouchDrawDemo;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEE43D4701A14A6F200311C06 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tEE43D4711A14A6F200311C06 /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tEE43D46C1A14A6F200311C06 /* TouchDrawDemo */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = EE43D48C1A14A6F200311C06 /* Build configuration list for PBXNativeTarget \"TouchDrawDemo\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t387D09E087E530047B635643 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tEE43D4691A14A6F200311C06 /* Sources */,\n\t\t\t\tEE43D46A1A14A6F200311C06 /* Frameworks */,\n\t\t\t\tEE43D46B1A14A6F200311C06 /* Resources */,\n\t\t\t\t92727888AFAFBE90DB06A190 /* [CP] Embed Pods Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = TouchDrawDemo;\n\t\t\tproductName = TouchDrawDemo;\n\t\t\tproductReference = EE43D46D1A14A6F200311C06 /* TouchDrawDemo.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tEE43D4651A14A6F200311C06 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0700;\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = \"Christian Paul Dehli\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tEE43D46C1A14A6F200311C06 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.1;\n\t\t\t\t\t\tLastSwiftMigration = 1000;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = EE43D4681A14A6F200311C06 /* Build configuration list for PBXProject \"TouchDrawDemo\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = EE43D4641A14A6F200311C06;\n\t\t\tproductRefGroup = EE43D46E1A14A6F200311C06 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tEE43D46C1A14A6F200311C06 /* TouchDrawDemo */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tEE43D46B1A14A6F200311C06 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEE43D4781A14A6F200311C06 /* Main.storyboard in Resources */,\n\t\t\t\tEE43D47D1A14A6F200311C06 /* LaunchScreen.xib in Resources */,\n\t\t\t\tEE43D47A1A14A6F200311C06 /* Images.xcassets in Resources */,\n\t\t\t\t9AD1F41F215DA90C00B15066 /* image.png in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t387D09E087E530047B635643 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-TouchDrawDemo-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t92727888AFAFBE90DB06A190 /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_ROOT}/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-frameworks.sh\",\n\t\t\t\t\"${BUILT_PRODUCTS_DIR}/TouchDraw/TouchDraw.framework\",\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TouchDraw.framework\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${PODS_ROOT}/Target Support Files/Pods-TouchDrawDemo/Pods-TouchDrawDemo-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tEE43D4691A14A6F200311C06 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEE43D4751A14A6F200311C06 /* ViewController.swift in Sources */,\n\t\t\t\tEE43D4731A14A6F200311C06 /* AppDelegate.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tEE43D4761A14A6F200311C06 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tEE43D4771A14A6F200311C06 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEE43D47B1A14A6F200311C06 /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tEE43D47C1A14A6F200311C06 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tEE43D48A1A14A6F200311C06 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEE43D48B1A14A6F200311C06 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tEE43D48D1A14A6F200311C06 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = A361851B2B8E807E7EFAF51F /* Pods-TouchDrawDemo.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = \"$(inherited)\";\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tINFOPLIST_FILE = TouchDrawDemo/Info.plist;\n\t\t\t\tINFOPLIST_KEY_CFBundleDisplayName = \"TouchDraw Demo\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.dehli.touchdraw;\n\t\t\t\tPRODUCT_NAME = TouchDrawDemo;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tEE43D48E1A14A6F200311C06 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 5484535A4A7D30269DA6B1DD /* Pods-TouchDrawDemo.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = \"$(inherited)\";\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tINFOPLIST_FILE = TouchDrawDemo/Info.plist;\n\t\t\t\tINFOPLIST_KEY_CFBundleDisplayName = \"TouchDraw Demo\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.dehli.touchdraw;\n\t\t\t\tPRODUCT_NAME = TouchDrawDemo;\n\t\t\t\tSWIFT_VERSION = 4.2;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tEE43D4681A14A6F200311C06 /* Build configuration list for PBXProject \"TouchDrawDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEE43D48A1A14A6F200311C06 /* Debug */,\n\t\t\t\tEE43D48B1A14A6F200311C06 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tEE43D48C1A14A6F200311C06 /* Build configuration list for PBXNativeTarget \"TouchDrawDemo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tEE43D48D1A14A6F200311C06 /* Debug */,\n\t\t\t\tEE43D48E1A14A6F200311C06 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = EE43D4651A14A6F200311C06 /* Project object */;\n}\n"
  },
  {
    "path": "Demo/TouchDrawDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:TouchDrawDemo.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Demo/TouchDrawDemo.xcodeproj/xcshareddata/xcschemes/TouchDrawDemo.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"EE43D46C1A14A6F200311C06\"\n               BuildableName = \"TouchDrawDemo.app\"\n               BlueprintName = \"TouchDrawDemo\"\n               ReferencedContainer = \"container:TouchDrawDemo.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"EE43D4811A14A6F200311C06\"\n               BuildableName = \"TouchDrawDemo.xctest\"\n               BlueprintName = \"TouchDrawDemoTests\"\n               ReferencedContainer = \"container:TouchDrawDemo.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"EE43D46C1A14A6F200311C06\"\n            BuildableName = \"TouchDrawDemo.app\"\n            BlueprintName = \"TouchDrawDemo\"\n            ReferencedContainer = \"container:TouchDrawDemo.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"EE43D46C1A14A6F200311C06\"\n            BuildableName = \"TouchDrawDemo.app\"\n            BlueprintName = \"TouchDrawDemo\"\n            ReferencedContainer = \"container:TouchDrawDemo.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"EE43D46C1A14A6F200311C06\"\n            BuildableName = \"TouchDrawDemo.app\"\n            BlueprintName = \"TouchDrawDemo\"\n            ReferencedContainer = \"container:TouchDrawDemo.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Demo/TouchDrawDemo.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:TouchDrawDemo.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Pods/Pods.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Demo/TouchDrawDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Christian Paul Dehli\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:5.0\n// The swift-tools-version declares the minimum version of Swift required to build this package.\nimport PackageDescription\n\nlet package = Package(\n    name: \"TouchDraw\",\n    platforms: [\n      .iOS(.v10)\n    ],\n    products: [\n        .library(name: \"TouchDraw\", targets: [\"TouchDraw\"])\n    ],\n    targets: [\n        .target(name: \"TouchDraw\", path: \"Sources\")\n    ]\n)\n"
  },
  {
    "path": "README.md",
    "content": "# TouchDraw\n\n\n[![](https://travis-ci.org/dehli/TouchDraw.svg?branch=master)](https://travis-ci.org/dehli/TouchDraw) [![Join the chat at https://gitter.im/dehli/TouchDraw](https://badges.gitter.im/dehli/TouchDraw.svg)](https://gitter.im/dehli/TouchDraw?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\nThe `TouchDraw` module allows you to use the `TouchDrawView` class. This is a subclass of `UIView` which allows you to draw pictures with your finger.\n\n## Installation\n\nThe easiest way to include `TouchDraw` is by using `CocoaPods` and adding the following to your `Podfile`.\n\n```\nuse_frameworks!\npod 'TouchDraw', '~> 2.2'\n```\n\nIf you're not using CocoaPods, you can add the `TouchDrawView.swift` file to your project.\n\n## Usage\n\nYou can either programmatically add the `TouchDrawView` or add it using storyboards.\n\n#### Storyboards\n\nIf using storyboards, you must add a `UIView` to your storyboard. Give it the `TouchDrawView` class, and `TouchDraw` module.\n\n![Storyboard class](https://cloud.githubusercontent.com/assets/5856011/14061970/1da011c8-f365-11e5-8362-4bbe956b6152.png)\n\n#### Code\n\nIf programmatically adding the view, you can use the `init(frame: CGRect)` method to create a new instance of `TouchDrawView`. You must make sure to write `import TouchDraw` at the top of the class, and also set `isUserInteractionEnabled` to `true`.\n\n#### Customizing\n\nWhen customizing the `TouchDrawView` you can setting its `delegate`. The container can conform to parts of `TouchDrawViewDelegate`, which has the following functions:\n\n```\nfunc undoEnabled() {\n    // triggered when undo is enabled\n    // (only if it was previously disabled)\n}\n```\n\n```\nfunc undoDisabled() {\n    // triggered when undo is disabled\n    // (only if it previously enabled)\n}\n```\n\n```\nfunc redoEnabled() {\n    // triggered when redo is enabled\n    // (only if it was previously disabled)\n}\n```\n\n```\nfunc redoDisabled() {\n    // triggered when redo is disabled\n    // (only if it previously enabled)\n}\n```\n\n```\nfunc clearEnabled() {\n    // triggered when clear is enabled\n    // (only if it was previously disabled)\n}\n```\n\n```\nfunc clearDisabled() {\n    // triggered when clear is disabled\n    // (only if it previously enabled)\n}\n```\n\nThe `TouchDrawView` exposes the following methods:\n\n- `exportDrawing() -> UIImage`\n  - Exports a UIImage version of the drawing.\n- `clearDrawing()`\n  - Clears the TouchDrawView.\n- `undo()`\n  - Undo the last stroke.\n- `redo()`\n  - Redo what was undone.\n- `setColor(color: UIColor?)`\n  - Sets the color of future strokes, if you pass `nil` you will be erasing.\n- `setWidth(width: CGFloat)`\n  - Sets the width of future strokes.\n- `importStack(stack: [Stroke])`\n  - Set the `TouchDrawView` to have certain strokes (usually will be used in conjunction with `exportStack()`.\n- `exportStack() -> [Stroke]`\n  - Exports the strokes from a `TouchDrawView` so they can be imported later.\n\n## Demo\n\nIf you'd like to see this library in action, you can download the entire repository and open [Demo/TouchDrawDemo.xcworkspace](Demo/TouchDrawDemo.xcworkspace).\n\n[Demo/TouchDrawDemo/ViewController.swift](Demo/TouchDrawDemo/ViewController.swift) is where most of its functionality is demonstrated.\n\n![Demo Screenshot](https://user-images.githubusercontent.com/5856011/27687865-877fc650-5ca6-11e7-9621-48e2051ff25f.png)\n\n## License\n\nThis package has the MIT license, which can be found here: [LICENSE](/LICENSE).\n\n## Code of Conduct\n\nPlease make sure to follow the [Code of Conduct](/CODE_OF_CONDUCT.md) when you interact with this project. Thanks!\n"
  },
  {
    "path": "Sources/Stroke.swift",
    "content": "//\n//  Stroke.swift\n//  TouchDraw\n//\n//  Created by Christian Paul Dehli on 9/4/16.\n//\n\nimport Foundation\nimport UIKit\n\n/// A drawing stroke\nopen class Stroke: NSObject {\n\n    /// The points that make up the stroke\n    internal var points: [CGPoint]\n\n    /// The properties of the stroke\n    internal var settings: StrokeSettings\n\n    /// Default initializer\n    override public init() {\n        points = []\n        settings = StrokeSettings()\n        super.init()\n    }\n\n    /// Initialize a stroke with certain points and settings\n    public convenience init(points: [CGPoint], settings: StrokeSettings) {\n        self.init()\n        self.points = points\n        self.settings = StrokeSettings(settings)\n    }\n\n    /// Used to decode a Stroke with a decoder\n    required public convenience init?(coder aDecoder: NSCoder) {\n        var points = aDecoder.decodeObject(forKey: Stroke.pointsKey) as? [CGPoint]\n        if points == nil {\n            points = []\n        }\n\n        var settings = aDecoder.decodeObject(forKey: Stroke.settingsKey) as? StrokeSettings\n        if settings == nil {\n            settings = StrokeSettings()\n        }\n\n        self.init(points: points!, settings: settings!)\n    }\n}\n\n// MARK: - NSCoding\n\nextension Stroke: NSCoding {\n    internal static let pointsKey = \"points\"\n    internal static let settingsKey = \"settings\"\n\n    /// Used to encode a Stroke with a coder\n    open func encode(with aCoder: NSCoder) {\n        aCoder.encode(self.points, forKey: Stroke.pointsKey)\n        aCoder.encode(self.settings, forKey: Stroke.settingsKey)\n    }\n}\n"
  },
  {
    "path": "Sources/StrokeSettings.swift",
    "content": "//\n//  StrokeSettings.swift\n//  TouchDraw\n//\n//  Created by Christian Paul Dehli on 9/4/16.\n//\n\nimport Foundation\nimport UIKit\n\n/// Properties to describe a stroke (color, width)\nopen class StrokeSettings: NSObject {\n\n    /// Color of the brush\n    private static let defaultColor = CIColor(color: UIColor.black)\n    internal var color: CIColor?\n\n    /// Width of the brush\n    private static let defaultWidth = CGFloat(10.0)\n    internal var width: CGFloat\n\n    /// Default initializer\n    override public init() {\n        color = StrokeSettings.defaultColor\n        width = StrokeSettings.defaultWidth\n        super.init()\n    }\n\n    /// Initializes a StrokeSettings with another StrokeSettings object\n    public convenience init(_ settings: StrokeSettings) {\n        self.init()\n        self.color = settings.color\n        self.width = settings.width\n    }\n\n    /// Initializes a StrokeSettings with a color and width\n    public convenience init(color: CIColor?, width: CGFloat) {\n        self.init()\n        self.color = color\n        self.width = width\n    }\n\n    /// Used to decode a StrokeSettings with a decoder\n    required public convenience init?(coder aDecoder: NSCoder) {\n        let color = aDecoder.decodeObject(forKey: StrokeSettings.colorKey) as? CIColor\n        var width = aDecoder.decodeObject(forKey: StrokeSettings.widthKey) as? CGFloat\n        if width == nil {\n            width = StrokeSettings.defaultWidth\n        }\n\n        self.init(color: color, width: width!)\n    }\n}\n\n// MARK: - NSCoding\n\nextension StrokeSettings: NSCoding {\n    internal static let colorKey = \"color\"\n    internal static let widthKey = \"width\"\n\n    /// Used to encode a StrokeSettings with a coder\n    open func encode(with aCoder: NSCoder) {\n        aCoder.encode(self.color, forKey: StrokeSettings.colorKey)\n        aCoder.encode(self.width, forKey: StrokeSettings.widthKey)\n    }\n}\n"
  },
  {
    "path": "Sources/TouchDrawView.swift",
    "content": "//\n//  TouchDrawView.swift\n//  TouchDraw\n//\n//  Created by Christian Paul Dehli\n//\n\nimport Foundation\nimport UIKit\n\n/// The protocol which the container of TouchDrawView can conform to\n@objc public protocol TouchDrawViewDelegate {\n    /// triggered when undo is enabled (only if it was previously disabled)\n    @objc optional func undoEnabled()\n\n    /// triggered when undo is disabled (only if it previously enabled)\n    @objc optional func undoDisabled()\n\n    /// triggered when redo is enabled (only if it was previously disabled)\n    @objc optional func redoEnabled()\n\n    /// triggered when redo is disabled (only if it previously enabled)\n    @objc optional func redoDisabled()\n\n    /// triggered when clear is enabled (only if it was previously disabled)\n    @objc optional func clearEnabled()\n\n    /// triggered when clear is disabled (only if it previously enabled)\n    @objc optional func clearDisabled()\n}\n\n/// A subclass of UIView which allows you to draw on the view using your fingers\nopen class TouchDrawView: UIView {\n\n    /// Should be set in whichever class is using the TouchDrawView\n    open weak var delegate: TouchDrawViewDelegate?\n\n    /// Drawn underneath the strokes\n    open var image: UIImage? {\n        didSet(oldImage) { redrawStack() }\n    }\n\n    /// Used to register undo and redo actions\n    fileprivate var touchDrawUndoManager = UndoManager()\n\n    /// Used to keep track of all the strokes\n    internal var stack: [Stroke] = []\n\n    /// Used to keep track of the current StrokeSettings\n    fileprivate let settings = StrokeSettings()\n\n    /// This is used to render a user's strokes\n    fileprivate let imageView = UIImageView()\n\n    /// Initializes a TouchDrawView instance\n    override public init(frame: CGRect) {\n        super.init(frame: frame)\n        initialize(frame)\n    }\n\n    /// Initializes a TouchDrawView instance\n    public required init?(coder aDecoder: NSCoder) {\n        super.init(coder: aDecoder)\n        initialize(CGRect.zero)\n    }\n\n    /// Adds the subviews and initializes stack\n    private func initialize(_ frame: CGRect) {\n        addSubview(imageView)\n        draw(frame)\n    }\n\n    /// Sets the frames of the subviews\n    override open func draw(_ rect: CGRect) {\n        imageView.frame = rect\n    }\n\n    /// Imports the stack so that previously exported stack can be used\n    open func importStack(_ stack: [Stroke]) {\n        // Make sure undo is disabled\n        if touchDrawUndoManager.canUndo {\n            delegate?.undoDisabled?()\n        }\n\n        // Make sure that redo is disabled\n        if touchDrawUndoManager.canRedo {\n            delegate?.redoDisabled?()\n        }\n\n        // Make sure that clear is enabled\n        if self.stack.count == 0 && stack.count > 0 {\n            delegate?.clearEnabled?()\n        }\n\n        self.stack = stack\n        redrawStack()\n        touchDrawUndoManager.removeAllActions()\n    }\n\n    /// Used to export the current stack (each individual stroke)\n    open func exportStack() -> [Stroke] {\n        return stack\n    }\n\n    /// Exports the current drawing\n    open func exportDrawing() -> UIImage {\n        UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, UIScreen.main.scale)\n        imageView.image?.draw(in: imageView.bounds)\n\n        let imageFromContext = UIGraphicsGetImageFromCurrentImageContext()\n        UIGraphicsEndImageContext()\n        return imageFromContext!\n    }\n\n    /// Clears the drawing\n    @objc open func clearDrawing() {\n        if !touchDrawUndoManager.canUndo {\n            delegate?.undoEnabled?()\n        }\n\n        if touchDrawUndoManager.canRedo {\n            delegate?.redoDisabled?()\n        }\n\n        if stack.count > 0 {\n            delegate?.clearDisabled?()\n        }\n\n        touchDrawUndoManager.registerUndo(withTarget: self, selector: #selector(pushAll(_:)), object: stack)\n        stack = []\n        redrawStack()\n    }\n\n    /// Sets the brush's color\n    open func setColor(_ color: UIColor?) {\n        if color == nil {\n            settings.color = nil\n        } else {\n            settings.color = CIColor(color: color!)\n        }\n    }\n\n    /// Sets the brush's width\n    open func setWidth(_ width: CGFloat) {\n        settings.width = width\n    }\n\n    /// If possible, it will redo the last undone stroke\n    open func redo() {\n        if touchDrawUndoManager.canRedo {\n            let stackCount = stack.count\n\n            if !touchDrawUndoManager.canUndo {\n                delegate?.undoEnabled?()\n            }\n\n            touchDrawUndoManager.redo()\n\n            if !touchDrawUndoManager.canRedo {\n                self.delegate?.redoDisabled?()\n            }\n\n            updateClear(oldStackCount: stackCount)\n        }\n    }\n\n    /// If possible, it will undo the last stroke\n    open func undo() {\n        if touchDrawUndoManager.canUndo {\n            let stackCount = stack.count\n\n            if !touchDrawUndoManager.canRedo {\n                delegate?.redoEnabled?()\n            }\n\n            touchDrawUndoManager.undo()\n\n            if !touchDrawUndoManager.canUndo {\n                delegate?.undoDisabled?()\n            }\n\n            updateClear(oldStackCount: stackCount)\n        }\n    }\n\n    /// Update clear after either undo or redo\n    internal func updateClear(oldStackCount: Int) {\n        if oldStackCount > 0 && stack.count == 0 {\n            delegate?.clearDisabled?()\n        } else if oldStackCount == 0 && stack.count > 0 {\n            delegate?.clearEnabled?()\n        }\n    }\n\n    /// Removes the last Stroke from stack\n    @objc internal func popDrawing() {\n        touchDrawUndoManager.registerUndo(withTarget: self,\n                                          selector: #selector(pushDrawing(_:)),\n                                          object: stack.popLast())\n        redrawStack()\n    }\n\n    /// Adds a new stroke to the stack\n    @objc internal func pushDrawing(_ stroke: Stroke) {\n        stack.append(stroke)\n        drawStrokeWithContext(stroke)\n        touchDrawUndoManager.registerUndo(withTarget: self, selector: #selector(popDrawing), object: nil)\n    }\n\n    /// Draws all of the strokes\n    @objc internal func pushAll(_ strokes: [Stroke]) {\n        stack = strokes\n        redrawStack()\n        touchDrawUndoManager.registerUndo(withTarget: self, selector: #selector(clearDrawing), object: nil)\n    }\n\n    open override func layoutSubviews() {\n        super.layoutSubviews()\n        redrawStack()\n    }\n}\n\n// MARK: - Touch Actions\n\nextension TouchDrawView {\n\n    /// Triggered when touches begin\n    override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n        if let touch = touches.first {\n            let stroke = Stroke(points: [touch.location(in: self)],\n                                settings: settings)\n            stack.append(stroke)\n        }\n    }\n\n    /// Triggered when touches move\n    override open func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {\n        if let touch = touches.first {\n            let stroke = stack.last!\n            let lastPoint = stroke.points.last\n            let currentPoint = touch.location(in: self)\n            drawLineWithContext(fromPoint: lastPoint!, toPoint: currentPoint, properties: stroke.settings)\n            stroke.points.append(currentPoint)\n        }\n    }\n\n    /// Triggered whenever touches end, resulting in a newly created Stroke\n    override open func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {\n        let stroke = stack.last!\n        if stroke.points.count == 1 {\n            let lastPoint = stroke.points.last!\n            drawLineWithContext(fromPoint: lastPoint, toPoint: lastPoint, properties: stroke.settings)\n        }\n\n        if !touchDrawUndoManager.canUndo {\n            delegate?.undoEnabled?()\n        }\n\n        if touchDrawUndoManager.canRedo {\n            delegate?.redoDisabled?()\n        }\n\n        if stack.count == 1 {\n            delegate?.clearEnabled?()\n        }\n\n        touchDrawUndoManager.registerUndo(withTarget: self, selector: #selector(popDrawing), object: nil)\n    }\n}\n\n// MARK: - Drawing\n\nfileprivate extension TouchDrawView {\n\n    /// Begins the image context\n    func beginImageContext() {\n        UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, UIScreen.main.scale)\n    }\n\n    /// Ends image context and sets UIImage to what was on the context\n    func endImageContext() {\n        imageView.image = UIGraphicsGetImageFromCurrentImageContext()\n        UIGraphicsEndImageContext()\n    }\n\n    /// Draws the current image for context\n    func drawCurrentImage() {\n        imageView.image?.draw(in: imageView.bounds)\n    }\n\n    /// Clears view, then draws stack\n    func redrawStack() {\n        if imageView.frame.size == .zero { return }\n        beginImageContext()\n        image?.draw(in: imageView.bounds)\n        for stroke in stack {\n            drawStroke(stroke)\n        }\n        endImageContext()\n    }\n\n    /// Draws a single Stroke\n    func drawStroke(_ stroke: Stroke) {\n        let properties = stroke.settings\n        let points = stroke.points\n\n        if points.count == 1 {\n            let point = points[0]\n            drawLine(fromPoint: point, toPoint: point, properties: properties)\n        }\n\n        for index in stride(from: 1, to: points.count, by: 1) {\n            let point0 = points[index - 1]\n            let point1 = points[index]\n            drawLine(fromPoint: point0, toPoint: point1, properties: properties)\n        }\n    }\n\n    /// Draws a single Stroke (begins/ends context\n    func drawStrokeWithContext(_ stroke: Stroke) {\n        beginImageContext()\n        drawCurrentImage()\n        drawStroke(stroke)\n        endImageContext()\n    }\n\n    /// Draws a line between two points\n    func drawLine(fromPoint: CGPoint, toPoint: CGPoint, properties: StrokeSettings) {\n        let context = UIGraphicsGetCurrentContext()\n        context!.move(to: CGPoint(x: fromPoint.x, y: fromPoint.y))\n        context!.addLine(to: CGPoint(x: toPoint.x, y: toPoint.y))\n\n        context!.setLineCap(CGLineCap.round)\n        context!.setLineWidth(properties.width)\n\n        let color = properties.color\n        if color != nil {\n            context!.setStrokeColor(red: properties.color!.red,\n                                    green: properties.color!.green,\n                                    blue: properties.color!.blue,\n                                    alpha: properties.color!.alpha)\n            context!.setBlendMode(CGBlendMode.normal)\n        } else {\n            context!.setBlendMode(CGBlendMode.clear)\n        }\n\n        context!.strokePath()\n    }\n\n    /// Draws a line between two points (begins/ends context)\n    func drawLineWithContext(fromPoint: CGPoint, toPoint: CGPoint, properties: StrokeSettings) {\n        beginImageContext()\n        drawCurrentImage()\n        drawLine(fromPoint: fromPoint, toPoint: toPoint, properties: properties)\n        endImageContext()\n    }\n}\n"
  },
  {
    "path": "TouchDraw/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.2.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "TouchDraw/TouchDraw.h",
    "content": "//\n//  TouchDraw.h\n//  TouchDraw\n//\n//  Created by Christian Paul Dehli on 10/10/15.\n//  Copyright © 2015 Christian Paul Dehli. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n//! Project version number for TouchDraw.\nFOUNDATION_EXPORT double TouchDrawVersionNumber;\n\n//! Project version string for TouchDraw.\nFOUNDATION_EXPORT const unsigned char TouchDrawVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <TouchDraw/PublicHeader.h>"
  },
  {
    "path": "TouchDraw.podspec",
    "content": "# New version checklist:\n#     Bump version in TouchDraw.podspec\n#     Bump version in TouchDraw/Info.plist\n#     Run pod install in Demo\n#     Update README.md\n#     Update CHANGELOG.md\n#     Make sure each function and variable is documented\n#     Add release on GitHub\n#     pod trunk push TouchDraw.podspec (after pulling latest from master)\n\nPod::Spec.new do |s|\n\n  s.name                  = \"TouchDraw\"\n  s.version               = \"2.2.0\"\n  s.summary               = \"TouchDraw is a UIView you can draw on.\"\n\n  s.description           = <<-DESC\n                            TouchDraw is a subclass of UIView that allows you to draw using touch. It exposes the following functions:\n                            - `exportDrawing() -> UIImage`\n                            - `clearDrawing()`\n                            - `undo()`\n                            - `redo()`\n                            - `setColor(color: UIColor?)`\n                            - `setWidth(width: CGFloat)`\n                            - `importStack(stack: [Stroke])`\n                            - `exportStack() -> [Stroke]`\n                            DESC\n\n  s.homepage              = \"https://github.com/dehli/TouchDraw\"\n  # s.screenshots           = \"www.example.com/screenshots_1.gif\", \"www.example.com/screenshots_2.gif\"\n\n  s.license               = { :type => \"MIT\", :file => \"LICENSE\" }\n\n  s.author                = { \"Christian Paul Dehli\" => \"dehli@gatech.edu\" }\n  s.social_media_url      = \"http://twitter.com/cpdehli\"\n\n  s.platform              = :ios\n  s.ios.deployment_target = \"12.0\"\n\n  s.source                = { :git => \"https://github.com/dehli/TouchDraw.git\", :tag => \"#{s.version}\"}\n  s.source_files          = \"Sources/**/*.{swift}\"\n\nend\n"
  },
  {
    "path": "TouchDraw.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t895DEB791CB8ADF100498FB2 /* TouchDrawView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 895DEB781CB8ADF100498FB2 /* TouchDrawView.swift */; };\n\t\t89DF760D1D7D177700D789A8 /* Stroke.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DF760B1D7D177700D789A8 /* Stroke.swift */; };\n\t\t89DF760E1D7D177700D789A8 /* StrokeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DF760C1D7D177700D789A8 /* StrokeSettings.swift */; };\n\t\t89EADBB71CB87C23001130A8 /* TouchDrawTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89EADBB61CB87C23001130A8 /* TouchDrawTests.swift */; };\n\t\t89EADBB91CB87C23001130A8 /* TouchDraw.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89F60F6B1BC9580000BCDD93 /* TouchDraw.framework */; };\n\t\t89F60F6F1BC9580000BCDD93 /* TouchDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = 89F60F6E1BC9580000BCDD93 /* TouchDraw.h */; settings = {ATTRIBUTES = (Public, ); }; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t89EADBBA1CB87C23001130A8 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 89F60F621BC9580000BCDD93 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 89F60F6A1BC9580000BCDD93;\n\t\t\tremoteInfo = TouchDraw;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t895DEB781CB8ADF100498FB2 /* TouchDrawView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TouchDrawView.swift; path = Sources/TouchDrawView.swift; sourceTree = \"<group>\"; };\n\t\t89DF760B1D7D177700D789A8 /* Stroke.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Stroke.swift; path = Sources/Stroke.swift; sourceTree = \"<group>\"; };\n\t\t89DF760C1D7D177700D789A8 /* StrokeSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = StrokeSettings.swift; path = Sources/StrokeSettings.swift; sourceTree = \"<group>\"; };\n\t\t89EADBB41CB87C23001130A8 /* TouchDrawTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TouchDrawTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t89EADBB61CB87C23001130A8 /* TouchDrawTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchDrawTests.swift; sourceTree = \"<group>\"; };\n\t\t89EADBB81CB87C23001130A8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t89F60F6B1BC9580000BCDD93 /* TouchDraw.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TouchDraw.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t89F60F6E1BC9580000BCDD93 /* TouchDraw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TouchDraw.h; sourceTree = \"<group>\"; };\n\t\t89F60F701BC9580000BCDD93 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t89EADBB11CB87C23001130A8 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t89EADBB91CB87C23001130A8 /* TouchDraw.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t89F60F671BC9580000BCDD93 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t895DEB7A1CB8AF9400498FB2 /* Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t895DEB781CB8ADF100498FB2 /* TouchDrawView.swift */,\n\t\t\t\t89DF760B1D7D177700D789A8 /* Stroke.swift */,\n\t\t\t\t89DF760C1D7D177700D789A8 /* StrokeSettings.swift */,\n\t\t\t);\n\t\t\tname = Sources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t89EADBB51CB87C23001130A8 /* TouchDrawTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t89EADBB61CB87C23001130A8 /* TouchDrawTests.swift */,\n\t\t\t\t89EADBB81CB87C23001130A8 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = TouchDrawTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t89F60F611BC9580000BCDD93 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t895DEB7A1CB8AF9400498FB2 /* Sources */,\n\t\t\t\t89F60F6D1BC9580000BCDD93 /* TouchDraw */,\n\t\t\t\t89EADBB51CB87C23001130A8 /* TouchDrawTests */,\n\t\t\t\t89F60F6C1BC9580000BCDD93 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t89F60F6C1BC9580000BCDD93 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t89F60F6B1BC9580000BCDD93 /* TouchDraw.framework */,\n\t\t\t\t89EADBB41CB87C23001130A8 /* TouchDrawTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t89F60F6D1BC9580000BCDD93 /* TouchDraw */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t89F60F6E1BC9580000BCDD93 /* TouchDraw.h */,\n\t\t\t\t89F60F701BC9580000BCDD93 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = TouchDraw;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t89F60F681BC9580000BCDD93 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t89F60F6F1BC9580000BCDD93 /* TouchDraw.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t89EADBB31CB87C23001130A8 /* TouchDrawTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 89EADBBC1CB87C23001130A8 /* Build configuration list for PBXNativeTarget \"TouchDrawTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t89EADBB01CB87C23001130A8 /* Sources */,\n\t\t\t\t89EADBB11CB87C23001130A8 /* Frameworks */,\n\t\t\t\t89EADBB21CB87C23001130A8 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t89EADBBB1CB87C23001130A8 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = TouchDrawTests;\n\t\t\tproductName = TouchDrawTests;\n\t\t\tproductReference = 89EADBB41CB87C23001130A8 /* TouchDrawTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t89F60F6A1BC9580000BCDD93 /* TouchDraw */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 89F60F7F1BC9580000BCDD93 /* Build configuration list for PBXNativeTarget \"TouchDraw\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t89F60F661BC9580000BCDD93 /* Sources */,\n\t\t\t\t89F60F671BC9580000BCDD93 /* Frameworks */,\n\t\t\t\t89F60F681BC9580000BCDD93 /* Headers */,\n\t\t\t\t89F60F691BC9580000BCDD93 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = TouchDraw;\n\t\t\tproductName = TouchDraw;\n\t\t\tproductReference = 89F60F6B1BC9580000BCDD93 /* TouchDraw.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t89F60F621BC9580000BCDD93 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0730;\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = \"Christian Paul Dehli\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t89EADBB31CB87C23001130A8 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t};\n\t\t\t\t\t89F60F6A1BC9580000BCDD93 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.0.1;\n\t\t\t\t\t\tLastSwiftMigration = 0900;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 89F60F651BC9580000BCDD93 /* Build configuration list for PBXProject \"TouchDraw\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = 89F60F611BC9580000BCDD93;\n\t\t\tproductRefGroup = 89F60F6C1BC9580000BCDD93 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t89F60F6A1BC9580000BCDD93 /* TouchDraw */,\n\t\t\t\t89EADBB31CB87C23001130A8 /* TouchDrawTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t89EADBB21CB87C23001130A8 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t89F60F691BC9580000BCDD93 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t89EADBB01CB87C23001130A8 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t89EADBB71CB87C23001130A8 /* TouchDrawTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t89F60F661BC9580000BCDD93 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t89DF760E1D7D177700D789A8 /* StrokeSettings.swift in Sources */,\n\t\t\t\t895DEB791CB8ADF100498FB2 /* TouchDrawView.swift in Sources */,\n\t\t\t\t89DF760D1D7D177700D789A8 /* Stroke.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t89EADBBB1CB87C23001130A8 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 89F60F6A1BC9580000BCDD93 /* TouchDraw */;\n\t\t\ttargetProxy = 89EADBBA1CB87C23001130A8 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t89EADBBD1CB87C23001130A8 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tINFOPLIST_FILE = TouchDrawTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.dehli.TouchDrawTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t89EADBBE1CB87C23001130A8 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tINFOPLIST_FILE = TouchDrawTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.dehli.TouchDrawTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t89F60F7D1BC9580000BCDD93 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t89F60F7E1BC9580000BCDD93 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t89F60F801BC9580000BCDD93 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = TouchDraw/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.dehli.TouchDraw;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t89F60F811BC9580000BCDD93 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = TouchDraw/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.dehli.TouchDraw;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_SWIFT3_OBJC_INFERENCE = Default;\n\t\t\t\tSWIFT_VERSION = 4.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t89EADBBC1CB87C23001130A8 /* Build configuration list for PBXNativeTarget \"TouchDrawTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t89EADBBD1CB87C23001130A8 /* Debug */,\n\t\t\t\t89EADBBE1CB87C23001130A8 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t89F60F651BC9580000BCDD93 /* Build configuration list for PBXProject \"TouchDraw\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t89F60F7D1BC9580000BCDD93 /* Debug */,\n\t\t\t\t89F60F7E1BC9580000BCDD93 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t89F60F7F1BC9580000BCDD93 /* Build configuration list for PBXNativeTarget \"TouchDraw\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t89F60F801BC9580000BCDD93 /* Debug */,\n\t\t\t\t89F60F811BC9580000BCDD93 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 89F60F621BC9580000BCDD93 /* Project object */;\n}\n"
  },
  {
    "path": "TouchDraw.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:TouchDraw.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "TouchDraw.xcodeproj/xcshareddata/xcschemes/TouchDraw.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"89F60F6A1BC9580000BCDD93\"\n               BuildableName = \"TouchDraw.framework\"\n               BlueprintName = \"TouchDraw\"\n               ReferencedContainer = \"container:TouchDraw.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"89EADBB31CB87C23001130A8\"\n               BuildableName = \"TouchDrawTests.xctest\"\n               BlueprintName = \"TouchDrawTests\"\n               ReferencedContainer = \"container:TouchDraw.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"89F60F6A1BC9580000BCDD93\"\n            BuildableName = \"TouchDraw.framework\"\n            BlueprintName = \"TouchDraw\"\n            ReferencedContainer = \"container:TouchDraw.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"89F60F6A1BC9580000BCDD93\"\n            BuildableName = \"TouchDraw.framework\"\n            BlueprintName = \"TouchDraw\"\n            ReferencedContainer = \"container:TouchDraw.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"89F60F6A1BC9580000BCDD93\"\n            BuildableName = \"TouchDraw.framework\"\n            BlueprintName = \"TouchDraw\"\n            ReferencedContainer = \"container:TouchDraw.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "TouchDraw.xcodeproj/xcshareddata/xcschemes/TouchDrawTests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"89EADBB31CB87C23001130A8\"\n               BuildableName = \"TouchDrawTests.xctest\"\n               BlueprintName = \"TouchDrawTests\"\n               ReferencedContainer = \"container:TouchDraw.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "TouchDraw.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:TouchDraw.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "TouchDraw.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "TouchDrawTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "TouchDrawTests/TouchDrawTests.swift",
    "content": "//\n//  TouchDrawTests.swift\n//  TouchDrawTests\n//\n//  Created by Christian Paul Dehli on 10/10/15.\n//  Copyright © 2015 Christian Paul Dehli. All rights reserved.\n//\n\nimport XCTest\n@testable import TouchDraw\n\nclass TouchDrawTests: XCTestCase, TouchDrawViewDelegate {\n\n    var undoIsEnabled: Bool!\n    var redoIsEnabled: Bool!\n    var clearIsEnabled: Bool!\n\n    var touchDrawView: TouchDrawView!\n\n    override func setUp() {\n        super.setUp()\n\n        undoIsEnabled = false\n        redoIsEnabled = false\n        clearIsEnabled = false\n\n        touchDrawView = TouchDrawView(frame: CGRect(x: 0, y: 0, width: 256, height: 256))\n        touchDrawView.delegate = self\n    }\n\n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n\n    /// Tests that exportDrawing does indeed return a UIImage\n    func testExportDrawing() {\n        simulateTouch()\n        let image = touchDrawView.exportDrawing()\n        XCTAssertNotNil(image, \"Image shouldn't be nil\")\n    }\n\n    /// Tests that changing the color works\n    func testChangeColor() {\n        let color = UIColor.red\n        touchDrawView.setColor(color)\n        simulateTouch()\n\n        let stroke = touchDrawView.stack.first!\n        XCTAssert(stroke.settings.color == CIColor(color: color), \"Expected stroke to be red\")\n    }\n\n    /// Tests that changing the width works\n    func testChangeWidth() {\n        let width = CGFloat(100.0)\n        touchDrawView.setWidth(width)\n        simulateTouch()\n\n        let stroke = touchDrawView.stack.first!\n        XCTAssert(stroke.settings.width == width, \"Expected stroke to have width of 100\")\n    }\n\n    /// Tests whether clear empties the strokes\n    func testClear() {\n        simulateTouch()\n        XCTAssert(touchDrawView.stack.count > 0, \"Should have strokes on view\")\n        touchDrawView.clearDrawing()\n        XCTAssert(touchDrawView.stack.count == 0, \"Should not have strokes on view\")\n    }\n\n    /// Tests to make sure clear is enabled after you make a stroke\n    func testClearEnabled() {\n        simulateTouch()\n        XCTAssertTrue(clearIsEnabled, \"Clear should be enabled after a stroke\")\n    }\n\n    /// Tests to make sure clear is diabled after calling clearDrawing()\n    func testClearDisabled() {\n        simulateTouch()\n        touchDrawView.clearDrawing()\n        XCTAssertFalse(clearIsEnabled, \"Clear should not be enabled after calling clearDrawing()\")\n    }\n\n    /// Tests undo functionality\n    func testUndo() {\n        simulateTouch()\n        XCTAssert(touchDrawView.stack.count == 1, \"Should have one stroke\")\n        touchDrawView.undo()\n        XCTAssert(touchDrawView.stack.count == 0, \"Should not have any strokes\")\n    }\n\n    /// Tests whether TouchDrawView enables undo after one point is drawn\n    func testUndoEnabled() {\n        simulateTouch()\n        XCTAssertTrue(undoIsEnabled, \"Undo should be enabled\")\n    }\n\n    /// Tests whether TouchDrawView enables undo after one point is drawn\n    func testUndoDisabled() {\n        simulateTouch()\n        touchDrawView.undo()\n        XCTAssertFalse(undoIsEnabled, \"Undo should not be enabled\")\n    }\n\n    /// Tests redo functionality\n    func testRedo() {\n        simulateTouch()\n        XCTAssert(touchDrawView.stack.count == 1, \"Should have one stroke\")\n        touchDrawView.undo()\n        XCTAssert(touchDrawView.stack.count == 0, \"Should not have any strokes\")\n        touchDrawView.redo()\n        XCTAssert(touchDrawView.stack.count == 1, \"Should have one stroke\")\n    }\n\n    /// Tests whether TouchDrawView enables redo after undoing a point\n    func testRedoEnabled() {\n        simulateTouch()\n        touchDrawView.undo()\n        XCTAssertTrue(redoIsEnabled, \"Redo should be enabled\")\n    }\n\n    /// Tests whether TouchDrawView disables redo when no more redos are available\n    func testRedoDisabled() {\n        simulateTouch()\n        touchDrawView.undo() // Redo is now enabled (covered in another test)\n        touchDrawView.redo()\n        XCTAssertFalse(redoIsEnabled, \"Redo should not be enabled\")\n    }\n\n    /// Tests that importing a stack triggers clearEnabled\n    func testImportStack() {\n        let stroke = Stroke()\n        stroke.points = [CGPoint(x: 0, y: 0)]\n        touchDrawView.importStack([stroke])\n        XCTAssertTrue(clearIsEnabled, \"Clear should be enabled after calling importStack\")\n    }\n\n    /// Tests that importing an empty stack does not trigger clearEnabled\n    func testImportEmptyStack() {\n        touchDrawView.importStack([])\n        XCTAssertFalse(clearIsEnabled, \"Clear should be not be enabled after calling importStack\")\n    }\n\n    /// Tests that you can draw a Stroke with no points\n    func testEmptyStroke() {\n        let stroke = Stroke()\n        touchDrawView.importStack([stroke])\n        XCTAssert(touchDrawView.stack.count == 1)\n    }\n\n    /// Tests that you can properly encode/decode a Stroke array\n    func testEncoder() {\n        let path = NSTemporaryDirectory() as NSString\n        let locToSave = path.appendingPathComponent(\"testEncoder\")\n\n        let points0 = [CGPoint(x: 1, y: 2)]\n        let settings0 = StrokeSettings()\n        settings0.color = CIColor(color: .blue)\n        settings0.width = 10.0\n        let stroke0 = Stroke(points: points0, settings: settings0)\n\n        let points1 = [CGPoint(x: 1, y: 2), CGPoint(x: 3, y: 4)]\n        let settings1 = StrokeSettings()\n        settings1.color = nil\n        settings1.width = 2.5\n        let stroke1 = Stroke(points: points1, settings: settings1)\n\n        // save Strokes\n        NSKeyedArchiver.archiveRootObject([stroke0, stroke1], toFile: locToSave)\n\n        // load Strokes\n        let data = NSKeyedUnarchiver.unarchiveObject(withFile: locToSave) as? [Stroke]\n\n        XCTAssertNotNil(data)\n        XCTAssertEqual(data!.count, 2)\n\n        XCTAssertEqual(data!.first!.points, points0)\n        XCTAssertEqual(data!.first?.settings.color?.alpha, settings0.color?.alpha)\n        XCTAssertEqual(data!.first?.settings.color?.red, settings0.color?.red)\n        XCTAssertEqual(data!.first?.settings.color?.green, settings0.color?.green)\n        XCTAssertEqual(data!.first?.settings.color?.blue, settings0.color?.blue)\n        XCTAssertEqual(data!.first?.settings.width, settings0.width)\n\n        XCTAssertEqual(data!.last!.points, points1)\n        XCTAssertEqual(data!.last!.settings.color, settings1.color)\n        XCTAssertEqual(data!.last!.settings.width, settings1.width)\n    }\n\n    /// Internal function used to simulate a touch\n    fileprivate func simulateTouch() {\n        var touches = Set<UITouch>()\n        touches.insert(UITouch())\n        touchDrawView.touchesBegan(touches, with: nil)\n        touchDrawView.touchesEnded(touches, with: nil)\n    }\n\n    // MARK: - TouchDrawViewDelegate\n\n    func undoEnabled() {\n        self.undoIsEnabled = true\n    }\n\n    func undoDisabled() {\n        self.undoIsEnabled = false\n    }\n\n    func redoEnabled() {\n        self.redoIsEnabled = true\n    }\n\n    func redoDisabled() {\n        self.redoIsEnabled = false\n    }\n\n    func clearEnabled() {\n        self.clearIsEnabled = true\n    }\n\n    func clearDisabled() {\n        self.clearIsEnabled = false\n    }\n\n}\n"
  },
  {
    "path": "install_swiftlint.sh",
    "content": "#!/bin/bash\n\n# Installs the SwiftLint package.\n# Tries to get the precompiled .pkg file from Github, but if that\n# fails just recompiles from source.\n\n# Source: https://alexplescan.com/posts/2016/03/03/setting-up-swiftlint-on-travis-ci/\n\nset -e\n\nSWIFTLINT_PKG_PATH=\"/tmp/SwiftLint.pkg\"\nSWIFTLINT_PKG_URL=\"https://github.com/realm/SwiftLint/releases/download/0.20.0/SwiftLint.pkg\"\n\nwget --output-document=$SWIFTLINT_PKG_PATH $SWIFTLINT_PKG_URL\n\nif [ -f $SWIFTLINT_PKG_PATH ]; then\n  echo \"SwiftLint package exists! Installing it...\"\n  sudo installer -pkg $SWIFTLINT_PKG_PATH -target /\nelse\n  echo \"SwiftLint package doesn't exist. Compiling from source...\" &&\n  git clone https://github.com/realm/SwiftLint.git /tmp/SwiftLint &&\n  cd /tmp/SwiftLint &&\n  git submodule update --init --recursive &&\n  sudo make install\nfi\n"
  }
]