From 1fe84f43493856a1c019e36192c505272a89b060 Mon Sep 17 00:00:00 2001 From: Wes Smith Date: Thu, 25 Aug 2022 12:56:46 -0400 Subject: [PATCH] Bump to 1.4.5 --- ButtonMerchant.podspec | 2 +- Source/Info.plist | 2 +- Source/Version/Version.generated.swift | 2 +- .../Version/VersionTests.generated.swift | 4 +- docs/history/1.4.5/Classes.html | 208 ++ .../history/1.4.5/Classes/ButtonMerchant.html | 561 ++++++ docs/history/1.4.5/Classes/ButtonProduct.html | 358 ++++ docs/history/1.4.5/Classes/Order.html | 345 ++++ .../history/1.4.5/Classes/Order/Customer.html | 215 +++ .../history/1.4.5/Classes/Order/LineItem.html | 350 ++++ docs/history/1.4.5/Enums.html | 204 ++ .../1.4.5/Enums/ButtonMerchantError.html | 179 ++ .../1.4.5/Enums/ConfigurationError.html | 184 ++ docs/history/1.4.5/Enums/NetworkError.html | 152 ++ docs/history/1.4.5/Protocols.html | 204 ++ docs/history/1.4.5/Protocols/Activity.html | 218 +++ .../Protocols/ButtonProductCompatible.html | 368 ++++ .../history/1.4.5/Protocols/Configurable.html | 154 ++ docs/history/1.4.5/Structs.html | 149 ++ docs/history/1.4.5/badge.svg | 28 + docs/history/1.4.5/css/highlight.css | 202 ++ docs/history/1.4.5/css/jazzy.css | 439 +++++ .../ButtonMerchant.docset/Contents/Info.plist | 20 + .../Contents/Resources/Documents/Classes.html | 208 ++ .../Documents/Classes/ButtonMerchant.html | 561 ++++++ .../Documents/Classes/ButtonProduct.html | 358 ++++ .../Resources/Documents/Classes/Order.html | 345 ++++ .../Documents/Classes/Order/Customer.html | 215 +++ .../Documents/Classes/Order/LineItem.html | 350 ++++ .../Contents/Resources/Documents/Enums.html | 204 ++ .../Documents/Enums/ButtonMerchantError.html | 179 ++ .../Documents/Enums/ConfigurationError.html | 184 ++ .../Documents/Enums/NetworkError.html | 152 ++ .../Resources/Documents/Protocols.html | 204 ++ .../Documents/Protocols/Activity.html | 218 +++ .../Protocols/ButtonProductCompatible.html | 368 ++++ .../Documents/Protocols/Configurable.html | 154 ++ .../Contents/Resources/Documents/Structs.html | 149 ++ .../Resources/Documents/css/highlight.css | 202 ++ .../Resources/Documents/css/jazzy.css | 439 +++++ .../Resources/Documents/img/carat.png | Bin 0 -> 274 bytes .../Contents/Resources/Documents/img/dash.png | Bin 0 -> 1338 bytes .../Resources/Documents/img/spinner.gif | Bin 0 -> 1849 bytes .../Contents/Resources/Documents/index.html | 156 ++ .../Contents/Resources/Documents/js/jazzy.js | 74 + .../Resources/Documents/js/jazzy.search.js | 74 + .../Resources/Documents/js/jquery.min.js | 2 + .../Resources/Documents/js/lunr.min.js | 6 + .../Documents/js/typeahead.jquery.js | 1694 +++++++++++++++++ .../Contents/Resources/Documents/search.json | 1 + .../Contents/Resources/docSet.dsidx | Bin 0 -> 28672 bytes docs/history/1.4.5/docsets/ButtonMerchant.tgz | Bin 0 -> 80680 bytes docs/history/1.4.5/img/carat.png | Bin 0 -> 274 bytes docs/history/1.4.5/img/dash.png | Bin 0 -> 1338 bytes docs/history/1.4.5/img/spinner.gif | Bin 0 -> 1849 bytes docs/history/1.4.5/index.html | 156 ++ docs/history/1.4.5/js/jazzy.js | 74 + docs/history/1.4.5/js/jazzy.search.js | 74 + docs/history/1.4.5/js/jquery.min.js | 2 + docs/history/1.4.5/js/lunr.min.js | 6 + docs/history/1.4.5/js/typeahead.jquery.js | 1694 +++++++++++++++++ docs/history/1.4.5/search.json | 1 + docs/history/1.4.5/undocumented.json | 26 + docs/latest | 2 +- fastlane/README.md | 62 +- 65 files changed, 13114 insertions(+), 28 deletions(-) create mode 100644 docs/history/1.4.5/Classes.html create mode 100644 docs/history/1.4.5/Classes/ButtonMerchant.html create mode 100644 docs/history/1.4.5/Classes/ButtonProduct.html create mode 100644 docs/history/1.4.5/Classes/Order.html create mode 100644 docs/history/1.4.5/Classes/Order/Customer.html create mode 100644 docs/history/1.4.5/Classes/Order/LineItem.html create mode 100644 docs/history/1.4.5/Enums.html create mode 100644 docs/history/1.4.5/Enums/ButtonMerchantError.html create mode 100644 docs/history/1.4.5/Enums/ConfigurationError.html create mode 100644 docs/history/1.4.5/Enums/NetworkError.html create mode 100644 docs/history/1.4.5/Protocols.html create mode 100644 docs/history/1.4.5/Protocols/Activity.html create mode 100644 docs/history/1.4.5/Protocols/ButtonProductCompatible.html create mode 100644 docs/history/1.4.5/Protocols/Configurable.html create mode 100644 docs/history/1.4.5/Structs.html create mode 100644 docs/history/1.4.5/badge.svg create mode 100644 docs/history/1.4.5/css/highlight.css create mode 100644 docs/history/1.4.5/css/jazzy.css create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Info.plist create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css create mode 100755 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/carat.png create mode 100755 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/dash.png create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/spinner.gif create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html create mode 100755 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/lunr.min.js create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/docSet.dsidx create mode 100644 docs/history/1.4.5/docsets/ButtonMerchant.tgz create mode 100755 docs/history/1.4.5/img/carat.png create mode 100755 docs/history/1.4.5/img/dash.png create mode 100644 docs/history/1.4.5/img/spinner.gif create mode 100644 docs/history/1.4.5/index.html create mode 100755 docs/history/1.4.5/js/jazzy.js create mode 100644 docs/history/1.4.5/js/jazzy.search.js create mode 100644 docs/history/1.4.5/js/jquery.min.js create mode 100644 docs/history/1.4.5/js/lunr.min.js create mode 100644 docs/history/1.4.5/js/typeahead.jquery.js create mode 100644 docs/history/1.4.5/search.json create mode 100644 docs/history/1.4.5/undocumented.json diff --git a/ButtonMerchant.podspec b/ButtonMerchant.podspec index a8d27ed..68c4ed1 100644 --- a/ButtonMerchant.podspec +++ b/ButtonMerchant.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'ButtonMerchant' - s.version = '1.4.4' + s.version = '1.4.5' s.summary = 'An open source client library for Button merchants.' s.description = <<-DESC The Button Merchant library is a light-weight, open-source method diff --git a/Source/Info.plist b/Source/Info.plist index 7c883fd..b1a8360 100644 --- a/Source/Info.plist +++ b/Source/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.4 + 1.4.5 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Source/Version/Version.generated.swift b/Source/Version/Version.generated.swift index 2f2c17f..c99ce27 100644 --- a/Source/Version/Version.generated.swift +++ b/Source/Version/Version.generated.swift @@ -35,5 +35,5 @@ public struct Version { /** Library version string. */ - static let stringValue = "1.4.4" + static let stringValue = "1.4.5" } diff --git a/Tests/UnitTests/Version/VersionTests.generated.swift b/Tests/UnitTests/Version/VersionTests.generated.swift index 41ee53e..0600ff5 100644 --- a/Tests/UnitTests/Version/VersionTests.generated.swift +++ b/Tests/UnitTests/Version/VersionTests.generated.swift @@ -30,11 +30,11 @@ import XCTest class VersionTests: XCTestCase { func testLibraryVersion() { - XCTAssertEqual(Version.stringValue, "1.4.4") + XCTAssertEqual(Version.stringValue, "1.4.5") } func testPlistVersion() { let libraryBundle = Bundle(for: ButtonMerchant.self) - XCTAssertEqual(libraryBundle.infoDictionary!["CFBundleShortVersionString"] as? String, "1.4.4") + XCTAssertEqual(libraryBundle.infoDictionary!["CFBundleShortVersionString"] as? String, "1.4.5") } } diff --git a/docs/history/1.4.5/Classes.html b/docs/history/1.4.5/Classes.html new file mode 100644 index 0000000..963ebc9 --- /dev/null +++ b/docs/history/1.4.5/Classes.html @@ -0,0 +1,208 @@ + + + + Classes Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchant + +
    +
    +
    +
    +
    +
    +

    ButtonMerchant is the main entry point to the library.

    + +

    To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +final public class ButtonMerchant : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ButtonProduct + +
    +
    +
    +
    +
    +
    +

    A concrete implementation of the ButtonProductCompatible protocol.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    final public class ButtonProduct : NSObject, ButtonProductCompatible, Codable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Order + +
    +
    +
    +
    +
    +
    +

    Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +@objc(BTNOrder)
    +final public class Order : NSObject, Codable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Classes/ButtonMerchant.html b/docs/history/1.4.5/Classes/ButtonMerchant.html new file mode 100644 index 0000000..ab03e95 --- /dev/null +++ b/docs/history/1.4.5/Classes/ButtonMerchant.html @@ -0,0 +1,561 @@ + + + + ButtonMerchant Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonMerchant

+
+
+ +
@objcMembers
+final public class ButtonMerchant : NSObject
+ +
+
+

ButtonMerchant is the main entry point to the library.

+ +

To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

+ +
+
+
+
    +
  • +
    + + + + attributionToken + +
    +
    +
    +
    +
    +
    +

    The last tracked attributionToken from an inbound Button attributed URL.

    +
    +

    Attention

    + For attribution to work correctly, you must: + +
      +
    • Always access this token directly—never cache it.
    • +
    • Never manage the lifecycle of this token—Button manages the token validity window server-side.
    • +
    • Always include this value when reporting orders to your order API
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static var attributionToken: String? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Configures ButtonMerchant with your application Id.

    +
    +

    Note

    +

    Get your application Id from from the Button Dashboard

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func configure(applicationId: String)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + applicationId + + +
    +

    Your application Id (required)

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + trackIncomingURL(_:) + +
    +
    +
    +
    +
    +
    +

    Checks the passed URL for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    To correctly attribute customers, you must call this method with every +incoming url and userActivity from the following UIApplicationDelegate methods:

    + +
      +
    • application(_:open:options:)

    • +
    • application(_:userActivity:restorationHandler:)

    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func trackIncomingURL(_ url: URL)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + url + + +
    +

    A URL that has entered your app from a third party source.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    To correctly attribute customers, you must call this method with every +incoming userActivity from the following UIApplicationDelegate method:

    + +
      +
    • application(_:userActivity:restorationHandler:)

    • +
    • userActivity: A NSUserActivity with which your app has been continued.

    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func trackIncomingUserActivity(_ userActivity: NSUserActivity)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks to see if the user visited a url prior to installing your app.

    + +

    If a url is found, your completion handler will be called with the url and you are responsible +for navigating the user to the relevant content in your app. If a url is not found or an error occurs, your +completion handler will be called without a url and you can continue with your normal launch sequence.

    +
    +

    Attention

    +

    This method checks for a post-install url exactly one time after a user has installed your app. +Subsequent calls will result in your completion handler being called without a url. You do not need to wait +for the completion handler before continuing with your normal launch sequence but you should be prepared +to handle a post-install url is one is found. All subsequent incoming urls will be routed to your +UIApplicationDelegate as usual.

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func handlePostInstallURL(_ completion: @escaping (URL?, Error?) -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + completion + + +
    +

    A completion block taking an optional url and optional error.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Reports an order to Button.

    + +

    See also: Reporting Orders to Button +(docs)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func reportOrder(_ order: Order, completion: ((Error?) -> Void)? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + order + + +
    +

    Your order object to be reported.

    +
    +
    + + completion + + +
    +

    An optional completion block taking an optional error.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + clearAllData() + +
    +
    +
    +
    +
    +
    +

    Discards the current session and all persisted data.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func clearAllData()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + features + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static var features: Configurable { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + activity + +
    +
    +
    +
    +
    +
    +

    An interface through which user activity can be reported.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static var activity: Activity { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Deprecations +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Deprecated.

    + +

    This method is deprecated and will be removed in a future version. It is safe to remove your usage of this method.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "No longer supported. You can safely remove your usage of this method.")
    +@objc
    +public static func trackOrder(_ order: Order, completion: ((Error?) -> Void)? = nil)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Classes/ButtonProduct.html b/docs/history/1.4.5/Classes/ButtonProduct.html new file mode 100644 index 0000000..1b650aa --- /dev/null +++ b/docs/history/1.4.5/Classes/ButtonProduct.html @@ -0,0 +1,358 @@ + + + + ButtonProduct Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProduct

+
+
+ +
final public class ButtonProduct : NSObject, ButtonProductCompatible, Codable
+ +
+
+

A concrete implementation of the ButtonProductCompatible protocol.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var id: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var upc: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var categories: [String]?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currency: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var value: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var quantity: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var url: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributes: [String : String]?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Classes/Order.html b/docs/history/1.4.5/Classes/Order.html new file mode 100644 index 0000000..d8c7af8 --- /dev/null +++ b/docs/history/1.4.5/Classes/Order.html @@ -0,0 +1,345 @@ + + + + Order Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Order

+
+
+ +
@objcMembers
+@objc(BTNOrder)
+final public class Order : NSObject, Codable
+ +
+
+

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

+ +
+
+
+
    +
  • +
    + + + + currencyCode + +
    +
    +
    +
    +
    +
    +

    The ISO 4217 currency code (default is USD).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currencyCode: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customerOrderId + +
    +
    +
    +
    +
    +
    +

    The customer-facing order id.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customerOrderId: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customer + +
    +
    +
    +
    +
    +
    +

    The customer related to the order

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customer: Customer?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an order object with the passed parameters.

    + +
      +
    • id: The order identifier (required).
    • +
    • purchaseDate: The date of the purchase for the order.
    • +
    • lineItems: A list of the line item details that comprise the order.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public init(id: String, purchaseDate: Date, lineItems: [LineItem])
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Customer + +
    +
    +
    +
    +
    +
    +

    Represents a customer in the order.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +@objc(BTNCustomer)
    +final public class Customer : NSObject, Codable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LineItem + +
    +
    +
    +
    +
    +
    +

    Represents a line item in the order.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +@objc(LineItem)
    +final public class LineItem : NSObject, Codable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Deprecations +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Deprecated.

    + +

    If you’re migrating to client side order reporting, please use init(id:purchaseDate:lineItems:) instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "Use init(id:purchaseDate:lineItems:﹚ instead")
    +@objc
    +public init(id: String, amount: Int64 = 0, currencyCode: String = "USD")
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Classes/Order/Customer.html b/docs/history/1.4.5/Classes/Order/Customer.html new file mode 100644 index 0000000..7ba8fad --- /dev/null +++ b/docs/history/1.4.5/Classes/Order/Customer.html @@ -0,0 +1,215 @@ + + + + Customer Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Customer

+
+
+ +
@objcMembers
+@objc(BTNCustomer)
+final public class Customer : NSObject, Codable
+ +
+
+

Represents a customer in the order.

+ +
+
+
+
    +
  • +
    + + + + email + +
    +
    +
    +
    +
    +
    +

    The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

    + +

    Note: The value of the e-mail address must be converted to lowercase before +computing the hash. The hash itself may use uppercase or lowercase hex characters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var email: String? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isNew + +
    +
    +
    +
    +
    +
    +

    A flag indicating whether the customer is new (or not).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isNew: Bool?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(id:) + +
    +
    +
    +
    +
    +
    +

    Initializes a customer object with the passed parameters.

    + +
      +
    • id: The id for your customer (required).
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public init(id: String)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Classes/Order/LineItem.html b/docs/history/1.4.5/Classes/Order/LineItem.html new file mode 100644 index 0000000..2d83c1f --- /dev/null +++ b/docs/history/1.4.5/Classes/Order/LineItem.html @@ -0,0 +1,350 @@ + + + + LineItem Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LineItem

+
+
+ +
@objcMembers
+@objc(LineItem)
+final public class LineItem : NSObject, Codable
+ +
+
+

Represents a line item in the order.

+ +
+
+
+
    +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The number of unique units represented by this line item (default is 1).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var quantity: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemDescription + +
    +
    +
    +
    +
    +
    +

    Text describing the line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var itemDescription: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sku + +
    +
    +
    +
    +
    +
    +

    The Stock Keeping Unit of the line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var sku: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The Universal Product Code of the line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var upc: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + category + +
    +
    +
    +
    +
    +
    +

    The category of the line item. +An ordered list of strings, starting with the topmost (or most general) category.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var category: [String]?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    A key/value store for strings to specify additional information about a line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributes: [String : String]?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(id:total:) + +
    +
    +
    +
    +
    +
    +

    An array of the line item details that comprise the order

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public init(id: String, total: Int64)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + id + + +
    +

    The unique identifier for this line item, within the scope of this order. + This must be unique across all line-items within the order. + We suggest using the SKU or UPC of the product. (required)

    +
    +
    + + total + + +
    +

    The total price of all items bought in a particular line item. (required)

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Enums.html b/docs/history/1.4.5/Enums.html new file mode 100644 index 0000000..f06ef86 --- /dev/null +++ b/docs/history/1.4.5/Enums.html @@ -0,0 +1,204 @@ + + + + Enumerations Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchantError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Errors.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ButtonMerchantError : Error
    +
    extension ButtonMerchantError: Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ConfigurationError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ConfigurationError : Error
    +
    extension ConfigurationError: Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + NetworkError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum NetworkError : Error
    +
    extension NetworkError: Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Enums/ButtonMerchantError.html b/docs/history/1.4.5/Enums/ButtonMerchantError.html new file mode 100644 index 0000000..816be35 --- /dev/null +++ b/docs/history/1.4.5/Enums/ButtonMerchantError.html @@ -0,0 +1,179 @@ + + + + ButtonMerchantError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonMerchantError

+
+
+ +
public enum ButtonMerchantError : Error
+
extension ButtonMerchantError: Equatable
+ +
+
+

Button Merchant Library Errors.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case trackOrderDeprecationError
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + noEventsError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case noEventsError
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Enums/ConfigurationError.html b/docs/history/1.4.5/Enums/ConfigurationError.html new file mode 100644 index 0000000..30793eb --- /dev/null +++ b/docs/history/1.4.5/Enums/ConfigurationError.html @@ -0,0 +1,184 @@ + + + + ConfigurationError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ConfigurationError

+
+
+ +
public enum ConfigurationError : Error
+
extension ConfigurationError: Equatable
+ +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+
    +
  • +
    + + + + noApplicationId + +
    +
    +
    +
    +
    +
    +

    Library is not configured with an applicationId

    +
    +

    Note

    + Get your application Id from from the Button Dashboard + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case noApplicationId
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case invalidApplicationId(appicationId: String)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Enums/NetworkError.html b/docs/history/1.4.5/Enums/NetworkError.html new file mode 100644 index 0000000..92c2a71 --- /dev/null +++ b/docs/history/1.4.5/Enums/NetworkError.html @@ -0,0 +1,152 @@ + + + + NetworkError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

NetworkError

+
+
+ +
public enum NetworkError : Error
+
extension NetworkError: Equatable
+ +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+
    +
  • +
    + + + + unknown + +
    +
    +
    +
    +
    +
    +

    There was an unknown network error.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unknown
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Protocols.html b/docs/history/1.4.5/Protocols.html new file mode 100644 index 0000000..ac6bdff --- /dev/null +++ b/docs/history/1.4.5/Protocols.html @@ -0,0 +1,204 @@ + + + + Protocols Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + Activity + +
    +
    +
    +
    +
    +
    +

    A protocol through which user activities can be reported.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public protocol Activity
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A protocol that defines the product properties that may be provided when reporting user activity.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public protocol ButtonProductCompatible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Configurable + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public protocol Configurable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Protocols/Activity.html b/docs/history/1.4.5/Protocols/Activity.html new file mode 100644 index 0000000..36df212 --- /dev/null +++ b/docs/history/1.4.5/Protocols/Activity.html @@ -0,0 +1,218 @@ + + + + Activity Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Activity

+
+
+ +
@objc
+public protocol Activity
+ +
+
+

A protocol through which user activities can be reported.

+ +
+
+
+
    +
  • +
    + + + + productViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user has viewed a product.

    + +
      +
    • product: The product being viewed.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func productViewed(_ product: ButtonProductCompatible?)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Report that the user added a product to their cart.

    + +
      +
    • product: The product added to the cart.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func productAddedToCart(_ product: ButtonProductCompatible?)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cartViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user viewed their cart.

    + +
      +
    • products: The list of products in the cart.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func cartViewed(_ products: [ButtonProductCompatible]?)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Protocols/ButtonProductCompatible.html b/docs/history/1.4.5/Protocols/ButtonProductCompatible.html new file mode 100644 index 0000000..d88e6a2 --- /dev/null +++ b/docs/history/1.4.5/Protocols/ButtonProductCompatible.html @@ -0,0 +1,368 @@ + + + + ButtonProductCompatible Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProductCompatible

+
+
+ +
@objc
+public protocol ButtonProductCompatible
+ +
+
+

A protocol that defines the product properties that may be provided when reporting user activity.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    +

    The product identifier.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var id: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The UPC (Universal Product Code) of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var upc: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    +

    A flat array of the names of the categories to which the product belongs.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var categories: [String]? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    The name of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var name: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    +

    The ISO-4217 currency code in which the product’s value is reported.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var currency: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    +

    The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var value: Int { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The quantity of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var quantity: Int { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    +

    The URL of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var url: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Any additional attributes to be included with the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var attributes: [String : String]? { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Protocols/Configurable.html b/docs/history/1.4.5/Protocols/Configurable.html new file mode 100644 index 0000000..11ff587 --- /dev/null +++ b/docs/history/1.4.5/Protocols/Configurable.html @@ -0,0 +1,154 @@ + + + + Configurable Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Configurable

+
+
+ +
@objc
+public protocol Configurable
+ +
+
+

An interface through which library features can be enabled/disabled.

+ +
+
+
+
    +
  • +
    + + + + includesIFA + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the library will attach IFA to outgoing requests.

    + +

    The default value is true. If set to false, or if the user has limited IFA usage in their device settings, the IFA will not be attached.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var includesIFA: Bool { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/Structs.html b/docs/history/1.4.5/Structs.html new file mode 100644 index 0000000..62a3dd2 --- /dev/null +++ b/docs/history/1.4.5/Structs.html @@ -0,0 +1,149 @@ + + + + Structures Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+
    +
  • +
    + + + + Version + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Version.

    +
    +

    Note

    + The Button Merchant Library follows Semantic Versioning + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Version
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/badge.svg b/docs/history/1.4.5/badge.svg new file mode 100644 index 0000000..19d671e --- /dev/null +++ b/docs/history/1.4.5/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 95% + + + 95% + + + diff --git a/docs/history/1.4.5/css/highlight.css b/docs/history/1.4.5/css/highlight.css new file mode 100644 index 0000000..c170357 --- /dev/null +++ b/docs/history/1.4.5/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docs/history/1.4.5/css/jazzy.css b/docs/history/1.4.5/css/jazzy.css new file mode 100644 index 0000000..2e38713 --- /dev/null +++ b/docs/history/1.4.5/css/jazzy.css @@ -0,0 +1,439 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +pre > code { + padding: 0; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 32px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -3px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 21px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 2; + margin-top: 32px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + background-color: inherit; + padding: inherit; + color: inherit; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + margin-top: 10px; + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 35px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 20px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +form[role=search] { + float: right; } + form[role=search] input { + font: Helvetica, freesans, Arial, sans-serif; + margin-top: 6px; + font-size: 13px; + line-height: 20px; + padding: 0px 10px; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fff; + color: #333; + border: 1px solid #e2e2e2; + z-index: 4; } + form[role=search] .tt-highlight { + font-weight: bold; } + form[role=search] .tt-suggestion { + font: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + form[role=search] .tt-suggestion:hover, + form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, + form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Info.plist b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Info.plist new file mode 100644 index 0000000..49cb17c --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.buttonmerchant + CFBundleName + ButtonMerchant + DocSetPlatformFamily + buttonmerchant + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html new file mode 100644 index 0000000..963ebc9 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html @@ -0,0 +1,208 @@ + + + + Classes Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchant + +
    +
    +
    +
    +
    +
    +

    ButtonMerchant is the main entry point to the library.

    + +

    To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +final public class ButtonMerchant : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ButtonProduct + +
    +
    +
    +
    +
    +
    +

    A concrete implementation of the ButtonProductCompatible protocol.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    final public class ButtonProduct : NSObject, ButtonProductCompatible, Codable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Order + +
    +
    +
    +
    +
    +
    +

    Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +@objc(BTNOrder)
    +final public class Order : NSObject, Codable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html new file mode 100644 index 0000000..ab03e95 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html @@ -0,0 +1,561 @@ + + + + ButtonMerchant Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonMerchant

+
+
+ +
@objcMembers
+final public class ButtonMerchant : NSObject
+ +
+
+

ButtonMerchant is the main entry point to the library.

+ +

To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

+ +
+
+
+
    +
  • +
    + + + + attributionToken + +
    +
    +
    +
    +
    +
    +

    The last tracked attributionToken from an inbound Button attributed URL.

    +
    +

    Attention

    + For attribution to work correctly, you must: + +
      +
    • Always access this token directly—never cache it.
    • +
    • Never manage the lifecycle of this token—Button manages the token validity window server-side.
    • +
    • Always include this value when reporting orders to your order API
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static var attributionToken: String? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Configures ButtonMerchant with your application Id.

    +
    +

    Note

    +

    Get your application Id from from the Button Dashboard

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func configure(applicationId: String)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + applicationId + + +
    +

    Your application Id (required)

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + trackIncomingURL(_:) + +
    +
    +
    +
    +
    +
    +

    Checks the passed URL for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    To correctly attribute customers, you must call this method with every +incoming url and userActivity from the following UIApplicationDelegate methods:

    + +
      +
    • application(_:open:options:)

    • +
    • application(_:userActivity:restorationHandler:)

    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func trackIncomingURL(_ url: URL)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + url + + +
    +

    A URL that has entered your app from a third party source.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    To correctly attribute customers, you must call this method with every +incoming userActivity from the following UIApplicationDelegate method:

    + +
      +
    • application(_:userActivity:restorationHandler:)

    • +
    • userActivity: A NSUserActivity with which your app has been continued.

    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func trackIncomingUserActivity(_ userActivity: NSUserActivity)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks to see if the user visited a url prior to installing your app.

    + +

    If a url is found, your completion handler will be called with the url and you are responsible +for navigating the user to the relevant content in your app. If a url is not found or an error occurs, your +completion handler will be called without a url and you can continue with your normal launch sequence.

    +
    +

    Attention

    +

    This method checks for a post-install url exactly one time after a user has installed your app. +Subsequent calls will result in your completion handler being called without a url. You do not need to wait +for the completion handler before continuing with your normal launch sequence but you should be prepared +to handle a post-install url is one is found. All subsequent incoming urls will be routed to your +UIApplicationDelegate as usual.

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func handlePostInstallURL(_ completion: @escaping (URL?, Error?) -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + completion + + +
    +

    A completion block taking an optional url and optional error.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Reports an order to Button.

    + +

    See also: Reporting Orders to Button +(docs)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func reportOrder(_ order: Order, completion: ((Error?) -> Void)? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + order + + +
    +

    Your order object to be reported.

    +
    +
    + + completion + + +
    +

    An optional completion block taking an optional error.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + clearAllData() + +
    +
    +
    +
    +
    +
    +

    Discards the current session and all persisted data.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static func clearAllData()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + features + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static var features: Configurable { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + activity + +
    +
    +
    +
    +
    +
    +

    An interface through which user activity can be reported.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public static var activity: Activity { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Deprecations +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Deprecated.

    + +

    This method is deprecated and will be removed in a future version. It is safe to remove your usage of this method.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "No longer supported. You can safely remove your usage of this method.")
    +@objc
    +public static func trackOrder(_ order: Order, completion: ((Error?) -> Void)? = nil)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html new file mode 100644 index 0000000..1b650aa --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html @@ -0,0 +1,358 @@ + + + + ButtonProduct Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProduct

+
+
+ +
final public class ButtonProduct : NSObject, ButtonProductCompatible, Codable
+ +
+
+

A concrete implementation of the ButtonProductCompatible protocol.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var id: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var upc: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var categories: [String]?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currency: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var value: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var quantity: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var url: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributes: [String : String]?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html new file mode 100644 index 0000000..d8c7af8 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html @@ -0,0 +1,345 @@ + + + + Order Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Order

+
+
+ +
@objcMembers
+@objc(BTNOrder)
+final public class Order : NSObject, Codable
+ +
+
+

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

+ +
+
+
+
    +
  • +
    + + + + currencyCode + +
    +
    +
    +
    +
    +
    +

    The ISO 4217 currency code (default is USD).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currencyCode: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customerOrderId + +
    +
    +
    +
    +
    +
    +

    The customer-facing order id.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customerOrderId: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + customer + +
    +
    +
    +
    +
    +
    +

    The customer related to the order

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var customer: Customer?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an order object with the passed parameters.

    + +
      +
    • id: The order identifier (required).
    • +
    • purchaseDate: The date of the purchase for the order.
    • +
    • lineItems: A list of the line item details that comprise the order.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public init(id: String, purchaseDate: Date, lineItems: [LineItem])
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Customer + +
    +
    +
    +
    +
    +
    +

    Represents a customer in the order.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +@objc(BTNCustomer)
    +final public class Customer : NSObject, Codable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LineItem + +
    +
    +
    +
    +
    +
    +

    Represents a line item in the order.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objcMembers
    +@objc(LineItem)
    +final public class LineItem : NSObject, Codable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + +
+ +

Deprecations +

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Deprecated.

    + +

    If you’re migrating to client side order reporting, please use init(id:purchaseDate:lineItems:) instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "Use init(id:purchaseDate:lineItems:﹚ instead")
    +@objc
    +public init(id: String, amount: Int64 = 0, currencyCode: String = "USD")
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html new file mode 100644 index 0000000..7ba8fad --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html @@ -0,0 +1,215 @@ + + + + Customer Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Customer

+
+
+ +
@objcMembers
+@objc(BTNCustomer)
+final public class Customer : NSObject, Codable
+ +
+
+

Represents a customer in the order.

+ +
+
+
+
    +
  • +
    + + + + email + +
    +
    +
    +
    +
    +
    +

    The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

    + +

    Note: The value of the e-mail address must be converted to lowercase before +computing the hash. The hash itself may use uppercase or lowercase hex characters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var email: String? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isNew + +
    +
    +
    +
    +
    +
    +

    A flag indicating whether the customer is new (or not).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isNew: Bool?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(id:) + +
    +
    +
    +
    +
    +
    +

    Initializes a customer object with the passed parameters.

    + +
      +
    • id: The id for your customer (required).
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public init(id: String)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html new file mode 100644 index 0000000..2d83c1f --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html @@ -0,0 +1,350 @@ + + + + LineItem Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LineItem

+
+
+ +
@objcMembers
+@objc(LineItem)
+final public class LineItem : NSObject, Codable
+ +
+
+

Represents a line item in the order.

+ +
+
+
+
    +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The number of unique units represented by this line item (default is 1).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var quantity: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemDescription + +
    +
    +
    +
    +
    +
    +

    Text describing the line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var itemDescription: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sku + +
    +
    +
    +
    +
    +
    +

    The Stock Keeping Unit of the line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var sku: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The Universal Product Code of the line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var upc: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + category + +
    +
    +
    +
    +
    +
    +

    The category of the line item. +An ordered list of strings, starting with the topmost (or most general) category.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var category: [String]?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    A key/value store for strings to specify additional information about a line item.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributes: [String : String]?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(id:total:) + +
    +
    +
    +
    +
    +
    +

    An array of the line item details that comprise the order

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public init(id: String, total: Int64)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + id + + +
    +

    The unique identifier for this line item, within the scope of this order. + This must be unique across all line-items within the order. + We suggest using the SKU or UPC of the product. (required)

    +
    +
    + + total + + +
    +

    The total price of all items bought in a particular line item. (required)

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 0000000..f06ef86 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,204 @@ + + + + Enumerations Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchantError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Errors.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ButtonMerchantError : Error
    +
    extension ButtonMerchantError: Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ConfigurationError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ConfigurationError : Error
    +
    extension ConfigurationError: Equatable
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + NetworkError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum NetworkError : Error
    +
    extension NetworkError: Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html new file mode 100644 index 0000000..816be35 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html @@ -0,0 +1,179 @@ + + + + ButtonMerchantError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonMerchantError

+
+
+ +
public enum ButtonMerchantError : Error
+
extension ButtonMerchantError: Equatable
+ +
+
+

Button Merchant Library Errors.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case trackOrderDeprecationError
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + noEventsError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case noEventsError
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html new file mode 100644 index 0000000..30793eb --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html @@ -0,0 +1,184 @@ + + + + ConfigurationError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ConfigurationError

+
+
+ +
public enum ConfigurationError : Error
+
extension ConfigurationError: Equatable
+ +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+
    +
  • +
    + + + + noApplicationId + +
    +
    +
    +
    +
    +
    +

    Library is not configured with an applicationId

    +
    +

    Note

    + Get your application Id from from the Button Dashboard + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case noApplicationId
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case invalidApplicationId(appicationId: String)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html new file mode 100644 index 0000000..92c2a71 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html @@ -0,0 +1,152 @@ + + + + NetworkError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

NetworkError

+
+
+ +
public enum NetworkError : Error
+
extension NetworkError: Equatable
+ +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+
    +
  • +
    + + + + unknown + +
    +
    +
    +
    +
    +
    +

    There was an unknown network error.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case unknown
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 0000000..ac6bdff --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,204 @@ + + + + Protocols Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + Activity + +
    +
    +
    +
    +
    +
    +

    A protocol through which user activities can be reported.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public protocol Activity
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A protocol that defines the product properties that may be provided when reporting user activity.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public protocol ButtonProductCompatible
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Configurable + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +public protocol Configurable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html new file mode 100644 index 0000000..36df212 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html @@ -0,0 +1,218 @@ + + + + Activity Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Activity

+
+
+ +
@objc
+public protocol Activity
+ +
+
+

A protocol through which user activities can be reported.

+ +
+
+
+
    +
  • +
    + + + + productViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user has viewed a product.

    + +
      +
    • product: The product being viewed.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func productViewed(_ product: ButtonProductCompatible?)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Report that the user added a product to their cart.

    + +
      +
    • product: The product added to the cart.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func productAddedToCart(_ product: ButtonProductCompatible?)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cartViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user viewed their cart.

    + +
      +
    • products: The list of products in the cart.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func cartViewed(_ products: [ButtonProductCompatible]?)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html new file mode 100644 index 0000000..d88e6a2 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html @@ -0,0 +1,368 @@ + + + + ButtonProductCompatible Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProductCompatible

+
+
+ +
@objc
+public protocol ButtonProductCompatible
+ +
+
+

A protocol that defines the product properties that may be provided when reporting user activity.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    +

    The product identifier.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var id: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The UPC (Universal Product Code) of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var upc: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    +

    A flat array of the names of the categories to which the product belongs.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var categories: [String]? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    The name of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var name: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    +

    The ISO-4217 currency code in which the product’s value is reported.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var currency: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    +

    The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var value: Int { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The quantity of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var quantity: Int { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    +

    The URL of the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var url: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Any additional attributes to be included with the product.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var attributes: [String : String]? { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html new file mode 100644 index 0000000..11ff587 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html @@ -0,0 +1,154 @@ + + + + Configurable Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Configurable

+
+
+ +
@objc
+public protocol Configurable
+ +
+
+

An interface through which library features can be enabled/disabled.

+ +
+
+
+
    +
  • +
    + + + + includesIFA + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the library will attach IFA to outgoing requests.

    + +

    The default value is true. If set to false, or if the user has limited IFA usage in their device settings, the IFA will not be attached.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var includesIFA: Bool { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 0000000..62a3dd2 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,149 @@ + + + + Structures Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+
    +
  • +
    + + + + Version + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Version.

    +
    +

    Note

    + The Button Merchant Library follows Semantic Versioning + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct Version
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 0000000..c170357 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 0000000..2e38713 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,439 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +pre > code { + padding: 0; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 32px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -3px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 21px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 2; + margin-top: 32px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + background-color: inherit; + padding: inherit; + color: inherit; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + margin-top: 10px; + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 35px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 20px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +form[role=search] { + float: right; } + form[role=search] input { + font: Helvetica, freesans, Arial, sans-serif; + margin-top: 6px; + font-size: 13px; + line-height: 20px; + padding: 0px 10px; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fff; + color: #333; + border: 1px solid #e2e2e2; + z-index: 4; } + form[role=search] .tt-highlight { + font-weight: bold; } + form[role=search] .tt-suggestion { + font: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + form[role=search] .tt-suggestion:hover, + form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, + form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/carat.png b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/dash.png b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html new file mode 100644 index 0000000..7277a71 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,156 @@ + + + + ButtonMerchant Reference + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Button Merchant Library

+ +

License: MIT +Coverage Status +Version +Platform

+

Documentation

+ +

Documentation for the Merchant Library can be found on the Button Developer site.

+ +

Reference docs are also available.

+

Example

+ +

To run the example project, clone the repo, run pod install, and run the Example scheme.

+

Installation

+ +

ButtonMerchant is available through CocoaPods and Carthage.

+

Swift Pacakage Manager

+ +

In Xcode, navigate to File → Swift Packages → Add Package Dependency

+ +

Enter the package repository URL:

+ +

https://github.com/button/button-merchant-ios

+ +

Note: Ensure to select ‘Up to Next Major’ version when prompted.

+

CocoaPods

+ +

Add this line to your Podfile:

+
pod 'ButtonMerchant'
+
+

Carthage

+ +

Or, add this to your Cartfile:

+
github "button/button-merchant-ios" ~> 1.0
+
+

Author

+ +

Button, Inc.

+

License

+ +

ButtonMerchant is available under the MIT license. See the LICENSE file for more info.

+

Contributing

+ +

We are looking forward to accepting your contributions to this project very soon!

+ +

Until then, if you have something you would like to contribute, please get in touch.

+ +
+
+ +
+
+ + diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 0000000..1984416 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js new file mode 100644 index 0000000..359cdbb --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js new file mode 100644 index 0000000..3a2d2ab --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json new file mode 100644 index 0000000..ff54950 --- /dev/null +++ b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json @@ -0,0 +1 @@ +{"Structs.html#/s:14ButtonMerchant7VersionV":{"name":"Version","abstract":"

Button Merchant Library Version.

"},"Protocols/Configurable.html#/c:@M@ButtonMerchant@objc(pl)Configurable(py)includesIFA":{"name":"includesIFA","abstract":"

Indicates whether or not the library will attach IFA to outgoing requests.

","parent_name":"Configurable"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)id":{"name":"id","abstract":"

The product identifier.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)upc":{"name":"upc","abstract":"

The UPC (Universal Product Code) of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)categories":{"name":"categories","abstract":"

A flat array of the names of the categories to which the product belongs.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)name":{"name":"name","abstract":"

The name of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)currency":{"name":"currency","abstract":"

The ISO-4217 currency code in which the product’s value is reported.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)value":{"name":"value","abstract":"

The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)quantity":{"name":"quantity","abstract":"

The quantity of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)url":{"name":"url","abstract":"

The URL of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)attributes":{"name":"attributes","abstract":"

Any additional attributes to be included with the product.

","parent_name":"ButtonProductCompatible"},"Protocols/Activity.html#/c:@M@ButtonMerchant@objc(pl)Activity(im)productViewed:":{"name":"productViewed(_:)","abstract":"

Report that the user has viewed a product.

","parent_name":"Activity"},"Protocols/Activity.html#/c:@M@ButtonMerchant@objc(pl)Activity(im)productAddedToCart:":{"name":"productAddedToCart(_:)","abstract":"

Report that the user added a product to their cart.

","parent_name":"Activity"},"Protocols/Activity.html#/c:@M@ButtonMerchant@objc(pl)Activity(im)cartViewed:":{"name":"cartViewed(_:)","abstract":"

Report that the user viewed their cart.

","parent_name":"Activity"},"Protocols/Activity.html":{"name":"Activity","abstract":"

A protocol through which user activities can be reported.

"},"Protocols/ButtonProductCompatible.html":{"name":"ButtonProductCompatible","abstract":"

A protocol that defines the product properties that may be provided when reporting user activity.

"},"Protocols/Configurable.html":{"name":"Configurable","abstract":"

An interface through which library features can be enabled/disabled.

"},"Enums/NetworkError.html#/s:14ButtonMerchant12NetworkErrorO7unknownyA2CmF":{"name":"unknown","abstract":"

There was an unknown network error.

","parent_name":"NetworkError"},"Enums/ConfigurationError.html#/s:14ButtonMerchant18ConfigurationErrorO15noApplicationIdyA2CmF":{"name":"noApplicationId","abstract":"

Library is not configured with an applicationId

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:14ButtonMerchant18ConfigurationErrorO20invalidApplicationIdyACSS_tcACmF":{"name":"invalidApplicationId(appicationId:)","abstract":"

Undocumented

","parent_name":"ConfigurationError"},"Enums/ButtonMerchantError.html#/s:14ButtonMerchant0aB5ErrorO021trackOrderDeprecationC0yA2CmF":{"name":"trackOrderDeprecationError","abstract":"

Undocumented

","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html#/s:14ButtonMerchant0aB5ErrorO08noEventsC0yA2CmF":{"name":"noEventsError","abstract":"

Undocumented

","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html":{"name":"ButtonMerchantError","abstract":"

Button Merchant Library Errors.

"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"

Button Merchant Library Configuration Error.

"},"Enums/NetworkError.html":{"name":"NetworkError","abstract":"

Button Merchant Library Configuration Error.

"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC8quantitySivp":{"name":"quantity","abstract":"

The number of unique units represented by this line item (default is 1).

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC15itemDescriptionSSSgvp":{"name":"itemDescription","abstract":"

Text describing the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC3skuSSSgvp":{"name":"sku","abstract":"

The Stock Keeping Unit of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC3upcSSSgvp":{"name":"upc","abstract":"

The Universal Product Code of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC8categorySaySSGSgvp":{"name":"category","abstract":"

The category of the line item.","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC10attributesSDyS2SGSgvp":{"name":"attributes","abstract":"

A key/value store for strings to specify additional information about a line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC2id5totalAESS_s5Int64Vtcfc":{"name":"init(id:total:)","abstract":"

An array of the line item details that comprise the order

","parent_name":"LineItem"},"Classes/Order/Customer.html#/s:14ButtonMerchant5OrderC8CustomerC5emailSSSgvp":{"name":"email","abstract":"

The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

","parent_name":"Customer"},"Classes/Order/Customer.html#/s:14ButtonMerchant5OrderC8CustomerC5isNewSbSgvp":{"name":"isNew","abstract":"

A flag indicating whether the customer is new (or not).

","parent_name":"Customer"},"Classes/Order/Customer.html#/s:14ButtonMerchant5OrderC8CustomerC2idAESS_tcfc":{"name":"init(id:)","abstract":"

Initializes a customer object with the passed parameters.

","parent_name":"Customer"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(py)currencyCode":{"name":"currencyCode","abstract":"

The ISO 4217 currency code (default is USD).

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(py)customerOrderId":{"name":"customerOrderId","abstract":"

The customer-facing order id.

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(py)customer":{"name":"customer","abstract":"

The customer related to the order

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(im)initWithId:purchaseDate:lineItems:":{"name":"init(id:purchaseDate:lineItems:)","abstract":"

Initializes an order object with the passed parameters.

","parent_name":"Order"},"Classes/Order/Customer.html":{"name":"Customer","abstract":"

Represents a customer in the order.

","parent_name":"Order"},"Classes/Order/LineItem.html":{"name":"LineItem","abstract":"

Represents a line item in the order.

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(im)initWithId:amount:currencyCode:":{"name":"init(id:amount:currencyCode:)","abstract":"

Deprecated.

","parent_name":"Order"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)id":{"name":"id","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)upc":{"name":"upc","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)categories":{"name":"categories","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)name":{"name":"name","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)currency":{"name":"currency","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)value":{"name":"value","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)quantity":{"name":"quantity","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)url":{"name":"url","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)attributes":{"name":"attributes","parent_name":"ButtonProduct"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cpy)attributionToken":{"name":"attributionToken","abstract":"

The last tracked attributionToken from an inbound Button attributed URL.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)configureWithApplicationId:":{"name":"configure(applicationId:)","abstract":"

Configures ButtonMerchant with your application Id.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)trackIncomingURL:":{"name":"trackIncomingURL(_:)","abstract":"

Checks the passed URL for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)trackIncomingUserActivity:":{"name":"trackIncomingUserActivity(_:)","abstract":"

Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)handlePostInstallURL:":{"name":"handlePostInstallURL(_:)","abstract":"

Checks to see if the user visited a url prior to installing your app.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)reportOrder:completion:":{"name":"reportOrder(_:completion:)","abstract":"

Reports an order to Button.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)clearAllData":{"name":"clearAllData()","abstract":"

Discards the current session and all persisted data.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cpy)features":{"name":"features","abstract":"

An interface through which library features can be enabled/disabled.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cpy)activity":{"name":"activity","abstract":"

An interface through which user activity can be reported.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@CM@ButtonMerchant@objc(cs)ButtonMerchant(cm)trackOrder:completion:":{"name":"trackOrder(_:completion:)","abstract":"

Deprecated.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html":{"name":"ButtonMerchant","abstract":"

ButtonMerchant is the main entry point to the library.

"},"Classes/ButtonProduct.html":{"name":"ButtonProduct","abstract":"

A concrete implementation of the ButtonProductCompatible protocol.

"},"Classes/Order.html":{"name":"Order","abstract":"

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/docSet.dsidx b/docs/history/1.4.5/docsets/ButtonMerchant.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 0000000000000000000000000000000000000000..81dd58140198f2053b5ca667cbe0d9f876631cba GIT binary patch literal 28672 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 J*>Sc2`9A}9A1B_klb5`gtdrDUImteIr%t76 zRS`r%0ksrE8Uuk|^+0>zj(HNo#B)g81({5sh%VW|Q95K=Oov3_=0gVoNeCT~f-Hjz zs2G<*E*;6d)^|ZdLXQX0P9*wFjB#C7qjGXCPF>`PLNmOb7HY@Gwyr}E@`M9m*Qe1Ww<)f~ws3yEjXii)d z;nh-Jp~i@Mc5!7qYRd8(Mag+uYESnt7pK`xk|4bj#MF_8#(=k9SgBYPmugJ|FI(UYU*Z^eCA`uu)$tC+j_1VQFzH%yMPOsrCR+7g#95dFHy$1w=`T#Cu_Y>q?-suZTg@)yy2K1yIy z7G3bSI6>zG>cQvB#{^2D6VKr3&qA@l#b0yKo(pYsuOjyqh7yu7ksl%1`Q~V>{z~K0 z9iDrcsUf0^pZR;q=5$|mB)7c-M{ zwM}tS-u>g^zHTL4#z21hkk`(H%}I1k;!UBsmK2wCl(n^;vkm_)NWQI|QFMa;tZ@3R z)#iUBu_lPi-43R`idemLL-_|$xBq`(_kMX#8}oX_tI(w)uVWRIJxNtb24fZJwcm=M zhl`JeV@8*Q<9W8o!0cpa@unD>YBZZ?j7yqPPje(1yKoA7*G71zsa9v(eG0UUx3U0z zN^$wtIbva8^LIGI(A?LM5`HEIKJQoWxK2BVliS||4Cvk|X+#<7Fbgs%$F(x;`#8CwE(L{7Eusk)|y;I%MCBZ3Jd^#u? znsP^!3Kt6>ucz8IX57pDbjXV;$tbgRS9NIB$NBQ*G*gbP*xkq8+i7gAb&VBw_hC9V z&Za{Ja99f3rML0iz*~3KZN25Iz1LwZeK=@*>`msI@aN3cP3vd1F0q?9{q78VB)r@QdxQHWc<|=0bTJwRXptHjWC*~; z6WM`+HIwnlmPZQS-{0=9tGTGpnxZ{i)s>N4G?F2um)tk_6|O^9o-3zBp0By3>?_Ny$yJ5j_*i$X3zjm=4_D=ps4I5G!XpFt&BcGcoFI!LEY!chKOt==L&p^K z)Rm-Wzg*_oct~eSlrxwK*37XuhYm&8rrlb5$kqRg-GRUJ#;S(AAho57*K8xafYZ0;%r zp19pASnX+4tr3^^`szwBu!|);E7_<@q3lI-C4cb`EZ=Uq`_}}L95&oXpujKEc|oFb*CZzJW*EfeMpLHmLtAp zQ|sv7YldExkGR~{{}y{er4kM@iDl#!jBr0c@X>Z*?ADU#MLWhyoikKWyYKsn;A_d0ph_5lBPkfySXLN$h~zJ`YkPP9c2}vTpP)T zvz*I7Gi)vD5vC=5xstgd!V^X(-s>hdjxO!fsA?0pOwhIH!2SX3c)ZKi8nPlj%}8Cm z>O2iYX@`L9F%i@6x;iAGz2$PXFDzH7b81#lLe`{+Q**gvL8Qta7}NR|bF78efv14! z8gZLvv)*QJ>2IspOGVxE;2<|0)u=bBe5UTsvrpsJJ63MtN647Y?|G`EJJipY?^V-z~J2h^K8O-Z3PN8?&rWGt&Vr5sU&NG?&EF10)tXQg}J7EsSlJR7I z{>6&@qN1l$+OmVi9*QHrsNTx>W4LCKWW0U%?tH8LIa>4415DQ@)uGdCPLQ}1 zY+jtZr&XD3pCN?le7Q744ReK&GQ22U>&vQ?fVOa<*h_J7ZuG_QKqn9SQb)%e6ou3# zr(>%Xu&C1385$ds*5(#Nr@dvPTB0C@q$TDcWA9%mdKFg}RK`AxQ%DHOYBwN=54!EF zx|WlaOy0e9=GIT|F6S=2Emzyqz1!@)`#yJ`uAb($+|Gk zMTyq7oXPYXSqF((8#3$7VrUl_CXQtvJLQkQjYYZOmRGRsWyz+O)JYZ=VC@2qX-}f> ztmS`K8F&x)O8w7X>-lf~_O`w=y*+7b7y$84z>F*X%GJUP+;xZdtG64$=5vZ}ncL5V zoaI=Ydv|@X<%fy#=S!TO{l?2;>vfDg>kZIlU(rv}v)8x4ch==k$4%TtFBCoGf3qCb zeHi$awdSj?KBK{{z=4mFV=&F`2sm$n?I6P@nXT zd0kt>{TE$nk*LTu+;FSv3~#YroR5wdP1An8|NG>@^(WkDYG0ASi_P$_dFr0#nwatL zzEl!7)mw;@LONUSO@-ihnykFpMiuws0*J>3c6K~(OLuu;_|lbaDos|{oqvv_*2JmF zD$U(FUhRLCsuAbZ(^LR~S!^@vm23prpf6{8=aqa8)}R?%>#eoa!m;lXjFZ0V!YU@? z;3vG8Su1J@U~@2xLnA76yM-`OLf@ivwYzH^wVchLeU|%+vK5ZL(==;skamH9dc)t| zF~zdA@sauc3Rmj_?ChP6rhg7{Qc@}m&)N?2q^1FOVYqTU=Z~wTH1f4M3#R}5J{OTY z`}gY=zGIc)M^4#B)K-NLz`VP#gZ&!quP)BR0dN+k`!q0bBx|Zb6n{71e$n@CS{R0Jb~nLX#i4^5b#LY-S{c6)2b{~ zCQ@}JlE4DKb#fCBHXjs zx8YgkPF(21W6}C_+sW4Lx|q#XnPt07NCpdui6she8>hR-G=cDr*-5LwaAoHPLWbL0 zP=q!uTrSZ*d-Y;FYJz9$Rr3A;jP|y;NOaPnAcnhI$Vk2mMzb@?+oWo|sy44aXX#7c zefv!%PPu9BgYo2-oHppp)d6M6JR1H6QciV3W7%zNVSYS@`Npfa@Z|YS8BzttCv(rZ z1u3SS9$2;CF2(}Xl0gph_fmo7T)>>yTk%7y8x9|ujws@1>Gw4-P|keUQ6TlJh=MC6 zDsn8J378}uI|}vLlSyK-VCt}=ywb;o{5_!YFcuNPQuhDeX?#@HQ}$|9u$-v~oA z`}KX^k(3mVFvZav*8CoLQ;2;1RyvIP%Wb8iv~l-Xu{w+<<}B0YJ7Z$I{EIdWDvkC? zw9cpY?-ge-ITTo=$L84tLD7UcwZcs- zQwiKPm(fA?G`dQwIUehwO;^n&$v!CNjAmZ$%0~ex|Bq?vz7Ophe$H6t%uQpb-h85B zdf_{^LL|EDulBn1F%8wpKM19~M4@D$l*jdrO35XnZ$hr6QW{fk_&ANyAl4Vv3hRoz z9}AI#&Fae@W5bvUMI5I(wa|U)s!;^mH}s*?YWX-!>>tfR1`B&DE@v7A94Sdk{m}bA zjHO46rjir8A}*rSV;S}nITe7K?%EREx*qnQ|4P*1iYD!a8eM%a*C-X2T7#wZzM3L?^7zShQDCk zBQX%3p<(=STby40n%q|tB}yy9pGg4~j%2R$dsF`REKSSMpxj22AW_94r&?yPU?wD| zw7DYh5#EdhRq6mUIlA}!NzbQPDdRz??xk=Y21z19cz1mP)Dis{9+T;F$JHjkhhf+ordoQ`y+F7QQxk~_08>1ETmF-Se6_Z&-J8ItGCgCENEhJ( zokVk2PA%&ZU;~IaJBL@Ls2k=XU=HjFMY=W*SXXR#&?Z^v_iRseT z$dVCq(C3znR_*hf`#CS3$dAy(o6!{$zYvq)YLLfD!NQZ7Ktbrzh+UQVwZQlC2y|+H zIk>yozI#zTL0R?9=25#zojXHJ2N$lCzG8Oo{3>Bo+nzGMuM7+ z`(!PU?CcZKWk}2~swhqxw(-EfC*TpvEI(0r8Nv%A(CS%bBz13Pm#$B=A!AC7a01KY zP>7x|_!<;B$`~&H7LB@3Jik2tYbuH{L7Yv6ODSQ@!f+QYB9Fo_NQz4g6f{#AZH7gg zg8qoV9{oBQ{Stmy0berKn!+N!+K>wl%$Q?JrNlWY_2voervwI4PipelVdn7MLo|tF;cp`KFuO? zmy=!yw7J{Z6*Pu+Ep8EOfuhGAQZ1IRBn5+ehXXvT|ZhIFw2_Lz2pV2a-$pw6%XF{Wtj4CQ4D zj|@N{1f7j}n+CkUQF61DldIY#K&+ZFLzt)h6H8pWk4*T#LYIE&we*pI)NPwOA z%TcOqvdaaAY6ns+P}NRQbrJtXlX7JLhEDylO_!T}YC zKeg3oBEN9d(3q)#+b~^pB}}o)!A8=QmdntSZ7Mx#pxBUf!NFHB1x6=7Op7eZ18#EF z9u9Vf6F6t>%A~!brbuEQYXzTxvz5e9RQ>0tSek%)C@_>_?f%mD`RQ~rjQ^pZK)KlO zABf4s;%NvoO@?D7jMiADT^0NsCKKn!WAE9)GnkhK-prz!&e9!fV|fhwrdvF*Q3DZj zeag!KIn>Xk6E4aMgMzwf(KzRL)%LP)5!Tpg8d2I_$)DYY3bcen&O zYLMdy37F-ZO_D74?2LqMalqsE;(})t(GZW?Tp;3QDuL8=SQ|$H=1O)F=McUAiO>Bs z?JnY{jJUWvF1xe`15!!6oOJmotOyQ+)bFvJ!3^ngcKFGl+#01ZUBl5y-j-P5l!xkt zyP-r5>e8gxn-2WH5hbKO-4YzI0rU#+P;jc~HlBZZkMQc-s9q-j6lU&VNr0-2p}F9` zKaJeG9OI$fk#^B9j}S>w1>e-bpJB5pb8)@wq`VGerBVsp0u58?R)(QPr_si-rKq7* zJ+Z0?MTduK%hhbVg{Z(7p)kcV3`taQPW6Oz`It-4SU4oNl&d;fOngS zzGgX0`hCYke;#KU9mE&%lIuF#Ffahl9DBrNuz}1+VSl+1wOX~hBO;S1Xr8#3%ZC^n ztGB8QdXxK!KH^-6Hzty1aF}RAzEIoge(Y39b-RTkJ$#LN9QIEfQhI|hCN)0SjsZE8AUX+;-yjFWXGHZ}v?ya(5(?zv4D+pk{kL(k<@abb35pqoL9rkk&y8C= zQkoI7VZ4VBqj;gL<7ysimVs)K`8}PDn?&&?1dwx4QPEN@pI2_08#-~NrIG>6F|BJm z_O~Vg!No#7ij-l9caI1gJi|Z5QvnSY>YNk{ajA1dB0MTY1$x-D$GA7PK{ntcd_OCb z;GgC#F7MgTPVn(E;G+Ta{E_H3&2}Reb|Q{Ss-Vt>Hmkaq&(QNF_1Vpeo^;7ZI3|1d9vnOWX;sL+FR~^omlumQJzFpFjg73r#;hPWnmnG2a zh*~=q?S>`NtR6CSC%B6-8FzDTI{IMDc^`~ZI1ma{ zVup(I_~_&W+LbFXBod+# zCK3%PAL2U^kd#+0E=1e@fv3?w;9Eq&1||E#Auxs}lOr~huBM#S{3Q+Kqq7Nxa%l`q zdIW6@9lE2e({JseIVeAiX9^jPgf)9SM`)l&qY|6o-JcQkTWpif!GTdCqNSX~DfepX z=mrE5)Is5zKqMi7UIA1N#aWQblT8u>aX_p=;A#{`oU*t3JPV~x78JdJR z7W#*{cel0XAxXlA^kG*~rHdDt>4{f&pLM0auLopZzS4RsHhZa(*5C%$hqOnGnF%g( zetiQk)M{LdrN}yTASxg}=ab!3q3P5dt!vN_eL(l4!VNxX?uUjCapiU(c2uFl?D)A( z2@^44#ZDRys3(c?JobkL8hpRnsM2+$3)1%2YPa^2L9yz`M#tUkO9(aNzM5fyM9sse zP)KU_MP9ni-x4ySD~}X4q#w{UzYRGms&mU26SXLVENH_j$PgZ?kKx7dkDW-meyf>P z)K5v?5I4w>)GG?wj)XwyAvPao*oWIOP?y$P z$??J-{yhUi>L!-9@x^kW9K!kqn@GNWMNslow68-^+pTHuL&#>sx+ z18^He^C@*c02f_~SrNeZy7$&Y=5N0e8J6QR>S|YmJzVZjDY!+cB~YGbl~rrylgW}j zgMizY^4i$|_T`m%&5^_)(7)S9u%CZ0HlBa0ZTso6BrRtBvD%)NKK7gS*6S<4@>= zu1g5u8}*l6uYPdV@k|O?wyr_Pdu#T0du42L3~MTjv?`H1kuq}P+4O+unSdzQJjMpw zs>?JMm^w;2wW{D0Y22F!zo4&VMInL?rlTqSGOJIo>9Q*I(lEc&8Fd?#Oi7P0K@RF$z`>CZx%2b~3NzUZ2tA~|TZs^<)N)FPL*1FkF< z$7X6?4sq0|V_Uh;1{tH%jykQRYY-@I+%Iw{Q!K@r;M8r+?Hg76tIa=?EL1w79i*H0(RNQexSAVvj+hVhT{)#vHOZSsol$vDsmx)O9EEmQ=Hfp=uXxO z${7mI8A{vY>`t}{q8$pR9jXEqsW!CQJ1+QFMY@&}STo+k!*Kl_Z%3ux@HnSzr#~r6=m=0_V zUAnw57*d&w>e$q2cIkP;nv!Uar|{-^WE@6KtTl#xc$KYM$usb=d*#yHboR`G^@@?0{FBGM-Wr74WcmO&$k`!1 z?Q?MlJMFU>Zz=uaj{*sT>t8d6$nQC@3*ij#LqjzIhR_U{G6nuvh*=pUL}VBTg?j)B z=IQ^xrY{cSf7k!2Oy@@+yd>8RnSONJW8@Ni498RpxOOHmhbCo$=z3#)4no2)l9(nX=|xrYbdAM}z;m4F07$ zt^Cw$lrsx38ZWX9SI=Bu4yx5Xg*nI$A6tn_X*mJ?mTD@wr?FBy5sV1waRQ56m?a@WcW;9%;bCCeXWQ3U=CmdS(=0^_-pQ8 zcy;?}GTsixohO8RGE1f6nvJNHQ5B@Kh==XW)R{LOpSW;|NBngZtOg%TNWd}<3I8Bi z1up-8sLuaV&l8ZYO9JtzR-G&AeGS7_4?=5(b4i4v%jSEz4u-iYM=G`H7%d4&pw_zq zP;Dq#aa`6~fOy*xKMp^z{Y|P+>;II3!|;!GY}6N;il%5O3FteX)9lRD$4=4tmmt&X zSU}Soijn_BPs;p%r67eBq3~5x|NcyKI&vguP6o1*D6%|inF_*z7)xB0u^3Y{S>iC! z2LtgD%Oho&fdsaDp_SaEG?ua;QsgfOZDKl_iuv7Wuxjv&p`B}%*zWLSsIzqf1IlK| zDVsdB;n*pO{P_m#0YEed++*j-Db-_u9EIr-O1J9}pk}_oasdFQ=24vD3AREDA-F?W zjsxZzoPTrq+*$EvPa3?pAa?v_Z!Rvr?fj!JUf9$`91gJi_XED!XE-7X4G2=SOL-@6 zDek8%X(16JfDBhbBh_U$R{uaY91yDMuyO=xI3iIa7>%q1k%y!IBP#_lha-bE8sw|n zX*3}Wji=oGnZrh_UCj$(I6x?&=+*h&qeLv0*l`Tx>~|MT%^-_ikQ8c-1U5Q`K&QDh z)0j{+@C3(Q;kUgr;;lPGJCBKL2!{e6Q?@7ytQgm~=;yttoi~h#T$5}ttk+feq&tE9 zLFBYe<-E@a2~m4Vq?z*_VL3+y_?V%_O&lS?!@SVy4N5O)(&JtFgZ)1|8A``xsj1R2 z*e4?K&~2&2-Q321@b6A5b2qal0@10;sn!c1=*2$frwQ108KDzPg)eJ)*_Hn98#DVic{OX!oLDWWnNQmTgVr*E;$!pf?Pi3(GLVI04-?mZQ7Wcut6pm< zp08Y~ikr@*Ik2MDU$IuqV~jxBe3s?eCQ-U3@no$wRKRVWLA*n0xTa{bns$XYR>#|j z>u`&$f-?p2%oUT;mY|vH9y-{PFGeK)revSK%Z`Vvlw`UW5hqVlR5>x=K|Vi&!(vx< z9koRQP<6b7>!i*=RBzBUQC7ceA;TQJPqB~X)L5~l2yW#t_JP}UPTFjW*!*3+^KPlE zUM<}Z*!oF!*ecBI+OUBuH*{`dtcSfL|69E>JKF9+W>ER>= zovg@X>cmq;C#oM`JnTUd|?$a z@)e+&Xbl!~HfM9igxYbq|uj`*~mdS&_784yICrIbKb` z{?|nCCh!smum3gs2p`4MNJ2qiLkEBEq-j%Gp3lR?T4|o&2iW84X3bXK?oY*-mEKp> zfG(telNkTc4~CgFDvtk2Y{8*BAZ-uI_sQjLx@S<%HI3ovl)j`D?@eijJTFSt^{c82 z;&@U(O5_xd@rx9Rx>dXc0| zU>(c*wAn=d(@w28+ z^nbp}g(cwhJqB1=_%)WknxDpg-4OshAs88%eC*Dc$#Z?SPGUyPbgZ)h7IZZ(AN1@1 z)Er*YNB-Rv)aidItj`I5Fkt*^tyUi}mYFgGs8KIz5Pue*%asfQK|!vUF`?5Zw0(M> zL;tg^ip;!TMw)^6y;JAQD$+bC-Z?uuivclG?eft{6|2Y3p4#ch>dJz50mWFaeSo`@MH_se#GzH%?XiS-PRoM*lA*9K?Cen090PVuYS%~OY z+;HK$&oWKTIp&DW@#5yXk6^PIB^v)_zr?~mP`M(DN?e|e zWsl<%wF7~%s1X{k2_9eL0J$j-m*sS83oV$Vpr4GL@9BHF%gWYRgzpdlj>y0FIC@K-J2pc#4l`=%eoU^c z?R`JO?oax*9xi;R37G0^I~>$yyNfj6@83smZ#{ni)$iLlfWI@`d(Yf^)*jCTc@o-r zl^rjmsiS55T}>ST{n=N)&$l+K4E^oluCCr=3#*zb}g!=RKVd!?z;O6a_>j%x<5fZ`PQfC#n|5GZ2U&w_VZwRiB;bw_rq*T{q}t& z;neLbj&|;gxa%15(HHR92iPq`!MxPZneYSj-tsLsoxZpAUK0pO%dfPOyZ0O$?|uE~ z)8qO5+=d`tdzx80S>D9zdse*MOL ze|!Nd-v=a5sOfX#+E_;2080Q={vQ|HnWB$Vw?2oDk~w1b&+|ppRSG~$5J@m8W=1O2 zgveoKH^92OsEPb01+c?A@Sca`l=F+z^Qe3tPKsaRBk${oJnv(e-0!J~;Cqe#YsmjA z%>V5}z3;<&?;TvCRL0Jn!d--2Yly|08Gb=USC@ z^@08sIoGyRJA`^rM-F)rS#p+wm6pG>LnHMimDwdXY&~on8xS(AxrP`s!ji|cG7?AyxXV&_?_AQi&5{6ClUG`)_>^< zzW1du`TV{h0hBK1*Y=--!jP?i)7u=4%(L&a+nYDBFJ ze%IyejfLi_8{0HQ8{lJe_0F5~+Ro6}Jm~BBPPZ#0ZMZwDocd`(nnlO^Gw)D{*6$O6 z$1Xm=0X6^I<_&jY-tMOfk@wxMJ0i?0f%(PWGmgI|$M=NomS63Ale0cwhw1t8!5OSO zYhRDsO@GsK*Tscitk1K2p65+N7t?J=(am(~R6)(NY)EM=s=dESMQw-O*kcl``7bwF zmp;Jg;By}DgEQ|TFBye)cK$RGg?}@uKn2bw8}8=I?p)v7^j2T0LWlg`V}muOUdJV# zc5ZFQz}+-1cXizuVK4 zIh~JBdy%cQvh$m*w%i{#)~oUE&(X&)c^)Uuk3sFWD=xqHzp(b+7lN)8<^nAN8(KkW z{1;#bxt1GlACLumd_Je%uh(xc!nZN_{-3A0_Io=%r%I1O} z_I*wFMRng!`)RGdm;5~MIk5YPuJ+!auY51guf71Kr?Kf5TW$nr*SUIE?IGKR35A=l zriD`kL>=EfZT`E1SV;c2T1;}t+>4tZjW%eh9Moi7>_Ts3`U2a&`(SoZire)z;>@nv4CDWzX*a9+TJcXtz1~9TN9$zxmB{heqRIrBeHsB9m`w6`9spQ^i=V%c2fBxtBYd?QbEUZ9I<~pbepMfUBgwexK`J;XMgoj<0)myYIiC zV{v`wGx|NJmwi5`y04;#`f06hZ2W+SBz?cPv>WdNyUPgmz6Xb$T-}iobD@gSQLp`M zw4Du(jrJtdy`A0mnv>{s@5`4_JWtDp(ppD#JzRTcK`VzKmN>!~7ElTLu-2UKup4!R zzOM*{xw~7xvy76%vcY}k8h?d$x8t|Nxt}mhzo!!J^qje`o$oRKe-7vOf=OVWabgbB zQL|tA+G~7{=y%S$)vEiMH!@`JVQhRjvZ^Bd_%ce4^IC7?VSczOc3qQ3;8Ah&Zk$H$ z#*V+~OSRW@tqVzO@k^SFCD3fj@Fqv*EoDd_8t^8v_Lg(+ZOuRT)iuTs_#_r;E!kh5 z^O4H#di^*BoCK~v9;kQqy*%89Vbb|__TE6|=zpXXe4Xa?0RGEY!6INJlp$+f+^(%t>rIxc4mF!eS*U9MW#{R<9l2kA#Q zZ+%X8=)avlv)ug60rWoCyNIhjr#SZX**D!)9Y6cmGq1Oat!#EXO=T4fevHlazEfST zHe27lpt1zJjlS~kJx^~oRxkC?Gj9GC?U4K)Z{mFqld0~0zh4&c2IpRW*4+I*n_A-V zG&8*#AL){Fm*EfedRvVuMCyPdC1G%&zC^hG1$*cNF28vewC(6Az|m8+%T># z_f=4auHxk863?v;>V^&7x%$=Q&Hbpf@mXvAcM()~tEt#Io_U?3P{3gpzQ_6atnDq< z*H0c^@8O6$kNZK?cG#`=T$BHbm%aW{ll1M!0ifq~_UhD)??J`;v99lS;?`lyz4uTU z@Ob#@l3h|Q%-(h$2Uwj0O82Fm_Hw^o0Ho}5doL5!N(szF5 zW!#xtgGglrUFd`*nZ=3DXA%p8T8tJ)gt}e4{|KgkGF!H=V{YD+O(APydx~a&6OxpM zV2D!D{3NAtlH-?=*rE&sbILe@PL4|B8?cl(4=f>^7&90NcL@{~X&M=*?eQH(wFOmM zAtk9rAs~?~FT#_%=BXnk-Saou1hbHwl=s`--?KAQURH-CpPjlF2DDZ`l8u<-XX^92 z2Z7faxr(uM0elrje4RwwKEHa1=1E-UL-}RX=BN5S-^Tc5M###pm%N@H4Uc*aW{qlW znpL=3R({a?FdNqpV|XSF%Asl6j1q3?fDSKRE)A9p}sZfvedJfH!2E%Sjt z+n9jF@2&5-Q|`+FWn7AxFO|HKaD`anSwpsR>;cX6nS1;m%892ELOlKu`N#u|6aSy$ z@_#7Z|59&99_`qZm!us-JD1wLRYQ=Q+MGGW>nkCAmCeWkgPf(O-v4VoS0T@{RBH8+ zey0es`#~s9Q;9K-H5xQAHwA@iH)27VnQ*~GpKV%nT8QCn` zCjY&?kI@BHWv*(9!4j%j851Tf)~9-}r3i8YCu5|RxTFwj_hkmIDr8ef6~u|a#i7!b zPU1gAbTo{uP_kHnfvWT2$Nw#Hp(%Mt69B=v5FCmvXzJqUlc@auSiFb)muFZ#a3yEX z;a8nF%P=K7{2mjh;H~@199SezMDZV;*nm@Quu&TD5C#2QMByZbcxs`Nkiyhsk~g73 zruow8J&hwYz1TCD9g485KmtucZvH60tf2CX$L#*O^*QHm0i3cNgAUK?-*ah$$V~Pd zpwYnyY!_(tDzH&TA`rBo@@yettJJY$7KJoU&U~~CPK;^R`}?8^r-6KD5;RUjU-_a? zI+1;Ws-)UR*`=j-!Vp*CPg9ygMt8mqYt^|KLcdN-ULa!ACnW>&>Zhk*VTWu;L=l>q zuVNj-A>;y$0^X9LAg(-$0dVtKlM?xw4Tk+M?OYx80-@dlWy;WmZUBTTnyt-B5tcPx zIU{dF7KY8J0t!yv^c1J_`av<6AQ+%*&|y&(#=7b7lO)k9oF;r8;GmC@Rs{-8rt9Gl z@V5CzA~SK1DWE2>%BVrt6M6Tm>8#MC$AJuT z2kJj$rJSL%Lz0a2s|osIqHNy`pWK-wZ)NG6I1I&IiCkAyNk`T#z|gua6I9S0f$+>Y z7fuZ4MIA$DRdeepd=pSZR8|p37ohlv&{0woFk##nH%{o+^T9Q-{vyE`vVS@&1_+8U zROBmRT#)L_LMG%!vIYkxR0=8<{eo7DPf(GiR}b`{#SLc4|52q{#1CUSh^C-N9J4Ud zLZ^OWsBRnC_(UzXmg4e#L}%($%<`Bq-^NP@VJ?!jfkkDK8od&9XUDueJYH4nkiR7$ z|3fM-M>a;@;MKuXkFf%DNkzmUl|J#iEYL(QXgvr~jym2jME_{&H{{VDzg`yklfL_% z1$?)#daYOo&3NWj!nm=3!vLLyHx4Me%hru++&z?AQ97JVrQ~c1j`dU^9$=H?DyEt8 z>YA8isrJ13`glaxt3e?RAjwgoBp&@gQea%V%`a}P>X+0n2V4Co730uRwHKO$53ZBi zDtfqUB3ez$8m8AfSN=C3p;(?!tWvH4Hul zKcF;<2BrI7x4}(X{e74yX=yyFf+3wyxM+bZIec>1!-%s%b%aMIutlYq89}L(z-}^G zNY)QAdx5F2DE>$-DijLY?#pax3eJhCbmt&8(S#EvR-nYn!HJf2D1;xA#AIW|1*LM> z=oDY6&c*NKcN`as1MO~pgDcs(MfS4;NF6U?fA|vGl;Bcr-RNrxEP8E{`6*2rydOI0Y3>||0%mc=1dfG zmLt~#Mq;dFk|b)3Bv4tO4Hrz9);ckP4_y7)HkOpgIs1En#Bvgp>Loj9t29do5(##x z0xa#IeR-8la+wDfQVd(~00?jVN;;njM`3{^KHqGl65B&PYMc6*vPXe&3j_;0Eguf{ z2yR=JG&^UziLB}(VTBaN2JQl^ILkzEbmb;uvFwFvK6zkEz%=9n-GD;@y1;GmH$@SK zB1JMqs_#I6{Vyzcs#gJZ*og};I9opKIm+e~(_u!FxPw9};Rmv(5@jvu!(+Qp-` z8`^~~wWF~ka=Az()#}eh6tun>n#4lUr~@TUGnv;8YWyZTdH>xEX@>lcl}~VbHiqu6 ziW@_c6E0q#!)d@HOnBEliqEK6S5Q-q*3MiyuBIo883?~4z zm4XN95OC1Mj3`ox4fF(FS(WF|x02p?DNVj|WKHTGmC*|re(2p@uSF!F1a#meA4=K{PE3Tu z;ni2oE_k1WS?K5F=p_$$3&-H*qt2TrS?*zP zeSp7%Q0^3eV`M1ldUn9TE<7DPGcY>pehPiDpN|ckazCYy7RC=x;^Tp_v5QGhyN|Hk zh0)fG2Y*2)OEwqIe zzq(!F?7GE&=$(0*$4xSndHRmz_xC*9YP2_!BoK+a_*IXon}pWkHu_ zL}p?($~{hNI}jd6MgSNJPt3w!AOzzE)WwM+A03AtMmb${(b_VsChX)jtT8!ck@wTH zLb16}n@G8JIL@|rcXf4iTP7kH8#0)UR7OVd#EHSIpbjc&P`cVkQ8wxO@Yu0?qAI1Yd4jL@cc+x&mJP8+K1k44= z+XEBI{?J4WeLEt2DP}U6bSP=|D8_*a-v$W7PNod-20#%pBo92byq4j3Hxy+;Nm?At zbkS*uj-f>>i2RfoF7=AE#E5Uv6f)?fl*C+G6LkU@@m`)2@}fr(;BKTPH5sxUbs-oh zp!HBroCcdJ1e$`b&fhp~`Z)OWR4FY)$Q;EtG?sJ!(#M^@O>dFqKV3`-I;cSa`Dy+J zsWxfquKjNGo-tY#Iippbb-9vlA`%_SZ|^L$Eut7V^j-J>ozT>EQI0R#{zt$9QLw?( zBy|xBAM_m5ds1A6cx@xftSqW#un80$vEOzFCy%1ON<6Qil9+aY&h3Yby?jK=kLz z^&mjS@x-M0+$16}g&g&2C+5e5X(UbT8Al)_o$Hu{Hq!2rB%2${;;8sPS++H+B=!bC zh4#{sYZ}-rE$7B{oPU#OgwMdh%|vuj(-AJXLk7ZjFt?PSRdnQ1ypHt4p*e~Jc*(46 zVd1(}FMA^lWkmBgAQvdt;WvlEBAV|aqJpS_z!Ae59c0@FACl6bQuS-RW_dVN5%?90 ze8^jn)A&*7xx#~rokbu_C74berM;caftkdIwf@k7P@9$vB}vO6!kpUX#4tW)dsBQa zaz&BkFfe#_5!plu>N64It{x@QN>K-34yOpxEgoJBCHr|wv>l{_-Y|{Duqn?q_<9S@ z3madiW5z<5?w}U*y_AW$=)jkGG=v?{W<)m+HB8C{K&1-CoQo<{po*!80K;)wkkdKf zuH)(?uvfdbf~z*L;6$tin4KkmX!MM_XYAk5E(zz4V6d-Ucm6_Npqdj}C482p-~hjk zpr9I+rgFeXlOw~K)xs?CvK&i0&?HoZ(ga77&nQ1y#00%?i6^o0IUPM8vNw4~#^;~iH8 z){6*RvgD_v4LNQA?{eG$hS`GtWt;+jZ#!DYK0BW|`aL6pfHC`>b7(?}bywlr6wdj` z<#iNDq}kLL6qb{C)lKRWkUG#euZ~NTC<=%}pe3y12Yv@71pl)@ns-fl(7b$t@ct4H z`niY>2@(BNX9wM^|%Ml@+CVQWpku)9C zqWVj3VV*=z5kM3wBG(dUlQMEP;P|8zR_OQ{4k@x-9Hf^ai20PC9?l4^AUL4k`Ll%Q zr==MX+?+qjcx5Nd-qM?4Lpn32_+Ut#21zd>xPmD}wK6b+WnwBtJlLIFi&wp{9s^lm zjef*jwr)QJ3@Ukw0PKBB8GR5vAE!Uc z8y@w7iH-G#ry?0Cr;BQ2WXNv{Tl$L*ii;f!_r+nUwnzCQhi%AdcMHhwKp^@NmG05# zTU&=MiS1SPZII-CV0+2&$;CxBS+Q60ih4!+UzSZ;9ibFbv8(j+30by%+oFHysFZA}kH}F}n>7Vi{C9UiZHZ9ZC|z3Z9oREzykY`r7lHBivNBavTHT5TxTbOs!BMQ7#sh z9N8sqh;}bKLQ$r&V9^Wli+VBSFgRCDOzzi*O+B_;5fWV1u;VlMhZ?0ebMvB**rXnQ zM#H$J>`VrkheDkX^$D0Zekjy7+7>!QR-N=wSE7Bp9X)r4n7jt&g)*BG3b^QxKLn+f zg5ffukq>e&N^j!!9OU+~5a%bO#@*FD0q;&)%)PaBhK^4NV+@nL9bQ0p{{-<$`&Mc~ zVpp}WU{+-ZGWwHbhAdFmZn?Uo^iw?Tzh7Cq5k^b&_u@#!%9TR{2zGKk|K3I6#omcG&0D$bm>3x`oTUIx#Vkfk)PuIwDo5 zJ$PtV^pGdXfj@MJvGo5#<~KLJ`aY+`7~-rZXEDM=&q>H{EWb;IYQ^G+a9 zGtwPePfN@+Y~zdE6<+TzsYi51^)b7Ei}g|@wUmXay+tqg$Wo3M7Q%5fOZ|**o)7EZ zyE@xn9tS#`jI)5clG-oMVLKs&uF+{^; zGSJN}RkFW8pK;_#k`^l<#G3Ino{RyD7zFiBGK%y7TQ@CSk?32`OHAQ??Hq7}rHl##@Aze=sb zB=PuT_eBji^}B~TVd(ZlKEOQg$=kZ+J_4g3UXPSk?xfm>6SU5^Q;^ZeaBukP<$s!$N!K1|zoi|CYt_aPL z9227A^@_cC!xc`fDQZUdUGF|suF&El2e(cVmsauy$!_xVz>UYz`5&M3xVJcQykin1 zKl}ymG2Ti3cHufC$DA^Xq7g}mFhQdV@FK=j@e7GMa(2#0CrlTbI8_lA7mwjWvYw?4 zz$3G!4z}Nb&YaQkGd78UcTVzcVf^Svknw9b6pORT#NluVGn!~+9b{EiI&J=9@!c-^ zZqFouf25>95-urv;mb*$mh*Y3)>m;DCxJQb#||#3boZKbGX(C{F@6 zev}rMQM~DVHY}r{p+97EL17pSX3h+7w(D%W`JE*L6T^CAHV)Bf$HrvG9p`9ufZB=# zO-Tsz=a%>O`i21wcb2WX+Sxt6ODOHAA_)iiMi>o0G0plbg)2WU67|5DaizO*y~0me z$%#;u=CEOg8X`3hQq6a1Cm91DzLs((a9BTJ?3Q%~dmX_>P$I;VxwZ%s#yxk5_qIYr z)=&vh-?EvTk$jJ49ojxgGkv(M-f!>3Z10efyGh8|#4ZZF zX^Nj2pEbiRElz7;vHUUtGe3);hj#P*A&0~Z`3QlO+X~6>bLA%sSKwP@T(!xiaqSjn z@em0;Z>kfZR|uA2A@IU@j=1RO`i1h-FO$Tc3toK~>M!y+K$V;$3q!NeZV^`=JG!%I zO@GX#;>Yv-DTl;QrXq-b@_mxax3(788)-hQ@u1;=Q505q05Qdmk51yUG0aA}vBsn`I{EVPGT+_i+qshuYzKUiDvkbm;|d$Yi&(A^83cMNedlqZSYWl{{byf zb(+`s7|hQiX6c7X)|wj=t*vcsVA~4Rhc7|H{P&ydSOesUnlwO5vE^FL6i&DEGuZSrm}&P<^Lz|f67%Wk^x~qA z(B%|U>dz!COKzYp5+~3Z$e#vg>(+FViLy%c#er2td+t+el4KLh(wOuBtKguO4Ar6gb{G{u~K%CX|RiyosNEe z!%Qzz3wrN73UO)0DB@gp&cXs3Ft&8l39PtZm8%)M#}6CoAJGcRQ7m~M=v8Jpbo*4& z%(xQGp*O7%uOyG=IjPC3n9SvKNqm3+c%RYxthprHyE2P)>=0meS|(C@k&*(j`W%ib zZ-O0byFmd{bmt%+y$>{Ag`RbWA!PGA&cm!Lux{q%lQyI@*lUX7yK?}#0tL{5aSc?t z=YtX4Uw+1n!k`0c5Su(n7EUeL-@~X}wzPz4>KkGa!$J!SPr(ggisS~8h2bOyk(?I8 zEpe7JV-nx8HhR3WE={EtX7(kk(0Hn(n;s*S7}@`^>^A zt~5pj`W1f2r!dWSyvbp51G<4mJm1{fmJ`|nh|pWT_v7LPE=pA ze%pMZm@0Hv51S@)TB}8~1H;kz8dVHDJb0uAIFD^D=)%)arfVdZwm-cqG*Q`u+RW`lC z%H-a*HWk3~tp%8)Mde`H@D7^4#@$ebw4~sc0A%J*DRcN841BU5PXWx%Sw&6bcPTGS zlZ|;;ry|9tNrH-*+Id4OPUR(ZL~*#^o?co$OUs)XrFl$Tw-Zd~M04KLc@g7WD_%mO zUcg(g-qyydZDdym>io5HU96g>#IVL$`csi40;^z2QRV@rQV#T7Fp+RVIh<@jz$q|| z96=9*{q%cB!B~3(P!uOkeP47$4Kt?OQ8V7KrBx+^4|U(dBuxM>X~UgBAD>~?O zZdQVi#FIcp7paOaS}MBeQPD-Wiq7R)TXPi{2um9US=MVVjsasv8c$Kv%4w1Cj>SO& zI-bz-qU&OyI4`hxue5`<+_%Pi78kjgyf@w_`K`0EP|ZuFDgPueH?B^48gs~zq=fv+ zYH>_7wOjPQm^4d<5Y^-uSF}kt$J3Shy0vo&!MjFuTr|VwutMrVQ;E)Dh2WX4@(ydP zb0ZK7gh4T!=CbI#;O047^vpnoGccM^_Y4nZW>}V+hkNt%-aOu$C%ZIMQq|Gx3Rx}X-rS&$ot(LZTL?J@gOCYC{lZviy~ zH=)Y*r;>o|6q?HfLYSb_{qsn&{plpk;~BE&3dlU9oaxrq>2QWC(2_G?Z1eDPfh)p~ zumn}p2a1;la4`^=#1by}K?`=g2;b25$Qa)QkY%WBP&WyfpQgWr*hLCo@U5>v>yzj> zW^lEU!1m4)i3kwn3xGrvGOjH0-|UqZ;GHk&OBPx=s|du&qbv zb_HU>ur^K$-({UdZI%{+>QJN2`4<8_T!2ADU5b`V@#Fq8yhXv8wXlF*%UPUOxG4r} z6I#(Ip3IpO-lR*3T8!%ABurM-+-693cU3dG$^rlYDR7?@m>}$=&GGOB>L_;!220@*A&c+AaV+S)YdE)A}BWwTw^7B4WL<9%9dD+PmmMM-KoFg09zOZOlQ-=N`A z7!nf1(ApEU%6^!M$xvv~v2~ES+DzxPK44PAc9j|;i~}I)UEaKJ-6evYT}&Bk&8!F` zfzbQ`g2UeL&BT^wD=03<3GvkDMJ|i}Y_dbRblrEIHRpDn&Y5n1jI&yqsr|8J&Wfh? z3g|hYylyID#mG#L1RWQ$!wRx$kY$(Y`cwfG-!R#%i5HC8P`;TnZDB#M@~4nVAaZc` zC#d1NRRdY)VXd~~3`Sv$lFX5<5=o_wQDI1Wq1~tz)S)TR2t12$o&rAM02TQd?Erqm zBqUsPzFgx9XAo&pEz>ATYLSh7iYyG9&akA=Z->X&~upEf&&G${e`%<@LA)53zp_JWRqkq2WRAcaq( z+rBpkoCKK?G^(ImKgOZE$(tMnm4wGo?*JklHq!+(er8-S((^S?QgmFg4b%LFYN{!Q z0~=wv%4gZdJoEL2{ zplLp5HG`=;&UN^x*Qd;>h*(PW0rpdZc6?X?P;z9;dg+b4SdBCMu7Kj=1tALbn zzXcPTa!}w-Y|bh>emX;hh7G^nju4b7sISU)6MCFfSRN%NV9;<`Ef6OwJ;-BWR!ZyH5a-n+sZjG@ zm!@+eGwAE_cLCc@u%5MuCArwX{UVOJC|OnF=!rWCpUelk+9I?}r)g2E*T$Q^odlM! ztXI%Rgt;P>l4uPH+i6f$u!JjnKr zk}1!p$*!6Ol~3DwUdF9)(1+eF%o@whVwo8&1t^C)taf762W_f>8hlJ*=>`J-Uj-CM0Sh^L9BWhCO3nEkiB5std zpwdu@H>?X|XG2R4s<=|RoM&`=(#JdR-4a2hTd&Gy&5mTdt0t-m=XEi9+g~`~-av1K zSwWtyfDqnueDsOF@VL-^eRBMXiReV^Sdwfvr%$L8@LD~4R z1>AqihU!Y#*jL9iY;d<%V^d+#cSqrt7S}G!m=(K-i?c2J)aPxNr7Rn-lx)KzS9-M_ zJ!94`okkU-hRJ~U&=+C;E<*4$9wDTr# zgGd80KCa@@+oZb)G;VIs?1u|Cfssv`9lINcZ;<3m|JD4?eVZlntJjgDYA0t|Mx$rb zXq+wv<{Xg?vb8MevpQJtIJI0PbacuJN!U4xtZoOe^cYA*V<|HCs zT*GQ9)I&Zn8XB((GMf5KVqiswj?wS-?q+baqtEh<^^a3056MQDOkSgAIN9pB1wG%b zt!BD2Dsj4TdVD|Gq=GdDnoXAM^sQUZ$c{1QzF443GeBOtAg9Qdt^GJjlPG!YE$QJ0 zsAQUm>IQj}Gj=dGW@hQ?o#ZeXRqh-eA|pAZ0EQZr8uNBf7H^h&Ihbft!p+rh`aBTro^x)?uS(kDP zWGQo$JI&u9Ib~3S#NCX;e#rS37`er`8@%Q|1LHgu9$wKNZ}CfrV8lfi55$C*(wOt8 z*&(O9#5vLZc^lb07r2txC-;ga{EePyfa_Wu{B4m-}G>OqeaOi&v6_nn`0>v zGubDTb>c}pS*=8Nq~x4e_DE;uQ?U5~_!WNlxwooNK%*(yvz+(GW2>}tCc@v;PZajaziD?>MvN!dfP%HCZ#Q#2CKYjP$xE_BKw1q zPblI3ZMMtdMkA*O=&G`@Gd>;2P35?paSQN*2sq(cr)Ab589H3~y?wYwVoj(g9CxPz zap0pgj~Y)wnvvy);uBkV)O2yKak6M_y%%PY!@9jZJBa+uR?e7S76>UjWat{P5Snq? z({?2WtrZ(4&ZE*e-2V>yJuBn(kBK7*hzl`0W%84;*1{YdSbyfvAGL@$C3u44ER{G@ z|4GG6FrW(!YLv2g!7q`KzNb0AXM$Neq1k7#`s_-+GoH2yWv;nAm3#47PfwO)una#K z!MlS!c++Gp9uQj)>mU^~-J~Be(-p=DFVQq1dClpnp4)7&h1-v`8QpmG#4f|uM zsHuxH$0?)p)N;%DGu2S_{e?6b8-uh3S)xP?Q}j+b(7MmC%ykScKLbc3QO7>`8qFMR zQ)et_?QU7=-)F62$k9BNHvZUB z0YZ$>-7qu32E(7iVwhMXH;<#_tBQ5>a)8Sqa4jp^p=xD5_A3^<>U-D@V6Ccf9JE+j zd+QC16DS1J{i6ZQdK!&wU3QskG|UKPnCAv%UUSY2?wA>8q31ERboNRXSdlUehGIgK z!5gWNx?)JD=xr~txrlN`(2UV^k^FS=_@pwssgNxeqvzwS9L_~&%X4oj0!j|YPEp#- zmbM|Lp>O9C%BRAuAw}L5bzPp(g_gr>S>ILGH`(4c&|`LtphpplA+4|qCiZ&Cp%Z?* ze96JanykQm+3_tJ^iHMI z1@9Wl`U9L#yk4jUQ{g<0)q+{;dMI6cYfvO0sapEM8YE3i54YL&NUjzJOCYjsw^U-p z!N{sZyDjj3XYGvUl8*^8b6kk`Fq_nNna-&3R9%F74o%rimq6?54yL)&mcsfRJ}55| zh@-yP;K)f^O566)cX@AFyZDe!qlRYpT%}kYcj_?ke<(K1``IsG&#NG4e8_a;qeIc+ zA-Ii~CF(c8Cuh9u49;AJwUX zrz$F#sCmXjR8?&uZe`FES*6f1lvzwE-n9z}CL{y(J`PpfnRqQqhAi_k_}o>?lUfYz z@X|wVKE(FiIX|MoONnJ@p7x_cm;2DIms8R(XU)_6^2pdr4kdTW^NQ<3T^?{eX_?J| ztq9@xH6ZSBp~zEI6O;@tkr4iWti2ElAqg06)=!ywbh|cPiGy^Ts{T+TYSVWbk4ry! z$bK@%DX<;;y324w90_Nd;Q{tO&mS=LXa^Ovd7Q3*#Z=N(H(*#fnU1C8 z;=zrzG{C~4Pd8ShaW9Vkcv!?NfOt!>U7%_z*r-*P#F}$1%&YF_mIf|f&TqJyKUyxd zHC9G5@*9nQY4P$=5$j{wCDsqi3TLB4ZE}p2uTqvY&(iMCFo=OWtq zw*;SMi*4JVJAKk)8hmJWVG?;MosN&Qlsy5;in*NG2vgb`>CyAXmj`}4?kwJE7) zN@7=0I*`9BUb(4?{`{DXbmT25Ca7JYh~*|jv8)$k z&bFE;mGeF)e?E+}rn)YyIadq=T8)Ovm{USK!5P4|(cB=w+7!o@m^)fXzqR#PVO5;) zVTdatL{7v_3Z!KSL%Ft&0124=CnUilmH_SB=q+`?v)|B>?nD`hj_wybY0~Sp3InZ5 zq}}R71&;TGksD8_hfS8wp$a=iFi1kPD%})dLjXmn;ZEqp+7~(d07@Pl`RN3Ch%+Px zZfOARA7{Ftz1Rz(O!q&j8;HNF>Q{1@ZP)Gz5O*ueugjpP2TeQ04Vn-) zg||4ytcHU}!z_I8IiI(k$b7jzaNuVW{35$9JnlcMem|)U88*d=;qck*t+Pw|x{YXb zp9*G|jx|2hwkgeLDvTKNQ6KY-hjl>Ubg4NF8%O6;zSB4~?UY^r%TtO&6c=pwVCu}r zx_;nf>5z9oBJ6z*-3(zZHaDGD{cdQuZ2|B3a~9}sH2)D zaDnHi*bQijM&p&jbW`OoXpJVPlEU*~UJxM~zb5cJ=QtUTegnaJh0U{;eFs9j>~G)` z>@z{5vI1qbs*!T-Z#`e_C<*JXe4`VzdVg_7HAWGN1hHUUK`yEEwV<1JGweXS%uXZ;C!7JJ*A259yS)^2^6f zeSj4@J}(bmdZkQcnRj|om_B=8K5D|qY==*Dm5k43*5+x_7ovdn<@gy8r zI8x$_sN_JI5d=w?-bT9x{;7NT?97&Twp*v0rRYSPU(oHAH>*PHm4o?yR>w^Cf-MgQ z%dlAHQ{CUT4_l#-gC*xovQD?B;UGf4k0e=^tkK1j(Q@Xr5m9`) zhpB6Wv)jF)wiQMnlk^WNe9(vfzv-e++>79mU+vY_X~@*+&LphH(g+JUy_$1IE(Mo<#u8n&q9`B8GX zUP7bi5D-?gg`K0z3msry;5^xBtEr?NpX~|cXD!#v9kitf7!aW+sWpkVwwM{hTX zGYL4<8qd$PJU_#TEsrE$cNh?pthGoX&NHc3T1M z2}|y6MAB$7%5+Jr`uoYG=%oqJja3H>IT*5Y9{LdahKmk{u$^p5nklQ3Q21)P;C6$((qwnru|8!JgXRm_uESyHyHyl?K|}WM!pSwf8v) zRv(47{@dD8KqceJkH?n_Y!Aisi^(kK|mgfsnQs8i@nV zcj;BpS*YYIL}^y>`Jt`Pt|i@JFFLe!c9!ybDZCJFMV+Bfj1shr$O8fz zcf3dQFX#a4m@atRp_x#+Ga#-SXbu_LPLS~SqJ(h>9WDBZ85 z$#7kgnLF!?EG>MHfr_Y1`O;2G1wT|ydNfN_^7IoG-<(s;Z!XONf7Ef>7V*Adhb}ha zl*tha$3x&vifGPIK17%vD86T_B9xNO0b${a0#9-JYZ(jJh{f~$VqDr1%9{mKW585| zHUdP&cUF4I`LG9_qQh>~vd3iQcb>Ps63uWQ2e?=!mI@boT=_bb`Ln`C8e!Mx3%>1| z*+n}BJ)mpznVNMxu~ek5H5#^fy%z-^)mI;tk=8N3+Cs3_K##Vj|4-}eMtxy6AKiLFV96ARNRX*ZKx zHMFMP=RE*Fgj-w7#lT||sNNuOyNdlvATE}v?TrTq7*glbM!B^`eXQ4lA6i6U2u^5m zW;I*uJ(EVtggNo*L-0f$dOfFco;#3aLA+&%Lf*j8Hp2FaPg}Ol#cgC);ztxPlQIcZ zErf5du;w}3>XcIJwCdKXfdc!EJ>Z|2SuvGILox27Sj>FVh<(bY>a0nONwN$fpdVJ-32u8c zD^MYZ{KFu2e80#)L_QEiVq7i)tjNtTSe3)Z!f2h+w3`&w@?a#}Rs`;0%!YQ3YO; zY>)oBuMib=PxI{fG}M-x0FCBJ#Yb17k$q1;p@Vi}03=v$Jju}=_4fOEo%BoV1V_vZ zQvU%?nfYCybmp>mF!}I!-?^abAl4Q7u3{Zmv1W^T7pl>Vx>FkXx20dppcA#QP_z?Ch+*6U)IE-HwC-qa0N5WnHP+R`K7R0&Yfe4F?WcR-u5WTnt*W;9%l z=Oet zK*?RksvNFQPfx*tQQawDP@3theh5-AW-J5;l`#XNE+wWzAYP!K@vC#{AV{cczn;Ox z2Z3}4WJfvpxu$n|T9FH0#}` znZsuxB!{xj#TB9%K{H$hH`-yeQ6DZyD^ma!({rCV8*B&|Sbi=eKcLyBLM(P>%nYVl z(zHrBon8~*U=AN<_rk5Msr)%+wV5OdypZf~O0%ZXpgAcM0`69FrB!Vm;-EvS&w9R5 zfuRo5ZnDugt3p4}U#zEZhQE3`4 zlJSR@4vsEuYpZHo zSsDsP8qc=Q*pxMIAr=N#43vc-@h$TU*_hgzp-Tp^RW@%_9MoYx(>Zp7D643G5I^#$ z>H?ZC^E{WVXO@rqkk631eu@wc>;!&KKvWcRLJVUBoNEw*2tXD&pRq{%$2!zz-sTXR z28d@>#o`&N=$hZp^8tLYE^euBWmv_*>C$^$>SX%}J#jWMf+1ct`4gW-w7o*WL@yI;|B`f$AMD-;c z!H}g>hQAG$VvHaol^S}eBin|+dQJ;$1UqE90*j(7Y}}rwV3gEz6>qj@b~V}sI7Db- zA_gReb}ARvP0WI3FCT|w+YD(>7VGe6cHghGSL6_E{(yOL%##8??rm0EgpQpZhymD) z`b0*wF=*L1l#MhQ+r@TAQI<|v0C69pJv-WH)w_a{@xaf=-w=5#8>dccpE~y5r%4-W zoat*haY>j||T%(^{XWaC4Ix$O=P9 zR2abis-Sg6q%w_zNgD|=fXp`YwNipuV1`VT<$*JrkI?1n!0|s*3KcQ8oy)>2Ogc4v z_<)6|UDTAbwZ-p4-nq|5w7#QZUpm&Na>W{GLLDh;2cbb>4zVR`;mM5Dla(6gJ1TQq zd`S%JGG;j+Re5)yz$&K?u}oBxWjy@$6wlZK)RZL6v0d%C1~V%bh-3zksn{ru&BPYx zl1v`N1GTq2BRfsh4Gi+6d9<~aTj!0vR9jbM_giZtYM#+W%GR!@!SwV)vK#Q7Wkjr> zR!o5;rN*4eFz??y~k&?WR*P_KNTw4#MNA>O27M*lp z#IWHiaZ$eZ0rxO2e}Tb?K@@AM*Zz2qqpPYoBzb-Sqaz6xKY(((Ln^Lb$DI9F7#Fh}LD{>_tq~P&(9aQuf`y*vn_0k8a!~wm0zuHU?_lYKb zthNS2WHan#pNcMFuQ|`#0wa@ku-toQgIb06UH42fWL$VW$mcDNVvOMbde2j?tGPj;;vK7^x!bU=#wFXWf}h0p=3AF@R0Amqk8r(*-{ z0kRy8#1bQrV^v8!IZ;)_eaAoF8>Z?up{-}T=rmZG*e7@{O;e|*)rl#q>R>{?!e4uXBC;C;nKjP~C zC{!=@wIqcug*&Yb&s`$VtVlLzE*to?9|Ve1DFfj3IkJN6XT+@Qa~B;%QzI>_)T8+7 z8%X}Q$Bbo0 zkHZw$U@+uH%N!{KM$1~k$J~WXgEI<(Z=!~)V0useoms|5FGH6v+Ssk5Y=pISv={eZ zo{jxu^h(*u0QI!hT>5O#-U{eio6pR^^5`k3UFqS`DJWf+jz4&MaJ~nIp7v`ka*$`ytJWjcTr)HbHMb2DB23u{16wP0jj_m1>vt zWK=0`SWpN5tO%c76gj&Ct)%jdsM$xG{hzS;+ zEta1IxepWMy*Aue;`z$$#OIh%ro~T0uF-|3!HTPJ!9WR&oSh9jjgQ58u-usUy8-L@ zR)aOS%To5$t*!Z^%N34_V9ITCF`8%U)YZ)o5T#XQ#c_>32QfZ`yBtNXYlB_-85?v! z?BqWYxyl)e))^|a%$DnJ6kLoD9~jt|MJrF@Q2TJouxGfO9&#g(T(nFKo5vAUlsspE zSQ>(?Cn8;AT=8gR;%*qz%OP?39h&&-tczF_D>ios7izdh4{!hwBa_g-fEOk^XjK$? z_fn@#1JdEv$)xE8;gWX5YRs1#D76dy&qc6#h8^fYRVGAM+R9^STX{?wN0MRDCJHq) z8(z;JicD~jc4)}O{1GxRJF`-ZgvFV25#{t;+GCMtKRLx;Az%GMGW0k5a8_v|4NxAo zh9zpjkD)8;dCl`EF*l+yK95gD954Z*U?ab>jK`ji^k!#**ujCgWuY6wlh;omtCP4o zsf3AJNMK1zlYPpDIA?YM7OcD+FR<$*?O1kLT!j3K#S-~a#7V3{E~G8k2B%)ZB-eOA z+J;P(;vfd#9b*RyaVO0JFPT-+a*wqS^^{w-!<4q$CiL^g2jZqH!4Ck=>Is721rAgu z$iGCaE^xH4v7muLf{1~bqN%nC^z%p+G~lgUYjKVoti9GyZ<#Q_P~nnQUSi`8;hj6G zI?0+BhW@}@%by~eRwOnYnaE7Mu|Ud}{-~_b;i;V~4~PXevzu)n`kn$A?=QWWJ52K< zy}jkm^ZE%KI9nwK2pnj$sAyyJD6ME)unSO})^>mCS<8XmwQn^uHqI({IYdn*KCa=z zELX|{6M7XPl~tMw=h3pyKCCG4x!9g7gLMuz?Tzt^^GfAVUQeZG|4@De=mnM$Stf)9 zZ_+UZ;kGXZffWb9C!*4+q|m$%U&WV9e-?}prJi)I_)yi++*q-w`HE-%P=2KOio9M6 z2t+@K((Dly<1zx74FQabiiGzA*ON=Ow}8@vv4X`ciiT-9t30Ov_ZL@)+k&FUkUS0i zJ8M+cUMSKlz|pg&w;b@rEp3JoN0`7lw_xsCJdRatSC$p1LNh~vv`hikWG&!?a4W#) zR62+;o28jWZXhsXx5BLonGRRGlvM)=&Hu_l`eSlfMqgZR=opc8qC>Nwwan?ny|?N zXJyl53Z(e6BG9UKb6zqa8wbzyd|+%ucMI)SJ?O?)|4sCK8 zFeFlJg3Hml47+-AG>Ca4&w_+8IdaEoSrB0H7U?`i8~Re%1|Zwe;9O<`*&mDsB`VEn=8s`vzz3@UUqGP05LR|krnSh-kTUi(Ain8` z8Fsb?wcJHv5PoT9J-!(A9!V~8XANA+^BF~KLb^Vwb)bUFF__`dc#K=P7Wbd$n*=xE zMY+kJTTk_OLFl8V8!DwdOYLuB-}(xe2!;s_TVdUCnpUjy#|q-A%>ova=qB?hbtc{f zLOxdm+bWYTosc-lDSM~WrACrB{Cbs#WM?pd<3`}DtC)t(@H`{CMhm@YIcqlN@wa|) zf!o{s_#9oXQNeM)ktOR*yjc&sfQoC*Eu2r%E)j$|$L~$dUWcw+P`;T>_6Ma;FE$48 zE67K3Y0#4e2+fy!$wqU)0CTG3W;o0eU6@@1yPki$!1eoE(4_*0HY_r1JtYSDYyX$HyUCDtFh(ePte1owYG!-P-+9~- zliigl|LPYDJ>&eWn*vad6)x>~FJ2EE74!kaiD^-Ea;*LYPK*pF!Dn+Gief%&sZ{lC zjsSDX-=vg_JfluWy?6pRJ3OpXKv&yzWJ0<`rPI+rCnW2G6_5f?nJF?MEpS_TW=mZs z)iBPpJd-{e(*O)&C#+l(o~2(DB)1cxkIfC z*9TE^5Ya3|SP%w8E@YK2=^AAfck?6?+mzPgI?bYf>ES=v4~^Hn_?eeif9bfE6>s}k zq!ol9gB*kx&q?ZuRF&+{&v|w0sZ{?=vM#$xc;{HluK;o!kGT4X)Sy<+;oBT>;nyD#SFG&3K818Y6=xCCRww#{39BqZuN zcEkf9z!pzi;=>x9r6_EBGj(s)e*v!>jamQG)Iu{GElPSJ9>nM4UQEY7XEpA2qrT(o z-A7H6ZU1rlnD$WOWEa=N4t5hnJ6|TM^E?ks(|LGq&apc1#UjTOXf%x+`ZsMc=_QuH zrNhcpWwr0_VrW|oufXRCbp0!KpnG9cr86L=zkIh~Uze=v`2sg>h2 zHJNmb0%DGtzJ>7U!wX?OIN~|7Z)rq|Vcme5^y~cyAU9KU@Wt}emTPj;i5ocrirRCX z;zv67sqqg~6(v1zsyR%te8(8?2j`tXWw1v(`2jgM2M?A`j~P&`=8m!hA(dbaA76H& z80f2xELf+WjnDeb%=&gCX$%{K2Eb1+>i#ev=TDaA4s*m19urSHwrv5Bx(^hZoG~h3 z(U=b$D1K7lB*jFo6i1%I*Z9F|j0u(V&!v#j;Q~!WFkX(1ZdhH{>FIcDi(XZ2Sgt4D z@4Us(^ylngB1~UctOKh`O}W(w#|&N%Mp$G|B5JtOZ}JuZChxMRYaU;Hy_oazND2BnS&SSb`L=WC9v0sUC3hbOr$J3u)&yFLd6>5Ksy7jVAR zi0Z9BA69!D-Gc|xD~y^wSaTea&QxE(9SwnJjHPrf>?z?|dEyH#&MxlI# z(W)b&|TD-RoF?y$P_2~j~r5YZS26FR*fVX91 zP6FD{3I{dpWI2b4ZZ~ImAa5lfWXF!NL-$+HsyfkJqMkS4z#+qGx`Reg$$|{WH}s*! zg4jb%qvADGDSGRY@|j10sfKH_v1ot*#@XyDoAQgekVY9MWV%^H%Hu_tDrNpa>oE0< zu%soyW09M)2l)}%uh`BMr(v~1cD6jXe700h2^>WmJP$VWZ<=%46?5X?Otw9>sarOo zB8+kzU(289QXOFxb7_^s{Jgb9;(9`hL{z`k+HKrejOpOO`U?+1qBWWqdBc9%kaKXj>Qy5#ELu|`jVL6B+db^sYFW$#9yy)?A(JJ1bNxn%6aq_na2^Np2uv0*wUH420aU01u3uCAFX zk)pYRm8BH__BW>b`FonR!||9x(C*x)FuMb0xYgvvWFqjoQvF%Cik%?2uV>{@hOXx9aL|~ z!1%RSt~>MZ8%;w%3Ju_Q^@x`nZ*+<`I74f^Fog1$H@(er`%0C@8si5A!@8Iw#^23+tRc)qLSu87FP}N-%^tD*BOLzLK~c*WgRyg}Zw3QGMNFm7 zL_Yk(Xo(X`nhEx#pki(TuW}10l?Vnw6lyldP(Ea#X(hDRZo+lVWn=UcGa{=)e5w?P z(}V1oKBPXD0=sX*b2rJnW+4<&qUy`u78k;vC%0MLK`gxdoE~O5J1{9|)n_zbH0>00 zoqMb0*$lEGkTtC4Hida^Mxw9HM3lFX(ypD>gCh+@Y0>*}9ct1D)^zQFp61dpngN#j z*o|k@`Ifj(QAc9)%oRd@72zm!#n1?6qSea}ejQoHXpa0Rc5Z5*GA zI@3^}E#?=DaZm6WA_y2*;#4hpUQb9l2DsicdqM+on1cC+o6Y7AS$LfK;AM0)3?*O?0gUq#sK*B%JC;IE_IgzuzwkI| zAYU+o5eN1#h_m93(D8>E@LASeT~%fs0oIY*XPbRSJEtA`h#lxYpIt5&Kju zV)Yc)hF+>?a%XnBH5)OO%0eFjUM2*`Av4hSE4!hUV)%H!729 zn1a)+vv)a~YQ!BG-^Hv;)j~Af`Rf8Z(#6SmRZD;U zm4fg%hUj#qpNORdpy)Q!s=_>QMyfBLaVmQK$M-AbpKtc=6O#qEzXvJ;u z?HhZG&A*{N3y|Y}{-j>_*DJQ{s%QB}jfS5Gyx}^kA)`H{7)VA1N7TfuO+2Q?o8zrt z8$dBt!5P>Q=96V}KB9KHD=lb$BRUI92l97v4G9Px8!lK73>QGrpx24}!)Rdz*aKbA zq6^d0c!k5e7A~Y75K!G=P!TlElfR; z8ucF6O&dUPSb%)i`3TNkuBF54 z(16HYLlo|KCTFs#pjR1UV;S;3mNyO=SdB@dHH%hrbpLHn^+Av0MVL2KZIf>YQjiW+ zEB~%oBM@}ctCUaP#euOJsG7}Iy8L_gAk4?helu^sdC`7zq`l1n7N+L?u7^fnXz7w^ zrU2}31%R0R#A{x#15jzI;BRWf26PGp$NGa{YQ^(cXfw(Ob-Yi_v|OR_m4Wnaa5qhR zsD9S;_pvZMsXLuHR$5pf%{h9pPK-0MyMV@E^$e8+Wrcn0AiB~|)Ne3H2eNifWy|5R zTE&xtrp%GoEWTitFH-i-#4`|?tEAR2Z69~GZWX!c=BD0vn{*nOq9bXB7||TbKId~I z%}L991W{aL+tbX7Nlu$_vb@|%4Nn}*HFGVQDnEbAAx-oRdQ#5aXwSgT#Cp7xKW;ax zlNc6XYwS`X!c=39glYB@b;Y5r;K`Tty7X3ehM!;ByTqEy38~@yn+w8_gDR&KL`pq} z*l@cjZC(zEEGCmZ|C!5B-T@(;w+Dy_rWD`)oDPZyVjurUOmXB%7%^m z@)(dyR*k0P3F9m`71tk$oJMQAeys1LKHP=~^U zuSI?O4ZE?BJ1V{V(t_@6=|pnk?BGnTL7l2Zk1olv3-ietQm1qgg%XFn-OJ+ z^eM~(BGr|FG?O3XU5Q*`-Hj10xHQ;GE=z$|!%Q zvfJJ+b=0`)PoZlHtxOBeli3L0AS1dRqqV-sadcvy69o}1gf=#gE6o`8F>#f%$rO)E zzCh`CGVd+)&6z|Ay=exr>{rQwts{1Umg;(FUPQ~x!<4bS3KHpH{vqqN-Li-ca5Jnm z2*~w^ERZN96BhvA+U5hA4#`II<8yN~N`tI(n+$Zjo zXz9T3XM&CxI66p{qr*Qv-4EE{h*B^_r3Aha*n46n;cTw1efNM`dh&JPWKLd~M6aS8 z`Qp<$L6DawVZ1VbISUlpI>H`5!CvJH1@;Kf57fpl@~0Ek-F^-o^8o^Y<{wRpzdKg1 zq9s6n+{MNX`?*BS=IG}Le!MY^|DX`a$zWy>rw);*R`I(k{6_(%0mhnvbc9knmt0L* zV{W0^gD`7;pw-bakG*2Fc_!m@!OseP!jbCZ-1028P4H6M{j}v-=6S8O>6QYNQA6rL z_~=U}D<%^KF~nKu0L92ao&R~UB1l81E8(?Nka*^Ab@Q7N3}CZt_ap|t_OztZWwJ_4 zSvK9(Gg~e0NX^(hG)G0iHWf!%r49N52R32yl{IJVC~0JT5CDxuhgUuYLA;a#yLucD zNp_LWm>SmJeVC;NPD)`U`@mN!w5cyrN`o*sK64~mtE%(t*^T-v9lggJNSt@3i~!BB zE%2iQ{5?xk*O>G09H);H;!W_c#LwXg6RKQV3C|SuK8E9ya(G==`dS{_Eum~%8bD-A z!ANuDK$S4u!W%rw)wipb&zT$9(FfX|avQBVmX>tI_E9S?YGrU@2lnfQ1IBlEEVJqh zb`C{_M&z}kW|cR3v0}wYkn05;=SpHK`u~H8X%PC*3uysI9uyIMpwR? zpH2D2#}07<3K6+_ z8HOE?D4SL7ZgHY3K;rg!4D5-S#0(-+*y;IzS+;1TDjdhSS)w0(q9}UDvOX9xJ#X@o z2IH>+v+8`^tN`t{q7LGof^(x&$OTpvXhNd5GbRc{6)GDN}F&xhLA|>f!r;`Sc`*z@<}DE`JjUS!mhUfY@$3B|0g=n z%KAS2H#J6y3&%;&1zmq2v;430xZF18k5+ZPmjP`oA6XS%niBG1{HV_z=*IYbM&((S&noUv`EfN0Alug{hAXugt~8%_ zneXrki(R2OD>-mwm?X54TBSNvRp6k~SH?@n+R`B;RM}OmH*mG2GJvtwwC_>|irln2 zO9$X9FuuBWkT9~U?ZH?{QsQ#?IA z)i)7%U@P0VxikHO2*@$legkh%3DykYRlz@8q$MRQz|W1`7L>d)Gh57H+(pVVH!E}u zR>aGZUL>~RsL-6S(ePZh91X3e1%(*E`D9cX^YnsSGutNg5lqiM_Lc^NG6Ph{c7Zch zBDY-5SK=58>#sd7CEyMlb6PQHSB=G4YzMF=q<3K@o=X<_AW$rk!F?u@kugwdHL+Vx z(x)Y(LYsPg;81w`0lm`D`?O+@OPpyO(a&?%G(F~NL;v~{HUkZ<)uU`5%a=Xu1nz)IBmkkJ)IWTXT1 zD3yn=L&iv00Eq*G?b+ZLE=BETff)E~OEMmOPsNLrNQ$cWO_V%!pCh;_(gl$C>ww^hEx8b~!*CJNjiwh+c_m$F z?4z;(w6srh((WH=l%R!=JC(Iv>TZ3lD#LYx|Toe8F%JtZ2Yo$U;Is%sN)+dv?mo=)HgelAwpTIX+V_)q?|Ov#V^mwJS?kO z<5ZhTBY>Ek6`^D=LXu5oah&PNUsi>pl8?vhpjK3<>l!kgsEHalP;qdo<$k$Qu0=(N z?rtg?S_oS-w~gqX#n{%V09t0=802sjMZce3sF*h@D$anOiO}-ISQzu7!7vU1j6!V; zrpEK^Gt{xY+leRT2a7smS@sl_wu(NfeuFwx$HywhAeDWvK+Mvrpfz?(q#_C7XWhar zn`#)VKB!8uT*hW%AF{p6SnIiCf`XL?CTJVG`Q*c^eUEk`Q<3=WX3S?XVw+`e$?$#Ekkzt6HCXrar- zNCrjy%7OJae6sePYsRp;J?uH8^;+>H+{GJK#^+j-Lrijxz3oLmEv5^(E~c8z>)HM`iP`$TLM{oD)vhD;OOMi(yVRO)d*_0s&rY`w&-$NZnlp2_ zMTfWA*{proUHU9?Y#%0)w6f+usc6#UC(dj=apKscIGsL$XJ=>6&d&NzXK}U6!lG5ru42EBZz(MBgMBOVUMPAQ6$E7k{jyPclq?jS zI^*%sPSJv|uK{c!3U=7>-9-DsiSj&mKcYRi^iIoaa;^CD8OKse0JV*J4$wivAfp1G z$@13s^iFEdRrG!cLzNUj*<2>=S zTXZtQ|BXSGq}bVK>J2UvhUUHOXK)}KZV+(sG+&v2o4wfB*w|=LSFSav%CfI@7itJ?3H+Gn&OFxmd&dXg z2uEc07CfCv01{!h*0EtZ61+g3;L`Cg;=WMQTF! zt~-^EJZI0Ir=PRuXQfEG#qX@-M|b$8x6o}4Xlo`GF^+m&^|7NL5+CQNR_I57u+`Pl z&px^M^ixuU3sIUWe@U*Q(-gK-n9drvnWKdAEpl<1_*&Rh^%xCr=1ei2X7VX5Q$`Qf zMZn)}n@KgCVAqnhXw~q-DXtZqu$zxTN^U>p*fDsJhi4)h`ZNT+^zcj?_NmorhKJ9n zhoxexq+5!vYM+5D$ar0;kBI;EL+o2BuJpDKZ@M(@MyKL636wfftiH|lRh5=!n$RwjtP$-;bjC_X z4F~sBwo`75uWsbWFJuy&Dz&GMoj4g}@NFx;Ncnkwz%S+ls)@)q+$y-!T03GM0@Cm~ zI-U9;(5D=^MV~_TguxAabY6cR&!3IkEE zGv84ViaAUV;W&^Fqx=++0qGs=1XPrwsVCLJM3N#j9(S{uB`>jdw(wDFLccJkrXsq+ zB}kk^qXfAx%fQMN)rsT2MWS*A)aa&D-j=;(%zgJn~@N2zv)=7IcMouPA%&ifnL41`?udOgvL zbXhLrWz7pR5QWVgE-e!)dS<3fIbG-Eazm$SEXIf!>5qNMqGsYO56a}Jq#pqYsI=v4)Fg#M8CkkOmy5}73d^vEZq)A zB?hZtzVw8mufhkiLmAMaDD-=lq?LEoY&A_bYSBW^ZOnt;6e}#gbDm0ShRL)K^1X@L z<{(>Gr6U}BDs}-RR`4?FqPvv-Wj%oSkeD{Rv*wOQt%sX9OIX;>P&M(h~D{ z8l`!N<^dQMOw#FTj>60|D)kTqNT0uBZ{a*O{AKKYs0&a}@kFM~D)PC3-R?O`o35tCB#)mbACs3$#uEvojU5 zHCk?2p<{&F1cIaZngo1)D!gWM*9&%aEp%hpUPywDo(kHq6hp{rLF-Jqq#}q`JZFY@YB)WeLMw|ZKE?+& zIc`}G;N@vi9w_CubSXG4koGK})>3|P$1x1g~Kg|$22_j80gpj(_mWdu5V`BnC%0a@3H5{Ew{uL(3WtfYSlkUTfX501i5954+w^|pHKK6 zJHGx*?fwBkoR0`~BYFt2tHYZZ7^oJ*spwb-O+^IdX||^8(R2Y$$L-|kYRpf?0j9@5 z?NZ?7Xb^q)z9Tj<<)FKi*J%V45atc|SVe?ZUviuvC^~yM(NJGqEFh^}@|P07=bveN z&5Jga+9m96JwI&cnc{rsZt!_tc7VdZ7`J3+RKwKdyAx7JY?M@T(nNOW8KB52q|GQR zZfT1>uC{Qq%{CgEqh~E)6+fS_sh&QKpW#zCL_!n%*J_K}kA}#VP(V4UFEWX%K5*-A zR3Bt{{N;lE91K5wM0(1KzVETOxrnHN6X7}5bnrdeUHd>D@G~Rn5jjqdO2z`LNTi*y zuW3>&UseYPMxgi zc~pq(t8@0VYDFL;G%AyS33aRl3KH=cH5_}IhoCocUd5tcNrTW4C;J63y1q5N`}gy7 zFyFfc3v};b*9POrkXigA01UK6d^V#-$Yl>zRdWewfH!0AIHIL4s5B3(GiTi@c-~Nj zIsak5SVGCgQ3ep!ue2?=&iSN!$r%q0p8NTjNU>TwstqErs5JJa^0HkYM8j?}(3n=^ zRhTLzYJdLQI zvN-GwUj0Q2F-?;5))q3JiVNa9&Da#;ofqsTVpTny zN;u@L8;c+@X0cu@$4uPOT4!Z*Op|CZ*htbYfL`cpVQh0qQTt)ac%k_Nx?Qjm>Z23G zQI&+lRnOe~6BKSWm4cGv{e41rutg{;SS0voHuOtl2zNK3D&{RwqKdrzd z6TYdHxpTfsNd&>w&;8V5(eUDtY)L-?Vn|goQEN$r5p#x7(nEgZRakdfDJe;7^L*S7 z(@V|#@pf~Q6=21L+dliLjH@kNk9|N)uO@JZDD|!G(Ztm)_bvY$)%UG@6vAd@-&=zT z);YCg4G>OL3sn*zQZe04P`-?umX5O+B`%2RL}M<%R7L4ZqNOX_W10spCUJGxmdPws zWG@JtEn>8LVnPB@;TM#2M*S;El%6+N()zW69(Tg?sIyl2{9+@2Q&9J+(q_+|cUw*5 zx`l+EJZ2s518`E2%`01c6SVzRon<(<0_UXVIgybet1EPuKi;W=6a(Hc@64P?kC%~4 zo!D}$NVWQEXy8FIIDlRw>bi4O(tZLcI`E?^d<=D`C)QS*O2yyQ369IXKS(?Dj0iiW zq?{crs+v096>V)(Z6Jz}FXCrFET3zUAvtzFJohkffO3ltIl=6A0p~|W`LATKe9h^+wDoyh@ph)hjM{0mM=6X!VtVnF@xwH*4_ser*y z;(gZIME_N-Oc?(bcu!W$W zaKCOF)y#9EnyIH=v(!)AKb8ha_m@`MsFZB0nezIyfg4qQQOQ3?qtgT?5xW z2P3=~vJX7qnN*R`#jL|Q0dtSGUAzmNqnK=;I65mo_Ko8sGWxm9Ix84mpfZo)EUJ&; zZ;*%qkAQlXQK7}^sk4nrrKnE%5IS$@9r_0@(k9#(+b_>Fz zW>x{)n@QN$XP#c9ZPTAS8s_aA7rX$Cv?O~G!!sq3^-AE#QDGJO;S5r{X$xCsH@@%* zgF5G0GY|v9KFL^x*tzu5rGYE%z2Vpaxo<;35>2th{LDLNhz+rA&dBA{t%6asMyDY4 zBO2)%jL)i*e4t|`ZR?{gijY$#QOqI_wDOvdO{bHiD1RjPGEJ z=;hG`O+3ZGNuyo}NhxqEgN~|$EAYE2YZjLJ!~8*yV*~nbAxL8nkcII@Mw4UIaey2o z^`X7xAu1Kkwh+if9a9N9B+LK=Hx5z`2gm|!D=cAx@WAxedNh=%&ubbjAk*Hg{Q?#+ zmX$(bhR_ka(=vYLt^oj>^?H~mLFt?Z7wWz-;Ga68WW(=ig~JQ9vKhY77pu8P@g1P`Q2jKyL`$#ure6%A6rz6J&&rVRd&w$e$$m6k>us0!2Q z_i+@nWsJ64roRaQC>ttu47OrDX&Pvsf$EHH%m+Y$<5WC4$UYkOM$6LPn@-&+BU}So@h|-Gpg} zG=@j1oCpEd@>E)5!rd*4DCU1nA4`}m%35;e0Z|J{N+>7gK%?SyNT+bCKR=M0iZxjB zb>8(4(5rh-PA-5l=w`SH-B=B5_Wh*QZ>ILr_7w8m zHfWAt8SB%+c?QfF?-~USSHBRnwcnQLwd=HQd(Y^Azhg)dnL*Q#AkBTxf5rraZt=9w zHx|m2Bg=y4um(~EF*iY%d4e}pEE#LmXqRQLRsP5XqGdMPsfSt`(j54Jw@GLt#AECG zRN~Su!{(yWxvku97&i;N+VZ-@?nq2BYv}=DBwK`zYS+{;hm8{Az=@;M@Z_0euzRyd zODpJ9xMbQ%GsF<9GSymgI!rn_S#b`wWC|A3`zB0W#Ke$Kd^G9sy`L8DbOIfXSrQcQ z^1?ms0~1JaS{02J;hqbTYT=1Uyi>oW(QuT8&YG^d#iyTZi~W+S*;ZN?)Y*P+_EmQ8 zIbfX&{o=R?UJITe$Xebcyq&-*vYMD@+w7<6h&4_#lz zn*o%?4O5v!^o?`j3-AD3Iy*Q!eC)(ykDa}EY_473D%~Gq?6LJUxp=ACl~=^1V}da` z@UuIxIHmN#zgvMVgMl#9`8n{2hvWA+8xZN!oARemweLka2Zk|Z@gQJ+@*fD1L}=*8 z;MP}@UiUQA1x0us#w(_$&xdhVuQ$~lM-E{t2{woe3jU#5L;_oq!16I#G;XWGG5+>3 zRZy_Tw}NL9TtrxRO4NgCMDPNz`5~;{;O{pK+CG2s6tyvpI~5^D<)MH2$?>GWOv|WPwq`=c3%tH(2ro}%+I zZ`AFl0VP5$sDekg(;=%xB=r_P@;CqUe~&Q2z^Nz&Md5vz_Q6@DnHtQVjszKdFslzJ zgV~n`v#5B;VlL_8nU@9!lrc9q_wk1xuHpCZKK?QOojW4;bTR+X{KNCL`G+5xoBz8b zM~+Z}xg&pfWbWa=sm=W_wEu602;V?e*@zBm!r%N2C0kxT;5|2Hu4aD!fATkbcI_2etW`hi2ySbT!M?2hG{pl{i}+o`+HUY$r*hT-#?)gaN)do~&O=!Tr{b%*{X4 zI5Kx+u6AZ4&S?AcYbX1inOfNI){<SIbF6ZF;(vQw9AM{uF&!s%Z*QYx}v{ zKAf}D;!i8~rFh3^>$4e+L}tOCEa09RZ7V{Q6+f{$zPJvUSbthd{YZdfry!n zn2Nf(Ua`zP2lD~-*ODU?#cAu*AKCVVeb3u^NSDuwHWX>-q?Ii|oogWP)P%g{s#l6# z6%S4g;;31jPwC59ca73+WiaLFXWneA@I}H4F)@Hi%El$fR`9OYs#QGJc>SDDZ7aRd z^xU)Ex;sPvcrD7%TRPINQDs8vriDT^w*6AIAL)htm&L)?sy#LOfCfy_>)O^4&e^kvrk#W96A#9kP1E&&dZ_tLiDYuCjsHG{JjKkyhb~0%8uuwg zkVtBW4C7RKulXZMqVLM7#6(rnST?KWWY6iX{6jY?X9n)mE_Kd*;DV;6kO1U{e$3gK z3!T5;Z1^OTjR!6Y<-~p39{U}%?a+a_X9>-_l_{o3ZXbl-s`tVG$#?&H7%1ebLm z7LKt#k|E2bg4*1~UOX@pE1k-#Uay#C2k$7++B$U2%a`nJ#XP)kKjmD2ByI7A*3?;4 z%%pND(f!({&dLUzpGXxRbmV0Uv1}6So)0D=?Td7i3+rm=U^+X3B0QCBRIh7JGwJYB z{!{g@2?J4`A^w;)9@rbjMr%q-bx?vt)i`NY#n9`&ak9iut3Oa3K_!{Gfz6vz&6@C$ z?L)1dyQ`Dt-D6EFH3*m?6Fx(4sj3}Jqd#0XRd><-wx@#$$7-5nS+9B>OeT3&UH$S} z@M{25j+3FDx8rrv395LY=RfY@I6J5R9B*bYJWn-skNCB}pU~A>MuZb_ z!=dlj^+$7l?P1Qa`1oOd+^nrX2w$&qce0E#LGwKI3l6jD`ryv&C&_xTGxI{#1lZPD zpue7f{`n6koy14VQ02G|z=S1L91?g%u7kyLGLcd@j6~ZhG4p^~ZgLMuJk{ds)wr+T z;;Qr#s#kf*O4t%V7G@!=VfekeDJ2;US61j)#BwX7%J0hwSsx65Tb0n;IP`eJ3Z$EGlIG(gF#cOa(pnLy=pvxl-Sf4 z<0%-rQu25LX2>dGMP4#!Nvexn)c59_;=(F6p;9Vu+CUA24a=nJ;We%fXdve>sgYLI zkd}Mk51C*tinJ}BA`zPpl#w%e+#7B<~*2BK^MBsds$XsVe zy`<}pI-fW?iv*weXhmz80DKfy=e0EHMS;_c2N|Lo6|+M+ofj7LFMf z%=OarIj1C>YJ{yl)~~%>efU(FExp{P{G1u=4;MaOX=F|JPiAdWW&%%l&#aqICD`2eMt1AGLSmFgH zyk$e!$*;wH?|9M^dd=R5Y>qlH{l&%Au$yd9>OKOaRVPaj50>|j`3LF=wRiqk#{%wL zFG(Qd-q6Ab98+YxqNM&z`9x2o+ATxB?gKb1W3VB`29D*qrA5z_JBGmGZu=Kl7> zO{7;Oo-=20-<85M=Rw-m%O;?ONJV;S#*1JzpoYldl)#fV7I%qS-84Je` z=)~Ph;kDl0h>*?jobxBtGM~~X5eb^kXbs!EWk1C;}83%=X#Gn{b+CX z*t5qTId<}x{5>-}JA3Jgk3Dki1m8X>PaiqP_a`4YeeBrZc@@nov+-4goGM=?;RWWM zgUvj`C)y9l!JA-cVBhFqERJ@kLhI0Cl3@2S+li)E~vY3oKX@T4%DJk$xKvv5I&@1+L(c$ zLwhE%JGwQ1j^KbF^~MYZ3U_SXc_`{p2Oe^{sH%NiPiS3~K>0FuNU3J$biAs3Qb;nE zT}%+b9l|glQnB~)p|7)Qy@ET`l{SIt3^)#+`jnp%I#d5GwI^$X4jpViB7mW#mP~4c z$PUXn;!jDbmfGS>S+-mq)7|5bdxRTw&Y+P=bsW_#6Qx0>ZI#j84wjx)j@_gd>lGMr zJiG~`WU4Q9KA;mSnu1kOEQNZdxbT-as@|k?MzIRTtUhREwkND2o0zJ;*UO|r``+C$=v6eJb*!luLZtU2ZC&DeldNlHsi1?{|_X5C>e`PAVb-L zUUzS4^gHJ%ot8(p*yiN8+_{B{Hz{TDOPPNfw_;${bpC`WRQa^V-e_WQnAcCifL64( zl%p(&@siYYlvlY_WXPA=)yz_;Uym<~NejPJ@{$aBTQCi1=pKLtDUM;qF;dM?_x{sJ z+cnwXZ?sqAYo~G=-lyEf|4OkRwp4h&FpBPjuaVMN{O>H74>*Gr$b03q`R|w|_7*g; z??fBTC2K_>hUu{$O;=y$KVSd9(#Ic^t59PyVNj;0MbkThOsQSAQdFcnMs^^+%(I%| z4Mf=iEODu|wsyf`2Bu=C4eyg@_+c_NdAi(My>GgCVgD@@X}r3AQNKLN41IiVnLL+O zwX4}M33Stoy5nsoezE2)QlRc)zSKvm;f zC3v=&H`rAjyl*e}Io>xhed@}!n7xCQ#{Kd-m`JJT%H(QHB~Um)7|ok~eCQ^f2RlJ1 zec8Bx9p>asHex7pfa@VPpMKS=Ov3Iq*;ydzuareBS|?ZaEigp~PxpJ5lp{y!({O-5 z9T0?Gh$>Uiy6L3!x^uEWC?%{qd+-Up)8Rw#SksSD3zm+B|M!=7UTxgDa_2{lJ3oK# z)y8{Q?!IyN>b+MR_r7rNU+(>4_wBcKZ+v0*=Bv9mKfn9#_jcd?QDgVrpN?Mp`snhj zqsyNkUHV` zb?@3g?_K-r{;ePH-~N2N)N7BRGLM|!ef!tDH@>uc^R>qA%`c5Ezcsr4PowL98tr_8 zGrmH3eQEF77xu1wdGFdc_pbfZ{;i+v-+rx}*Ky=^ymRMEcYg8S7aQ-rvHQm#aBW{3 zUH-!8@|Dr$FODw%+vp1YcYAdGhokE^M?2T|-uR=g@jvZd{n6glpY2_{+}OMJrTtq! z-M{^XauJWBh)28cU48G`-OG);U%dOf#@#>czWv((jX-k0-5X!tz4=wD{LbjgmC=;F8u{?2G;XYciEdvE-H?~OlEN4>Lm_1k+_|4q8*3N>l}*3b5DUoMw) z0wtY@?tHm%=k+^pHtziDz3YwlzJKp>@>fQef5#*I-M9a+d*hAWo0K=z?5m^eKN(%WHQM>s-s@jO zooHCEzCn3k+q=56clE8kYhT>E_LaSB*LlADV*mD+%4Ix(GM-p{?`QA*{N4}m{qukP zcK7YKcW?fLdf`{Q?|y4^`Sr%=^3~DxpN_8I9_@S^rM&UGy{liRBEHEp@%6oH-`>CV z=Kk$3mvcUeoKMDgzSg*N?ao_`JHL7F&BlAbeed`0{o(GlyI;Te<;K0&ci+CTd*dg& zH{aU5`ER>_{&HjY&##X@Pd!D8f_na)(UmWcuKcJmy7JS}m7mkko1-hg99{X<=*n;D z<`1JQH|Xc)=*qjJE7Y|=8(sg)Xy-e7Z@jyA?Q472{&D}U&+otWh5cLqx_|pC<*I!W zRr};i@BO~<-i^CoYTW(W-QWJl?|0w+h(@ z^(+7RUH-}FGWGdy zMpyniy8h;9=e5z!56lAm!rs*{?p?jQclG+-)o;oU8VXE-Dz-TzO#4jyL;DuNHlH#*1zrFexqEUr%<1#`ggu@=XdXaq4EA# z?tT^Hb@T2!yKld{`_5&m9?hA*jxPV>=<>Hl*Z+02^M%n4QJ&B5U44D;Dh&e7)*E|Q z|ICx(8~e9@y?^^^xrnDx#M80RuQl#nyZ7sRzuA5J*6xk#yMO)~&DLw9*RC@mq=oYK==v{5JC{d0Kiqrc2GKiS zbl=*)^_%_M*UAMxg94vf-+lWpyEneI`_4D15#JtN{_g1duSPppMmzru0z=CTr1Vvy z6+-;q+PnJOy{kmM-<4HI-S@ryTfg1E{q=J8&m#M0KR3Gkz0vizMmt{|?fi&{{r;`r z?ce@JIqhkrJ)OS)&BpuRz4!ITy`BFc^844_8$aEBhe+W&-`{=bhr93m^XRoVN0+}( zq=0sje;e(5X|(fWP#f$eitv7K@7nkGZ~cD%_VscJizs1n@c#E2@BjGyzux=Kz3=|# zPj=s-?eCqRa<-qx?7IHz(ax7gJG3}{!Bgkg4a}Wu-`~6TgZ;O@xPR*p`?q(>8J|JM zXR`Ny(s=*p_r7=U`@1(@-M#Vc-FJRTS^sYL-ETAPCi3{3(au*!J3nQreU0hXwf(oQ zaJFyn-~MJf+vkw&bHh8|ZQS|6op%~{ZoU6zrb<7d0?{GJN?)9#;tMzi4;*buM(cC_==(az8I-uMHNqWxPp_HX}Vxr9%ngil}C zy+Kv}`R+TnD2u-mkt1sM3!-cE^QY1E-;H)&AMN~n^t;=%&tOJfeY=5$bnOSUSoUxI zasT$W%Go}TY@gqF|Lym0{0Gsb*LL51m3FbO?7sV*(e>YtcD^>+A;R-+gBK$0_F&)2liELwcHS86{DLUT{;iw)x4%=) z5q}qI}!fH%3aO`EN)NqOuo-E!u=#*kU z=L+Zu@m8iSD@n7qWZjiyVB9JZjGV@0o(VN#rocJlfnl_9Q^hrx+MT5#J2Se{cHin{ zz+D1PuJlF4c<7XFraze=ykK8%Umr4_;sTYK4+GbYeS~4*kEjQ@Cj@X+mm}E6lMbI& z&QK&Jof1N8GNX<(6OO0Jj5*V=#LUXidK1{`Cgfx_nBC)4?OE1`&XYFIO!5mYWl{bP z;ae2ATJ^Vf#cfPmJ5TmalR<<5@FYhBUG*GoP`k5BmR3=PalWsH4S&XKkDGPS`m%(* zYW_kITrqbiNzpXCu3tNI;)OHko_hMx6X(vn_{<3!o`>!ySzBP4S=1ZHL8dqL`a}tu zPEC0fK3`KTn`Dr>$j-~8FK1~q^Xj5k5xhpRYnZTD5Q))i z4wB6KE)#S6dFkAd*|saNDcDaMbIp9HRQod^OtVutmW6C1-LGmC$xT`)K6-V^QxON_ zmwk+LQR>V_5~D;yw%e%GvB1dBD2->8MDO9zi(h^jw9)UP44hrXe%7Lc7#+xkQ43lP zvbM@oI`gzfBtFn1`E)3ctu%co`+(Wmti#Q+z!_bfZ z7M$X}eVWTwOIKuhTeC1tTVwHKRr5e}X=E|>Tg z{p!kIrS~=<6(j4_yJ!)egrB-$$cCl82~;o>)2=?(C&?YK)}4!TIAP{Y!;E4`*Rm{n zHFnFr7U<(-@AX+oCt4#1}&yu0r+9ZlBRq7SIHOHFw=SdJh$B37K?97Ru zQA!)t0tIT{aN?2GgRw5hQF8K^Aexb{5_$W-(o)+BN+xXH4JX0y{R=-nn)^q=(=ZLV zn5vE{g&o+eNBWTQkSAru>*LsvpvNQqkp~{tD%8df^o-;h>`}lFN$^igpqMf`-ECN zQi|A$-o5pXjerR8u!f1?Y6~j1@j&T|&>FKci_!WU3-78S#?#ujtgDsx!6{#AR%YFU zTS4z+62bx*WG?)E&)ygo6pRa}ehdSQdx&y>(Kd&V{;U>-PhbGcUh) zQ0ttT>jhA(LR-+s+FW;SWDTI_9y^tyP?OEzcF#FrI2u)LAq`aav+-Y5C|Fswp(HCe z#ndlKyB2nvg>z6Hc+wLW^`bT^lS7F&Q8mi1B{hPtpN8XcfOf>6Ct=P`fmCtQic$CvQj5YME0S6D#e8jOnz=d#Pl2!M zyh6Xk?t|Cj(HM(Vl3eKEP{7O;HyM>E;Ez^!qlvRc@QZ$|ZL=CBq^Q+QiDtE*$ox%F zsO6}#PONZN`Bj_bFs>D?bGx<u5Rv3#vqVId|L#!bs7ei8ACskyFD zGTlO{bA?7yr3@=Xiwkl!W7>lNWmw*`LR3Sw6tCD?jN?-+C=s<56}F>N!98};(Naw9 z5WJ2Q7583_9l%=1E-59wStL^vSUSH2LA>EOTEy(l;&di6JjkbA=et_AR`6rLczt_@ zWh#DZP2pvTMH}R04)}XW)i^Uh%L7(l5y-hVLK!x-vHHI_)LC^0Q){X9&AT22v};Rl z@N9Bhv%x70{S|3P`irda9O5Wu&~^C!DiyV zwzt3&>jG^HC1DZ#@(eAK7Q$u|7b-Zd+BzwFwMZ^m zi`2X+&#JjpJBCY3u-TM;gVZBXhJtRbhxLAX;>nM70tM1o1$+Mrigw9MwCk;GY^`bt;vy6G}LDAskhY>KD8C()zx9}NwD zT4PIaM9sUNf?aL%!|Vxd20YH6HCk8DFn&P`O_ztFfb4YVoa>}GTN&9@lre4o2WFe%BMXLbUblRy(j3II5_et+7QrYS*&z#z6_gS{L20M!sLA65JK+ z4Q8+%PomO2ywr_wY`2CJKZPYFZaF($1>5>?j#~FXGZ|Q9No&v47{0?;_KjRyy`mCzH zX{Pxo1_ik%E3SO7?FkyfM3n3RdT_MTcIhpnXB2&;lnt~t~)N05wPU8HzKMnENmugYP^zN8mv<$%$ z@%4WAdtfMpcQRUw;8mWcGMH{F^b-;hHKIzfWA?^Y@Mm^WY_;48yE)cS44sUSV02H9 zS`J@yGxo+*FbZ(H)mW6hsw<3wW{+Ff)RLIq4e5og*c%F_RH>6nrsAEg@LP=5Hcry1 zp>QtVwMua?@k;nCNb|?zych+hjq<_;&}0twU8fQ(L>+~t9rm`*v^L|rL4Ez@4HV0e z4SIf*|1CJ>cA8FO+=9aUsn9M zwBWWyG+IlXTj+smP8L?K9H4gaYb7VYW36a;ft!XhnIrYfF4P%D_6{eL#iPsWy_NLD zy$~7scNb6fnSpom=NR8jFI6N%aW$Rd_Uh2M;~2ZLvDR~pJB&FjYrWr?a=f7tOw70# zA^_x00b(hFdy+iar~oQ%Z_KxbGZFPJM(0~|c1Y-Op0ei-k7;o2nQP8 zDCjAT<0@+fDjS7(X)ks*`vs-$8?x~MK!@&uYoCh8b|PLe&fpI)_)V3mJPAwV!%f=-hz_cu7>+#G4fc0g0guO#~sGPLwwK+AnV!g zRI)}x#*Y;0IxIm1W(T%JK}89#7bCkzO%W3HRjg@{&7-Kg{;3=N%1y%x>5HGjcTMy` zWA8Ok!B5gKR}G6YtxaY^R|(^84E&?KMsF?UiDDC)*U(BfagL`pz#UV)iV=~SkgHum zD??V;j*3YM&j;ak5Djp6&9b(eY(Ur6DJIA!mA>S87u8w^i6&mtnzXv|);GY5_@XMc zT^_T-C>027Y2%xn!crKGC0s9;$$q#MX%e;(6EcJ^!-Ut*_BU%<`^lN|f{ev3e{0HD z6&h)qBn{|i3)wnO{UfxXRU0N>$v9%5n<%wB=dYXfmZ^tuA{3RdV{_0Hv}-~xyIl!p z8@vXgEsJ*0nU6-9MDs6!4R*5L;wi@eX1B)8;kGSJ!%~5$scU(v|d2 zX%zZw#Vp#gcT#?qKBWhBfJ zK;PtUC?c9T$=PQRMK;Ne8n!+2lt0S44ejT*o#@(_u?ckSxyV;{wHL(|=ds+(n>*@- zb?5>W#%Q@>Cc_GaEE_~(kw*}UF;J9~@#i|#H5zlaVoHI&uF`7OS82SEG!Llc&{n>X zNvwQ}EV%e}*y2}xFU@zBX3DuijXeNuKiDvxFE+V|m25h+?am)8<5-DCr!C`UIrHFV zVe#a|YRn@;&uQi8qer3&?xQ&=v#)vuv$*V$b<8mSmFAt$*ewD z=JGBtW--HDU}+|^Bg^qk@u8Wexmw_+LTSK>0>~S02`QWeFv|j=fgdtrNZ@rY*LCjJ zW>;&CJ?uTBTY^-i`DG|92rb?pN_3`O3ah({VwaUKcgh%utyj-cHeuft*GcP$C_2b<8HZZ{ek4Kk9l5yD%NGPGc7JQN z9e8`d^IGr4Fo&utc7~OG;bKeJ?4nY|BbG)UgC_$Fzjs0{#;dmtX7j2}I}?VtiqWhF zp4gA7f}3#FzoNCqlE%EO0Q?|ny@T^(L=H(hXYCsz-bqIlPOg>`3 z`^pr_EopC)c2S|-?1T~I%Iz@S#BE}KvA{+iTOtn7zO)HG0nP5c7NMo|&T{Nk*Ksnv z3=0_3Mn_7F2NdUT{S@ZCMP~OTe!~@34Iz=pFD;bzRn4SqU5^x;+sl)qBgC-cJVct4 z2m}SII^GFF0b8izag^Q^d&G4}E+WDcrZ8$W;Au5l+O@RsNh4kM9Wdg|KhkY7GR@uw zaepYgs)bo*Qa5oc&8;(G1;;Y_P$8N4X=-J%;Sd?XkzM%UhgNc|Zd7Ku zD3SWTZS5|5)qKF=CI?V|x`k&l*lu`ifCjrza&Tv*-KXNk;#Eo^bor@8elfj$f1+w5 z#gi)Ryq1E9mTo<`b*rdGIa&Ca0#Fp~Fm;An5`zvEkNoV6VYsmfbBlHv<7}P=KjCSP zNF6C!I&Q>RBgIBKvYY6!`5L&OT1NH)>Dz+5jhVYOk{)|sDX!CuVI4YJpC zf??*5a6JN$TOHTg+-Q=SwU6hoqJs(-Yx#~jk|BPKZPN*`#^_h?1*NooN0R(@v-#A%huu3K%BM5dl-h!afD$3d%U%_Yg%tXjUGUz#9`tIz7ELNWP?P@EOJFhfi# z3oN0d=T|lJ zw02lkkHXf4$TPieTSC=U+G`6zS3yBYtTzGL(2j$*Nkz%BXKIgvDEAwvT_7cHCDDkL z09Rng8NCTXBDGSz|R!MI0y8i;AirY2a8eiFWZGcc{CY1|5bs z3#~W;?wUi?s?FS%zt`}(*MD)^TJ_xOK<~OveZBJM4q#Yr2M5%p%O&i6P#7sVRL^6; z(87aO4;5zco5X%0-y3*LPK3&uz`8rLX!4?yIGWa9qsep2k8RpgvzjHBQRCMUF6s5P zep$7On8wJs5VbAK=m3*t0U=MmMl6(SRM@i&r=u8@2A(X20jgtH9lp(1Y?UDl{TAgS ze0iaS@y@W@^F-s7Zk4T9>uuIxnC@(?)m~k;sh_?v7xJXxmiHeiE8uU6zhxetTFKfa zjxZ}*fZ@linDRK4Mtd?5z(!6Dw`#d^AWUw*ZK(cgWLB&rSzTmC27WY>zAa~MK-+InrdMn6}cN?-WkV_xd%7~_C6@%x+JA!3m4L=*ioo% z-s6@6OVl>P_H#d{2&Wg>3S))aY&)>xo>Ou+$Usxy-C3uvR(TVH5M|eTWCYZDPe%mP z4PNFkOQJ9jS~>wP7m0;ik08^A;q4$vY5Uvwa>C=2v^Hm^`$#B~mGy0F>ZeCx+#N8p z73AyIXJj|@*z+Ya1eiUb%rFXPc-arScWyZJU&mA>1)iaZCq(u*!8_;5WH0S>GJcQ& zea3Q5zg0P4&4-jILU+|z4fS;+hC)?o=7^?73&l*J8mgF3H=EUMpb9gB3TarF5-j$h zlE|xMtnLu9p{MQ<>W#Hc{XDL7gX1LPx|c@oiCBPc^)hP)%GEKOwr-)~m2fEPCk-;X zr=i7uSWdrFof+f`vz9S~!OgYy4D-^6nS_^y8E`{$)GX5#X!zu2As3MBtOz07V|bJj z!;BLAV?T_TMH8j_eCGJ^$f0o6ewrpHEG$i)II({mqFJriBobw?$d;^QU5##8H+L~+ zH_TrAqKM_aIq14I^u^RR+6_~jQbVO#R9M~JJUC>omA#=KMQyp)>4Ipj9n4B4>WD5s z>$NvE=iRjJ5^LAX7(-r);DKZxyFg2+wU;vZy@UD7XcCgB5rC_~ZK214ZQil&!`B{V zw>52XKm}^2d%lbNe&BWvFx*FPj8pAOv!*tULhQGy&RKx)*c+rDr zr(Zm#xhXWbY_JJ~D`Fe$N;Oz5^=y5^OucWo9Y~FV%Q|^6y;?GSn$sFY$?*MhF4Bc0 zH%wP}pRkWUu@_u#$?`S+hlvP`F7AFv+0SQqc_-ceg->t&f&Bd}8_M55&g9Rhpb^N2 z7XbyyV-Ig|`5~Xw(C+yBbNSMe(&FIKcX*1ZX_T{3AU3*Bvk6Gd*a#x2(cjOF%5w!O zWp)OJ;LY08VvkKxD+Lo14~BfxFqQ#|m5{+n@uEY4$BKOY^40?rl{`Ky?-f%`O!HzS zHenp2rfEJ^MH%ppPG;2PvEzyaQ*N?0o39xwFjjBX6hfX#lDnFr6uS*d0ia$IVaWe( z;t$_fwwxqE*wU}qTsFB=T6`hoDzR=$ot1p7y)YKjcGi_rBHdD#vcIlX#nQ`#s@{^K z*i-$DrQj1~>s>4NL|ZnOq=<5Hiljp30kP}7&ATnbw^#U#o$WEK@O-FepFiZ8k$k%k%Gaq^h| z0=lHf4!~ECDH^ND<7{5VC-(lycy}G`)@nPYCS=@`)fT(2AYb2Jve5XF_EUEO`DR<7$_TFv^a z8k-&4YG`mXPE|)VRaiPOR6T+t&*xkOCHxdYTIJ%SPH-@P6xt{k607X2(#z%pSjV?F z>s*KmF=swWp@fy<-Xg^Yy@Ep{%ayi%EXTntN5L#nbx|McD-o>=^;hL1UsgX93$}z; z%Age?2bMxpEPbk2iZ@q+B#S0+K^(yjFJJgr75NMpkfL9Q&! zX%O(uNqq&*FH&5H4%b^Xba-05(ODV`>TV~jHA7b^J0vJVX`7 z{|4@8X3=NxSEF7ry7$$E=g}q`#Ub*lb&UophGDiZ2jpHT>&s2jC{uC;{6gBefSJUq zOk*XH_=PZ%jft3FYZDFYLLFU$d%3G?V*>FChsksn1$l6>CQvh$7ZrRttqTgCXqU`< z3wDv1~R(!gu11;xv}$B({iGrH)6zU@$yrQX z)2LiOxPZeoCRs34aOGCZk;_jjg^5Go>Xyk3sX)7mUo92XiC?3G`l1~yQm}O0hUa}$ z)o=KlzVgNxl&Xqo#b~5qTX}m$i!mQu6_UuZ9j&npdXZc5NetO$Oy%xvEf0~- zx+%UiA1GGWl1Gh5wi8rXR}__&x#H9lSLGO`P7@ z_9HJTmTQ*cLSNfx5?o@uXU}{SJbqM)6OXY3A~+29G_#&_z)z`%*r_##e$U#if3zR< z(IHW*W6f!G+P$?~9omvHS$Xk8J&ilRdIi1ULog)b_3TYzW%XG~x$zq?pd1IA#t7Mq zJ&M?Ui?-{a2}s@83A1Nxn_LeU$kG-b3g%nvwWE{e(SlM~PcSXqw=W;b2(uD!p3(%m zVIRLjoQhypL~cE4e1kE+1YT_SssU!Ct3a*sKq6rqf7VNc361hSIckRsMMs(!2EjN< zgErgY4qA(k!bCsn^)XP=Kcsr(RK8O z1%k|IT)}BMsvX8qzv}L~Xk-JvGxln+=G4^fS!II4;q#`sAIUSJex)L34eds2OQ0NC zitQ#DTBYS$ustF3ReO;k-edznrFJ7iH}}+5Wa2_f6O;>)+7{nI79(0O9tsU+>r!5d z*I%!}$r1*OFl+G=eRQ*VCjnwV;RTVZr!XWirO~!x5#(i>pty+@i_}+kRIZFAEF9eB zRmg%Cp=w=;Rk0|D04^mit+{J@xS4-hc^(pwUH?MA#NJ6W#%6>NS}VJDZaJ=6gvUi^ zizP(Al6|onry6=xUCU}JHFvSHQ{{>?-Bmor%BKPM;pg&v!w})o0Fir&L-V4O&D%IMaRL*r{7ObFt|jXci~6rv^xs$jJ>3vrPs0smPI}m2jZ1R7kr>s zUqp=8E;tj3csx!7k+AUrAa0%0GQPL+I8A*S4m#`b`HeF4n{y_S*mmlT6BAzl{PWN4 zq$h7uG_i+f_C=-y0>hUfXQ5zI4y$vm=F^RlJ!TkS{?;Ung_AeNw;?};zfjt!IN<0y zLMXZp2f+%k2rh2X)$AzylOzV#oTGE2St#<6W(q@EHx-SPyDHfkGWl!~^A@2jz1MG< zPT_R{D}w}O;hA5hFF~nkBa+5@mnl1UhF7!G8AfwlDUWMr%tw8x>fx zquolqj~oGlwW6;-{~YF%m&sr3ET@1*9NGfAPH*O?bQiF^&t0#UQJAUf@)~!wA0Kgc z=2@1}yh>67ml+yhHT*|kiEvf^DCcHzH}V;OwA^D!CGgHMBF9n^L~sz+!Z^rY#e}xX znW(j^=mVmd&81?e1!S3Q0 zL<)V^^HUI{erGJG-x({>#Mb8v9RXzX-V>Sgnz^d8BoZJ4ahb z_r(Z#`2d6L9qKr>fJ;}oeC?x@f+iArlNWB(`^$XYm)fjmbht6cnz z>CC{raF42Nh*lQDRsLzK*xMJ=9opRM0`l>DfB60=#cR*^^HaP}gSP~Yl*!Csj7g!rNgRQ^z%AFR z8ARNv+-Fl>i69)S$J{l+iP7g_7Wu9 zDh)BCbALd$6XAtK%XE?1eqCnAGN;gHohdH=C`^SxO}UE7a1pz%g=r-;?;+D2?g~A$ zg2fACG3@ce^Izu|o z(nc@2bNg_sHlS z%-d>wzu7DaRmGirbm5h0zD7TRA3;iw!#Ef*zw1W=DP`KA(z>LABs%L@GyhUsRaj3A z6MN+q(yNk)RqE4JRp{vzQ&a@8NoimA2=WEY(EvbYzyOcw(vMsA{Y(j&p;Y5jROK;c zUwrVZiO0BGEv@8Bjgqdq*l~Yl&Y1+|?2M9lFgHpobp%-j1OVt{$|Kf!JWt{u0&@KWzE6g*6kdk~MviNi^*2G5%+q0ztv}^a z0<-mB;eY@4-%mjz`B1F)Yqp?{jg5^5_wG6P{qVtk`rg=L&-l3qZ=KD1cQ-a4Zf$Kr zhK;QUcke#@le2Lh1ej;Jp8_f;L47kI+jv~_p0&l1-(SgReckyhcBa#HCV4)~`s?dQ zVLq7;dZ6I0!$KpPvfjP{IiDo6QwlEXyulaFUOen!`u^*u|K5E8t7#CH-MtZTNjMJi zcBvos-rl%zOIaeKaHBP$w#;kaIl%dna}7e_BWnRd7mfom zcQD|mLz9!&ioz`KqB=6`hIue$_sxvM53SuhOoryp8WzEu#Y7nxm0iRE@;GZMQt)(# zUqZ%9<21)JFfzTvd~#N?0B2dL4kz*lL8R5B0IF7at|GmTkxlsvVQG+rQ+f~=&UYyG zn5tqZgyr;g0hB5L zgI__p>j9b55Y{dV`np2EPSTD>?T=8r?+^?`qK}Y>C0s{T%+kb@X_b90D5`ai{MD8P zR1~B;V%7SfxM|!~(^Yp2EK?xj8moxHX$V<2H&h^e!1l`{SIv|2w5;!ZRK{oDFjjRF zESu$&OP~08n#^$X8tcDkxKEuV?)~iL$&2J9NT2xC{V-O7U#Eq4kQF@0ZnG>{@Hby%&2g z|81d7_`K7b`m>^ax`Zq~bmB1?O5z~zA8`2tqwuiYL}YE?e#l>BD(B%62(s3%NwAYS zV!D;Ks}AhbXf|9x(qW%aqb&&BkA z5(yyf7wi7`sn`D>ZrrT<^YXZ@RRZaCkNjOR-LSOMVEuNkfYAnma; z2w}Pl-v`cq5~Z#)nCH%P4l`di^`j_A>Bhx4$sIp)25foIb+&qUd*31CV$INg(s8yn zwldqvvE-ql5rob=;IMXJ6|@<@=oN6s9iarG2Az z=X^WpK~plo$!k%QTL5#Ohf(HzJQqKECw>|i$OoN|<>Ot@o}h1w z;WpGtXO-lcrL5D*;f0s+$*{AHTe66qINW*D<3~TU+qYXWT@asj1^MnU*<0j+4Ac zdvCAC?FyU@(mRE2?QSxXv|w1Hb_4ArtUwDGJDkqjWRC=JLMwsM5X;9D!uYcif`k0<(7U;DPVNROxDAe1PwY8*A43e7o#BGY zFzTTl^B9*sRdOQOa~DKP?uT(!%>dPl$|#nnv8EEVQe7GzH8pL@nhHh`*$uMn=FJkh z4y(l_uGJ9$>=%Q4IUwnhqY%?5+EM)?v>ZeR`FdOFmz|vdcm%_ToIPM*bo%&!zeq^O zngmQG`W?v{39v@86AQjbgh=$g_#ipl_MI?xLRs$i?W{MOXOp(yIoAdnpbBELN)qZE zjU1vW6&gI!ANwU5Ji-?Bi`vwNXp}&ivhx1sW2bBuOUdZ{1#D)vw)b(ksdT}vI=a36lPU+*kopjvDOS(Qb zYTly|oNa|LpkB`W)X$T&b9R<^UQEP^b~hNHp;yKfS!{dQ6ITw90tLJd|KSKNyD7(C;b4q@kdckD%yRg zwMM!;8M(c5K@$#m#zQaHT8owLjYYPXN&ZHbHR@gjDigyH1SI4q)Mw! z!hGV$rH=C!U^-L()EW91H~|E~07P!)oJ<1rpij{`k#2C!C!pby@$r|q#kDfoHnd_{ z7g{3Mwj87|mY!)|fV@QLEg~(A{+pqqhI1ACi63J_5fKL#qUK)AL9WvhErb#6rdksU z5eOMn24<=llQ=~tbL0$j)0!~>uIOV>8UziiOFKd@S1J_>e@+U1 zSm^f#TH}RHa^O727>wbXx2d%un~_WjUDWw4O<*B{zL+*Fi$1gFYO^ro7!yhXz`qIj zz_6}Xle?SNO6IyLpjaZPaJX!`|VUy4tIq;Zz+D_a1E; z9`8Vl^0I{dV3P&I{U`GL()fl){PK_DFrSYC&`$JaDyXfj1+1)sztAY2Cn;?~m6y9> zwJksi^_n+fLtWLnsWI>R7Oa5MZVs$Ty7o9qpiH>F)d4=$*Ku3lpv7kw#!(yC7gzP5 z8oAjn{!HoTO%E8iBjDw0jUWnL2Mu13&_=YSw z8snhhWHiU&kDH5Z$)a|irtMdNORJFDqpCnGcN)nbt=ZurwzZVDwt48K?P?-4r>}RM zA|L~<6I2i{a8sHt3?v2S9c?_wWXU(gtVX^8cG~0u&)X7mK*v5k+z!^f@SE`5Tnl5k z>^JNqb1OzkZjrzhc6L#Xkq@z#7E1!TI^YWfcMks|=(PDxeEW8^lWlhrFFlwa!prag zH1}l3e>8_?^^;xyQA9sH&qsz|!+g*w-#|X>8_eZmjzZ)a8ESmm93yM|Jw7I0>mTjbTD;ck zJZi0FYcULrQp#GZjo^CYSnf{L=Xu8+sn34L9jniuo2xPRBO`~zDTN>ZMDI6cHn?|GGi`khk%zAy3M zynV*Mke$zvkI#^S0ULM%radEmJp)cXBQ8DT{COt+Cg~Y*;~8hfGtPo%ocYd(?aqkf z&KR$qA(vrGpGjnh(awm+&WORzh_}v=tq|fFg2Ey%3j8BPH$cSUPYPMjFyzHqh=2Sz zKcfMDMt|^MGCxB!u^xmB=poA3T7)|&di5*^e3BSbU&~H}hqvB(6v6kaCdA(>q=`^Z z(VXliuJ6v>h;~qfRrs!${!&cNJb8QW1}qBP)@jT0GSY1_5Nbc7(>Sv@ttr>+c3`y3 zV0@gqNiPqw9BO@(dgxtF=d{|1+q$)RYpd1i`{F%;EOPiF2ZEXcsN(_@Yr&qEuoyXzM% zTk}9}_UAIeQh7g88%u=%BS0qc-q*E`Bb1^%3R|qeeuDxrd~KoSPZCEoWDWNzdDYJ@ z2PrQgy#V?Q8bC|DNg2!%9kWKL_yEH%!yqhPH^jjAM$nh9+_psJ>`Z}pb1r^M@FKQ` z_m-+pir!SY*xdK!fuope^?{R~3q``XD&%31_i!J*)*M;v{ktvxqlE>IKrW^LVqfzl zFc=LGdzdC!hCk2@h2K#`f2T=C@1rciuPOaW;v@Wy>CcG%p5ot>KoS@% zGzjPq*(2#!fF%Z0;Q$K^3B-^LIQS!(M+j{c_=v(Nq=$t51PC<<^9f-W&>7Pfp3dT5 z2o7{r{F^3-~BJU=Ja?MX~GpSTr3SV*P)jFOtOLd8JSjN zQt}wz30b%Pk6(UXTStLcBtgn8N-CML3@8derxyP~NRa_;ziQ_?XpKWq6XH8 zMn?hpEwM=2Bd;jjdlv^E^1YE;O$4eCYbur;`pea zx-k9q^Yg=P=}5q)q0EbWvt-sL%P;Na^7mrj5j0qjrSomfjSllU$a+{6F| zhkcl)OW2iic(54T^gOjroZJzh`oB^|bDtKkZ{4w*w4d#Sf;yOP(NpEE0IscrL`w#^r{t-D#Y?!4n_UA1}pwg!x0 zv)zC7!V9U?TLtv9{y}Oh05O7C&%4TPK zR2dXQz1<@i6vNsIQn)H$JuBXH z3Re`idlzflb_W@v#dv`uUBF}>Rv=@k5h_|hE$n>Nnrfs})lo@W@_~^$r9G`wvEFOi z!=u(_tKZsaxw%*M2qQA}vLwaOVX0&w;Rmcb0O!mBxG0C7z=0Q_-4Aq;MeQ-W{?#xw z+x($9^|zPA2rjIIFt~B5F@`dshH^43x&a0``NmCcbJ!zDf;*DJNyjhcQ<-QED|DU> zw-2J7WIF<~h$=wJ;O@Z$UQKr9+Y>>tk>?*w$cJL&dBd|a8goPTZtR7++;L}~hTOsM z(1lT=u&Q3dh$X=qnlK0fDfbyn={A1lR z6Wuap-7;1sTdHvb*BUDux-e#r!(^VJw(bdEK2#9PxUmhsm;&MiBdnfWzu4{xNZV=n zyGT~t|CFk0b`T3kROEdaX*(6%s;&*M<~g1Yg?B;foWPgEz)}bm$%P=DK_usLLW!%O zA+sFyLkx05eTQWBve{b%rRNH zr`V*ktxOP^srQ8Rqyx+_uv;jLTcBxDwfziThrH}ORVQG#$}{y?wvDbnAtem4@yN8(Yz$mR!)ELbjGd8B0T{jbBs&7o4(>}O@fEdwpbQ(HPUL4GUrx@0(o3@pMR#Gl7 zcqs<>nP-6pjjuA~JKS*xH5|}zC#w7U_Rx!ZkU`i_9%=nsxFWS9wz~hw@asn$(eqCK zfW11DXpI1^(aunyGZN^Gy&=qH+bp{`CO?juXEa9O9^|Q~ab}^*v}YZm(y|pip1wMj zvOGd5mEn#VdFrzx+9Ij<=GotW+_(S?IT5F`QV)%938qRUUkeKd^mLf?w$0QOTW7eLhgI-1WK;Nu_ ze*NavU-rJ=dyCXZmpgzU9Ebi6CF$V3Yu*=F%VAQwnH@YkEIMugbQYJQj$6HTk8#)X{lVMAZP}joYgkmgI_x~czr4f`=%-F`wLZAV?p~+=n!IY+ z!#SdXN0Qj?k_6;4!uTZ?0cn6KKDCxp^ZdNj4K<8VfHdOg0xY) z)A{(My1Y^+x3a8!QfbF4?+MDrUp?cQ!S*Yt)W8-6A#HGN0I{}?`_%iDpSQy{y^$xp z+D~zh@VWZTz&&=q_bRPB`1R2J$%_wuEe`h`D(+A1?}=j4pSAtidw1{@=>E8u4U;rj z^L}z4vm+VUCggo^la65%D;&%^5;kf_Qr9%CmTv?)zInTEdsQ0`3lBt!yD+`gA zY>{gm(m6w-8?bNlq+a!J(vH;@ovz7Kv9`8&!5;9#rMe6b4iC8}dg*{}m8llM)w&3J zgf*hw5%9TX{v$sk-Is@@T|T)gBg<8RfvT?I42yFyQ}^|GTU1%7jkXgEAJ0JvfMh1Ed5YjTxjFgXD{yoiV7P2jfF;CPtXA?(T41Jr}%_ z>Uw|Zrlqw4W|5k|Pm5Kz2ovDV`N22lTFVXy*sKZfKt_0Yr87Ss!ErJ15X&$Uku&Uh zbY!jBsH(T1Q$EL-%;@8#?AOst7JjKnEY9UAN4`o+8~tbxd#T4lFlG_WdXmiJT)3aV z8+g5k_xbPlo8D$`iz5P9v(|0s#|M9&gn58L(YV8Xb#a_(C+O8)2+ReD5+&blm>$-D zSzl*EBUosrvfxilk7H!Sul zD>+2JDH;l<^o?HzIN{sPHbFoMq3re8G8y^;Wi|36F zW~e;kmxp^$@QtUiv=9jTR6aXouuhH5I_2vuPalD$0jc&H)4XF<QRRb zAjwQ}UCqKY$PcJNn#b+XkA`!MQ}-Ak_(#EWRk|Ctw+x!1%9^F!7gB@Z4;!VaIy}wF zd=7&ajXg=BfN#eK{^8kK8^4fU@f+DSWXT~<4k@`hR$%NFD+{am;TX;sk9FbfA2Nf*+1VzjY32DK;mbQE(p1*2=1{r z{ifX(v*p@m=bMwxx_thoz1ijS?i&C8rafP`uoIqk?5v%1+~aS&G5(pkN9@=UMVW7J z26w+X?ySR?8wq{(@9t6O949m{ItIdG|_?5d+xH9m)N<=C;PE0|(CZBr+k z+FbHghnD_EAdHa~6xI73U=*vr8{XMr3N%JL>e!oqQ zm%E#|E}X~NBpl~5o|kfM5IcY;tuU3df`yM*ty!P>ETFn3`v14)W*8mNi!7+dGs zylJdQ8eC*FCOMl1#yQ+AXF@ONP;aXi4v6eDmR&I|4vZ3=gddugo*AN{sPv{~Ww$6u zu7sKfpuDNHZ;_6&Q2(_e0bO9n16~?X!LF;thS~0X!@h}+7R{R4U{-x(PWH-JLt5XG z)toH6SPX!KVr1e9ZArt&1BQ}l2gPotUNWf5~C87gdy9Li#(-E8NT3Lt~5qpo;m zyt0vrLlyV#L&J`Dh#TCQsYZbL$dCqn<(ZQOp-G$QTZ-aKqWRzT{YA0JgD4X{Y_VFDD=17Vk4%1_gpDe#7MGv1ha{Oe1Som&85jnYkJ3Rk=9dWqel-9 zdMSI2#cL&zeEnLYaYYtMLLs;HwZH}W zC3H4XbT{jv3*c+S2QATKMT2D@R(6I&p9;-^@BZ>|Dl+g@xl`r7iCLSM=aWmj$rzGP zxWI|c4&|%Ct+-tu|MKVoH2Vt|`H-QY zhP_frikBl`I~sS2R4X>JHDm^^tjJ8QE$9T0L0C!>@q;tQitr4L$u$>>?RpAx z%M*Yqm}jr{w-v`R#gAR~juuOY;o|02Y)-;aKC!I^u~h{PtuVr)Sc?rMBP=4}CFO;3 z%TQXbbMT(G`K;>w3Ha4e+8+*sS^hLU3iCJmm?jds>GmiQl*C@)j?75VC&?&aCuZpQ zSv%dm_we@Zbm#uJ6dS7CCp=OVL$hsX`DuwxC1R^#WJ@rh60Ze+T6*&Hy=O0;dM)}Y zy?XoX%@1A+|CU}nd%E}b-P67Ow~t>wc?Lk$$5PhsU%lFY>$T{s^y>ASXZz0xfcRC) z00a5CzFVX2n+sCmQ7e!G?P{y=72~XSrve#8@3|pWn}pfeVl3Y7P#mHK6(hAeTE#i_ znQ|Vt5hBl&(_`lLD;4N$YQaqFrKa@wo;21gsh?P&X}!p-nqnjSU;{Nw3*Ad_P@UPA z0W6JSEsf|@+$Xn{gCA^|^RU?E0cPuC6uMC2yRDmEs!IoUcB;c5X|gCAiGx%GL>;zZ9G&nhSMnz z&0SUlxc75}MUr;@^8IEIdpttzY4ifK2m`{T$ z)Z(y`Qf*sDS5|-uP++eFMMC-XuvUZCW7`EO#L6n@n0vNTWkFUrvIg}eU#c)_{kAks3kMcfSv9^K_ zvtWqVE3hC4j?eEQNbn~)XFFruXu)8<)Y@(4&5`P7R$(R&*Sr=BlY5Nu{n4|7GLf&7 zTXw%^P9W$!#Mf82POXe>ol?e5(pa+GPakDR;W0bvCy;dgTxX3Mt4LvW*e0KBB09+5 zB|r!Z83$0JKL*_$CPy)OoQX0{G7CsTsx;g#+-MpQk{|T5@GynM);NG-6+?Gp#}fyL zevcCvOL!Z_Qq^<1$JPOI?JRC>Akdhh*?`C~Z)ME6)yS?@CA%4~l5WfdnKXLJ5V(wk zDJZYlV5#IaJCL@xi&g8q!%YCLg9Ea}dt>2_B^b_iU;&h2OfZM<=z$CfYY7yW*`Pd1 zxMBBz>NwnH#&~gydL9?xI%5c)wo($EE8z)!hc*w^)By7|ndRZHh7EP*) zq1XhFw(hIp5^Xh51w+fXn&M2^U#wUxZiv(~N-XUIuU1M|tvsKA)oJtdidmd(sIGW>#oLUxb+`VOcx-v%Vn09v zG=ST;*>}&Mjvld}=u+NdH}(~|0mCHCvq#fpG><@_vPUm(V>~ZBQ-eR*m5XlGVu7w< z?XUVq+>71+`m6u@@2AZ!fBh3(jr#EZecS!78+Y$--7nw&y7BPg>i*a3_^huxf5pz^ zm%nEH_4T7LpUem7e7Bwkel%sheFJh9ce%d77tUTh>|y%;>!<(TeZj78?e2|$OF~#x zrG2`}^#;FSnxHtI^YIR2vO9fe>_=H}ej^+^Z9W`%-jSb8oSU9=2UaXJc1L&Eb=AVj zS9<$CW0Bv{%$8;79__3_F$V$MxgjsNX8g+P1r+EGdRA}jABRV1*1+XM`uGT8F&pvv zhhZ`b)?s>Es%9#+u<9E^mN;|p(oJST%SZ{#^ zX5eQXkwSapCsC5&d1yid`_DjSaj`kWk}fXibR>jsC*f#>Km?LC-On%wBHn6S=m1%6 zaSC+k;&*HUBkmp7Mm)SRo^=ai?hr{h)4(7bM&S^UU}!;(43{p$d4?xMp)yGXs*W;i zm&+eZzP&`}uw8{4CgRwLjg4{~Xx86?V3yGhXJVW>=o0VzI-kzS6q3+O>T6!{1n;-? zI5+!wo&p^q>5l9{KnDcGDS2}2=YAfDMpRz3Kc2hJ9iRvTU>)eto)OEhu^Lo~xdaJ_ zbQE?7zMnEhiUtwyuO~?B%z;6HcxIv@Tv>LZsX_7GUIn_3R`Z=S(0lanN#TIpno)0rof^PLi|*uzd-Gc*JWNIY`Zk7yw#)vfUYl z#{x1}kGm(SkC*4PL>|aB+l3k=H?UYK$j_}^UCcR~y?ed;4v4f2YjoP*-TxP_`MO7GGM{BSBSc{(M;8Z9x!)Cn@d=faj6Z1!cT+A>ogh7hdLrW?V9i?be$HP{jRg#^(UaDBvXmNfB)zIazxU# z;sGmfT8%4sh@?h%?5xitU0CTkE;4wY#q+5cI?rg!iDcww89#(eY4osjO{O74Z$5GV zF^oW+ABRWW(5E6)eQ_=LybSV_Bz>=9q9%PdUV4rGp2H*({3M@02Q$ga*B^r-aUABS z94qnoiMy((UlX`blIaZCWe^1>aa_E;HtZx17bvMopN*OJ^ArdoScyH&)6X-ptGN7m zJ?n4Y(?!uk9)R$t)-L~b1!Pm-?yLj8^1)B@a2N%mDR`4fmn&qdvW07St{Enm!uA@mtdKLdqlfC z+02&>c|U6H{%bP$b@)Rt9Y7brdJNvedfb?){r%gQ)WD849|g4MZ=K59*?bU%L+fk$ zX?~ka1<3Gr*4ph`i@n@uu@88LazWQx@JTXaBbk+3XVhB<3h&;icAC22sY!&z;+udu zH|LoH6|zefXz?|22B%~;$2~!`qYnZn4bU?HUd=PyM_^r8Qj}R9B2PQv-9!0$v>ee! zN^|CRaDel%ZsB)@QH#t~>7kESo>+(!+$1pa_l|+2{0%kF{7M=OhW&s2;a_!9F)kiv z9l^-$*=dLEWeiX86u7RqxNf@9DO5z@gurB@if~`=W>~*f& z$Y|td(Itgd0)-mAbVx)xy_H__zb>4|6Mc8oX~|c<$}L za_((yK6C_?9i*ev=6*;{m^nZ0KkZaTp9ZQaTJ>{JG$RY+{@$QSsOd1hC>*V%sB`^Nw8ZL{ z5~QVKk5&R!yt=S}y&}o_nM7*AU@IZ|iG(O_USlLO;jWdirSnRVejY)(v;=LuC!_Ai ztOPE-xiWzpPCH>7=0At|WN*};%`smVJcV)9kNEae*1wo2{vpUG$!HzHw?ixJ&UFgt zhOHGS@0<+MT`d=-6j|x9vy$*vDB<^j_Us}Z#d63_7O`j(DC%b@Ek+K;m6-;3O&C|8 z$qENUYZp4tc`N1wP_V_Z38#&r+QT#$q2&SxCg#?uct=c+5t-Wm;*Q z(s9xYuXw>=Hqc{DDsL`bXH6k{jgp<0st#Tpm#d@uXD@6ZO6bH^_Ff%fCEbDGR=r`d1wWE&>WX?TQ_Itx!Rj6#fBfwM3-4Kue=csrjB{Ye!SG|LGCQkEnIT*nE6%^VQ$AsL!zAm@((oAM!ulXe z2J2HF!~v`|_ntg^x&N%i!(Vx=cLR`vPyt0e2tGg_SlBpmf^l|`7(eX2b$FOH#IIKp zdO)Cm!;Iu`GB|CHw-V;9IWjDs+kgMp|MlPh^?y6Z8@Lq%Ay$E4R)Jucon7aSrV(N4d1@6JW)&J{nb0ux+$7t) ziV;)Ix{49AiV?Gl5wnUBvx*U8#BLQMW)&mGm}3dGH3Sj;E%j40FY zvi=cQ7S+WRnT12gfDq^+gv{gsBc-PfZTpGSc~Lk>eON`yjk>pqa}+>N;2kuUW7u*||g;H@n9P)VSdm|Qjp8g>4iWwSm_e!Q{hPCq)mdb;~Pw8-b?}i@( ztR#w(69;R_!YM4ftMEp_aS-9jQXT3#+Vs}Z2JMeVg;AQf6*rG$Q=FrD$ikGY;?>wT z-L>TQaCX|kD+5BHH?;FD?cQI=so*C+4RJ17uYkJ-Pl6_mDyOWx1g`kZFyseG1bN?s zs9}s+r8$#hBve42hVg(d_2hCxWQX!UzInmKn1%~E6|l{7$cqQgWVyJe?X)Jk; z*Dx1&q3lGh+!-cm3Y3gaT@;3N3tS(BDA7rtd3zk4_@|lU4~IdP(S;HY@u@QkS>gZw z&;NY~2$sZ0yD`YK)EW9iy1xP>5KC4LwY{VqQ$L2emJ9H4Fg!)Ifljvx=m3;ch~;Io z0IT@ekHQgX%KRD%hqevVF491$iQ^r{!)QJV7-)8-^vMK(NDmF>u|c2UipkK><=&*l{PDiRffKvsGrZ{BoFGR@|Ou7 zv=v((=qvImmo0n^#fY|=@xGiH56uGe*zQayWx%o?g__8?+L`j2T;l2`9C`~3^;*Vr zSioO7uI5A=V1a!)NIujvSYB+h+w-LL88FLeQI^{2Q_B`i%iS7G8x*t72YRl>m^N!n zZKo;uX1o7kkatD6jRnJ4pxvOl#chKewOtAC>)8P^Acw7VI90o$!0B_w?;`sonDaejrHo73@XsHdy4nLmi;O(HQvEdV0 zWSF5^+FuGYkPM%Y6*d`X=tmJVU`&b2nZAjZl+zm_=O;ci=V>G?PS`S@i1#GR?M1~N zh0SDU>H@-#d&&~yX%GcR6zzqTV)bWzRaKOhB5BE2q&4t3dIZBC+P?313VmR=u+>;f zs(AOITcB^~)nA}#QIMK|t*kX)neJK^ic6`mt=)H4LlBLGB{f=m{VR1==DButmU{B* zR$?F1Bt&7_CVqw+nE`08axKqy2T;bR6n`#1b(j}_`M`*+Nh<|crheH9t~#Y%p{A>V z{X$e;y`gp3u9V-j#&dp-eWf8QMZa1NS!3d>Qk542t@8?NfYVoYK>7>RA|@m#UME?; z7Xvp%(WOmgCWxO+cd#_ig5yeK_+%PG;$%U9)4se+?>Njt^iT2~Scri(5GHiNUdTEG zr%W;PXyH;=c9@vQ=hew` z#Dfn$DO|YZPGV5ZLefS8|;AVSYn|OgDmqmw})>f?h;>2b4?du?(t?M%b}1JHaA6 z7~Oyh8DJB^fUrm>!Qw2KMOKhO>YtD~lT4E)bAG!Bu~!3i69_)f=6=*$ZP2SlzakaR zG>u)E_Erpn<#abBNRSQvnJpTQ4V!vP=_7lbM1Bm+T&!a(mb7-ew~z8|E6kq~YgnX} z%~s~QcAKrrlwZ5)R+(i6Q8Ik*%eSmTg#8+%r6s2lUP}A?d86bb(eBMbiZJP z%dNcBOQ+wdP(RPw%i2U8PZoQ!c)wbNeTp#IKyc-TBG3|9e-%qB3}fv_S<-jj$RiA| zT60O}4kHgYg1+o0f zv{YrdUzu{6)Ihty9e(9l9m_|KyqL0#ZMW*e*R9r?5209NSH2&%cH_|I46#y@Wu9wS zlKJ5Hy7lA#C=Si>`}ANMLOTaZ6A?psA)xEgfmdrGL#8FxLduG#$*O3z2wG6?D_H~$ zqrgueN6}M1_b+#_P65>ZOsDCzw&)107Bg2FMnBAkemY_vBP?P!sJ=m#3EvX5qt7rd zO@;<>jDoldeD8c^YX)`v*cJ_|&42moq5(_BflpDUE*Ypqg1LUdt2ILWTFKihl(&y# zigA>V{UL_CNR#=Ia1G;;gB(G3+MEU*J&2JlMu0~~KUVVB`NHIHeXxsS99_b|vQ*5y zRs4%DYF_ZU+udaYSP3wnWnL&6;Sa4bFh#$t=7lSq7s#PU5M4|Py5VLu8GJ31fqzjC z-lfCS{u56Et6MX5yjQnoesX=_$+AbVuGU$h0Qt#$6|SO%8k#Fth0k(Hrs``9zl!@8 z$=oL$V1sFL3~6EP_|ABa3mE5^g{SU0dpVZO{4pLf<5`*W?i}xLltCg{Eh`npxuA;D z;G)czi4!I95on0ne8yEm^2kO#5ql^)UED#R;{MDlIZ(B7b6B}KeAQ~Ep(<0->W0qM z4V|kSI{!$YOW*&g-n(U~qyGNSdz%j)ZkF%=+_?W>b^qsed@gbSC-3>y^`EQjKdaY& za^_g>_D>5(tuFsuUH-ZJ<)0R2l1*OS{aMYry8Cl=_vh;F&(+2QOc*q=>o0K` zDaLz4;8iM@br9^kk$Ik_w>DDl63n6~9-Kb0s;I z0$+>dR2g_VFT?|z6Jo7kJzPmv`RcNgl^>|Mj7%jEpH-T&M&RF-1YJo`rNGxBK^g0= zl+Q0xM6#GR!wVk1E>uqe=JP6^vN7VZyt|~F+>7&-FchyYD-3^|L&ggS@R9ORg88f>v1p9=wGxag z!Kf7YS_EUkzAM>Cc|On9cN$%G>l+|^-mPzJ0^MJ~l7lNbC<}Zoa*#N8wT%8ErK7wT z{jyu%3ZTy_E7b-SzgLoTB{`J>UyI~a8TeCdeJ|nR|A*Q#Uj@cl1;+U&4~%n(_%DXD z$L2cf8ae<0;wZuO}GHmlO}?iwX(z1x1DV zjDcakpx7{9MR=GmEJDl|86@Tlj1%+4hl=^qqQ!gx0b{=Sm@!{P*qARYa?C$x@R(u- z{hH#&(7wqJ!E`{EqLZQ45=g)O{o9wKjrN%PpD+$hLEvQ#)E5px^Ql6>yuterGPImI zzB3dHkuaw4FBIzkpF74&RbbpFb@9o!f(f474`38W`}_Mx$FocBPZFdn+L~M%b9z|q zL0;j-F>hfE?f>O*ckBKGX9Arm!YV=0I79nNd?d%*fB)xyWlofwKwtS;;816{j*r9g z!M!e;1fc*7%}MaV$!MFaxQu285|a36_hpi!gkTSS2dgK)S5a@!MW~KH8o`*)oGDa| zx6}ZEj|05(1n;3KP#6T`Bn@uh{Tg#Z6+vJ#dIXso6y{kFjh(4~iWlrTb2LCu;UrZc zALo|1eoRKU!MgA=C>f;>+0&Pr%I*DbU;>n|y^ zzfTgIr2oqNU%nJkx)qKdKil7bmk-Amj8Dd|mki@DZ-=8RyH0Xx+yw%wJ0h=Ks_p@4 zLq7_C5444JLaTk}B+MryUT3)DFoLfXSVd8WX?Y9mz6-rW+I2W`K>KF54N7S3H27^E zrojlsF%B4JXIe?+>$|raFIB{0WD&9E>l8mh*vZu;e=A?cl`rGhksPxDH`}$ zoIeZd{;`}tBWRa{+pH_^&j!20f(xE}D*~wPhnM!Wx#G}<%VWQaW%!A_KtUTE;CArX znaAO8^8mkS1BwqowilC6!b};5?NKoH=TVNnIGZaE99DD{8&QAthw!zL@@VruR{k_# zW?g94mAKWHU|yeiwKk`eypp$9DQ|-hxicc-4uspf6sjvJ>Rh)Jt?>FP%Hn62vv;%i z^D7ap0O$I|sfsoHTuIHVKC6@`!}reLf?$Sn^G8ro#mS+S{M3tHr~D*NU&+kRFEi(} z;g!hDtGlIoNvu~FQ(wKz1SxqOq?sQ%d_%x_0(4x-O>@!JW!8&d{?X*-xBPD0(|!MR zfB)aEK!6H>*Jvj-wLzq+A{C&W$tpt&rfM~&!j9f}%h>>g-48!p$#vut2ThN`u7@dAeEIR%mndj<; z^h!oM*Da%0cRG|`{jsF`Ryew!C%GTd>G16SUYtL;_tTY~a3|2$aL&C^d$d#U471e% z_^X%tAh^@iuj=g1D1atKAo(YL?qD>jG|Ym+!)PVkFDBf-`XlUSe>bd&2I)ndE*{+b zyvOD1L^r(!hI=hzKP=$C9DV*o8;)RT4U!M_444-O-|TtP`V5$5v?xpMM5JX4ro=bF zv_W30)YWq>Mz2{5YI{n_$7~YZZwm%?oQLBuNJ*>JJ+@r3JaG5PYzS)}CJiAEbEYh+ zdy9!803V0#57Q*e96yQ(WEVkZD#$XBpP`od(NO?U=9zGH*#Fy)7=7=@*H45fp7Enb zO8k%o@`$&*j?s%ui--+57Vz9>U`j4xzJ9)>hCmmGLt-{$9>zDYio!_*SjWeBGkG|i z!^Eeos=iQmfcN!c3^Jf({ES-sDw@eEn#n4f$u)c~5dWhRTwzfi_3=M8?%#W`p~wH& zda$*1Zx#RJIzH>)+;sj*gRbk;58@lnH;z-tN*X;RA?d~b>!<(T^v*|u|jLn|7jsaDv3u=#NFAr>C^!}oY9CLVRg%i!*4 zYqV8?@m_<#x>{C$LPm)`s0GoeQZl)4$>H?kZ63}lWxxBbVYQo=s5Wa{Z8LyJBMbQq zT{j+&;9~;O`>+fYA3jwmL0vyCXhezsd@5VXH8Ihyk}GW9l+g%DVgj)YL3|%cQiY;3 z_P6w@=F<7_K7FdW7~3r7&7*mVlIFh3o6!6H@WLbWy^Sjy6rEkXXnOIYIz{f?yMN!% zS<@1HBLnIqe6)G5k|Xv@aK45As<{T`To1m#Tg^2zA>OFXaar=3(a^`!w;LPATtR7U zHYa^NHWjVpikpm+IInPk3EAT&4Np!k%uRa90ez~>G;YF8(@CRTWua%zRqk*z{|**1 za5h|=WwbcU*5WL|;w+QJS;ECxJ}k~smM-6YxAmZ!YjZK6vJL>se|2CFj0#FQ*Kt`! z8(I1Is8Oym6B%=bk%fsqx4wSWp9`-4WR$)pbu765du#LlW@-I*AC>^C_1|@Tu5JB? zwh`AsONr}@!eiIL-6GeSY{I|0@b8}M%v{HJ9W({I4x0MI>5=Qqp;Q#Q4p}7Oi$Ta! z_{W5Ap{w@UwLddIh3ZL-C3Ak?p$Tp3r$=GTACh^FW?KFk%gx}e1$ zL4kpv1(=zH1Xf?FwpcT4;eT@S9Q)HSI_*1u38LcwA-c{u4T20%be+d(=tIl!p_>J1 zI4%|u;qQRg=DpbmOoAzR@IC}!^lF+UxK#m|X7j-;{15<=F-1iO9BDCi0!^kkb$~Z? z-uo^l5avYbEu=Q#&&biu6Ue#I`!<*sH0ll#5DHUFzsu4!Wnhyj2)xyU2nfL|DAae> zh^^jzC{ORUD(@I%)k|k%xA1CIYeE{q0iAwg4al zalZnhw<(Z&V1B1e01qENWOD?!2~w0Eb&9~@p!(kYdo1!yHjE-RugUN>faJ-BB=1m^%TY%EqCCR{#iL zvSb)fU?}ATavrG_b)#UME3}K47EofJZ#hF?ph-4HK6FpQQ9hx*_!lMsuwQ?hCwZU_ zBL==COrVfP6PD>-!Q#Uqvl2|0(j^g5OYt^a`k@#jJ>1-g0j+KtFr8bnVi;39B}Zn% zG>M|FI!+#LaKaQ|MjT9S?own-g(TR1f1W4AYmA29eJjebxT57z2V&?x8+Ka1+~s4# z(EfXy_#aU{$wI~=V-SlYrB>=Wc>KLf5k~-W=-w4?WQRRq z?UF!!oiG199*?#6GyZ-YB|el##@N;haBWi-=&6Ba^}>|IN^8t0kh<|_B^>MGsY|qJ zi*uo%3U&PEL!Q{2+FNCjOx;Os(-8YJ#c$3kyG7a#bgd@;qER8Nk169LkO@$m=clk@Rxa}2zVYxiYxD}Bi_nO8& z=cbBi+b97nW~hZztYz*q%|%kUp(I5KhhJM8qDRZs?^Z^_-Me?oh*ChhicTWCSg9S0*UFXZ>-Q0yhjNVKmaKW$Ny>ChvJ#9o%Y^H8qV_myC(?O0x-*n{tF) zO%+u&v|8nTbN@@=IHTZDW|xpk-ltrBr`2Las_L_)dLC9pbQhCAHW*2&V?Hx8h0x=w zETCw3^^g_iusT{b_)?^4sRoTwR8Uf2oh>P<3IkF@y&3t!+1%3gJ)`U}sMV#3iY6~Y zLvhu0N;s(nLUy56NoT!>DA6C&;-gEAH8#$&_7)nuVd=;MR|KHxV?KTbq(f9p| zNc+-Can#(}q`$J-2iL)ABoarybk*ITUl7VC7g zuU~vz!0z=^biNwjW}!?LM-W9h-s?3a62Y=>RAvVMqVQ6GLsIo-r82 zVW5s>Ea3de9PbXNR&^k?o^0%CV|uL_-MC`qgyzF{&D(;hTTG^ab-CDMGRTj1E9Gqc z^mOiG$qT&)jL$t5m3b(OP3x*=Xv?EOBoT2E(7^t^)w@CYv)&IE7mt95=q})mc%=M} zg6JU2WRP!~Sgh9EU%F@3At0qA4UKwfc@UH%;$Wk|3w`>?w3czt-$*2ACrPWOB|*N$ z3#UrK2J~S^)qtiid-1T@9>nnx@|>IB;~ARKkH-UE*(J`^p!-5yZJDkd z+_wBUw!q{gd1H(31eNHp8Ncg<-4x~+?W|oZgI>ZI%fRrD?<3k*qJri_=K2hJB zS&3Qa*0qv9v)`YgO5abZ4+B z*4>iLF(v_r$I$6Yg;WY>Q;})Y^;MP_I?*=K^fYLo=nF;#b*TR4>f&se}HaU;V`g2bVOc0KYs*IOH=XOjJi$^BTM;r@mHKRfTR-t(fjugEG%z8< z4Y(lvOaJ)68}g@THIk$VD{EDK$v_%LgME~6ovzlGTs_K%#9d&?H|l*h4&-+bD9O*F zQ+Z^Hpx)aRg74-i!3Y*-9?Xpq>WdI^xIi5X&1fk5+UK~&LZH_Z}=UPZe!MJukN z%y#3V?~Ajz4C(Piyq^jaTq6@qJEyOw_(T_bZpLKe+)QTAUG8CfF42RwuNz8YzX5}q zJI`9)lmU(dqf*_V1Wvf9gtRVqgpQw3hu)r4nCO% z@awxqkn;&S^<6czUDF~+fSXsOAVS+DE1wev@`^B!mNpWMS04N6lMgsm< literal 0 HcmV?d00001 diff --git a/docs/history/1.4.5/img/carat.png b/docs/history/1.4.5/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/docs/history/1.4.5/img/dash.png b/docs/history/1.4.5/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/docs/history/1.4.5/index.html b/docs/history/1.4.5/index.html new file mode 100644 index 0000000..7277a71 --- /dev/null +++ b/docs/history/1.4.5/index.html @@ -0,0 +1,156 @@ + + + + ButtonMerchant Reference + + + + + + + + + + + + +
+
+

ButtonMerchant 1.4.5 Docs (95% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Button Merchant Library

+ +

License: MIT +Coverage Status +Version +Platform

+

Documentation

+ +

Documentation for the Merchant Library can be found on the Button Developer site.

+ +

Reference docs are also available.

+

Example

+ +

To run the example project, clone the repo, run pod install, and run the Example scheme.

+

Installation

+ +

ButtonMerchant is available through CocoaPods and Carthage.

+

Swift Pacakage Manager

+ +

In Xcode, navigate to File → Swift Packages → Add Package Dependency

+ +

Enter the package repository URL:

+ +

https://github.com/button/button-merchant-ios

+ +

Note: Ensure to select ‘Up to Next Major’ version when prompted.

+

CocoaPods

+ +

Add this line to your Podfile:

+
pod 'ButtonMerchant'
+
+

Carthage

+ +

Or, add this to your Cartfile:

+
github "button/button-merchant-ios" ~> 1.0
+
+

Author

+ +

Button, Inc.

+

License

+ +

ButtonMerchant is available under the MIT license. See the LICENSE file for more info.

+

Contributing

+ +

We are looking forward to accepting your contributions to this project very soon!

+ +

Until then, if you have something you would like to contribute, please get in touch.

+ +
+
+ +
+
+ + diff --git a/docs/history/1.4.5/js/jazzy.js b/docs/history/1.4.5/js/jazzy.js new file mode 100755 index 0000000..1984416 --- /dev/null +++ b/docs/history/1.4.5/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/docs/history/1.4.5/js/jazzy.search.js b/docs/history/1.4.5/js/jazzy.search.js new file mode 100644 index 0000000..359cdbb --- /dev/null +++ b/docs/history/1.4.5/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docs/history/1.4.5/js/jquery.min.js b/docs/history/1.4.5/js/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/history/1.4.5/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/history/1.4.5/js/typeahead.jquery.js b/docs/history/1.4.5/js/typeahead.jquery.js new file mode 100644 index 0000000..3a2d2ab --- /dev/null +++ b/docs/history/1.4.5/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docs/history/1.4.5/search.json b/docs/history/1.4.5/search.json new file mode 100644 index 0000000..ff54950 --- /dev/null +++ b/docs/history/1.4.5/search.json @@ -0,0 +1 @@ +{"Structs.html#/s:14ButtonMerchant7VersionV":{"name":"Version","abstract":"

Button Merchant Library Version.

"},"Protocols/Configurable.html#/c:@M@ButtonMerchant@objc(pl)Configurable(py)includesIFA":{"name":"includesIFA","abstract":"

Indicates whether or not the library will attach IFA to outgoing requests.

","parent_name":"Configurable"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)id":{"name":"id","abstract":"

The product identifier.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)upc":{"name":"upc","abstract":"

The UPC (Universal Product Code) of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)categories":{"name":"categories","abstract":"

A flat array of the names of the categories to which the product belongs.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)name":{"name":"name","abstract":"

The name of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)currency":{"name":"currency","abstract":"

The ISO-4217 currency code in which the product’s value is reported.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)value":{"name":"value","abstract":"

The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)quantity":{"name":"quantity","abstract":"

The quantity of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)url":{"name":"url","abstract":"

The URL of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)attributes":{"name":"attributes","abstract":"

Any additional attributes to be included with the product.

","parent_name":"ButtonProductCompatible"},"Protocols/Activity.html#/c:@M@ButtonMerchant@objc(pl)Activity(im)productViewed:":{"name":"productViewed(_:)","abstract":"

Report that the user has viewed a product.

","parent_name":"Activity"},"Protocols/Activity.html#/c:@M@ButtonMerchant@objc(pl)Activity(im)productAddedToCart:":{"name":"productAddedToCart(_:)","abstract":"

Report that the user added a product to their cart.

","parent_name":"Activity"},"Protocols/Activity.html#/c:@M@ButtonMerchant@objc(pl)Activity(im)cartViewed:":{"name":"cartViewed(_:)","abstract":"

Report that the user viewed their cart.

","parent_name":"Activity"},"Protocols/Activity.html":{"name":"Activity","abstract":"

A protocol through which user activities can be reported.

"},"Protocols/ButtonProductCompatible.html":{"name":"ButtonProductCompatible","abstract":"

A protocol that defines the product properties that may be provided when reporting user activity.

"},"Protocols/Configurable.html":{"name":"Configurable","abstract":"

An interface through which library features can be enabled/disabled.

"},"Enums/NetworkError.html#/s:14ButtonMerchant12NetworkErrorO7unknownyA2CmF":{"name":"unknown","abstract":"

There was an unknown network error.

","parent_name":"NetworkError"},"Enums/ConfigurationError.html#/s:14ButtonMerchant18ConfigurationErrorO15noApplicationIdyA2CmF":{"name":"noApplicationId","abstract":"

Library is not configured with an applicationId

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:14ButtonMerchant18ConfigurationErrorO20invalidApplicationIdyACSS_tcACmF":{"name":"invalidApplicationId(appicationId:)","abstract":"

Undocumented

","parent_name":"ConfigurationError"},"Enums/ButtonMerchantError.html#/s:14ButtonMerchant0aB5ErrorO021trackOrderDeprecationC0yA2CmF":{"name":"trackOrderDeprecationError","abstract":"

Undocumented

","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html#/s:14ButtonMerchant0aB5ErrorO08noEventsC0yA2CmF":{"name":"noEventsError","abstract":"

Undocumented

","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html":{"name":"ButtonMerchantError","abstract":"

Button Merchant Library Errors.

"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"

Button Merchant Library Configuration Error.

"},"Enums/NetworkError.html":{"name":"NetworkError","abstract":"

Button Merchant Library Configuration Error.

"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC8quantitySivp":{"name":"quantity","abstract":"

The number of unique units represented by this line item (default is 1).

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC15itemDescriptionSSSgvp":{"name":"itemDescription","abstract":"

Text describing the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC3skuSSSgvp":{"name":"sku","abstract":"

The Stock Keeping Unit of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC3upcSSSgvp":{"name":"upc","abstract":"

The Universal Product Code of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC8categorySaySSGSgvp":{"name":"category","abstract":"

The category of the line item.","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC10attributesSDyS2SGSgvp":{"name":"attributes","abstract":"

A key/value store for strings to specify additional information about a line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/s:14ButtonMerchant5OrderC8LineItemC2id5totalAESS_s5Int64Vtcfc":{"name":"init(id:total:)","abstract":"

An array of the line item details that comprise the order

","parent_name":"LineItem"},"Classes/Order/Customer.html#/s:14ButtonMerchant5OrderC8CustomerC5emailSSSgvp":{"name":"email","abstract":"

The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

","parent_name":"Customer"},"Classes/Order/Customer.html#/s:14ButtonMerchant5OrderC8CustomerC5isNewSbSgvp":{"name":"isNew","abstract":"

A flag indicating whether the customer is new (or not).

","parent_name":"Customer"},"Classes/Order/Customer.html#/s:14ButtonMerchant5OrderC8CustomerC2idAESS_tcfc":{"name":"init(id:)","abstract":"

Initializes a customer object with the passed parameters.

","parent_name":"Customer"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(py)currencyCode":{"name":"currencyCode","abstract":"

The ISO 4217 currency code (default is USD).

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(py)customerOrderId":{"name":"customerOrderId","abstract":"

The customer-facing order id.

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(py)customer":{"name":"customer","abstract":"

The customer related to the order

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(im)initWithId:purchaseDate:lineItems:":{"name":"init(id:purchaseDate:lineItems:)","abstract":"

Initializes an order object with the passed parameters.

","parent_name":"Order"},"Classes/Order/Customer.html":{"name":"Customer","abstract":"

Represents a customer in the order.

","parent_name":"Order"},"Classes/Order/LineItem.html":{"name":"LineItem","abstract":"

Represents a line item in the order.

","parent_name":"Order"},"Classes/Order.html#/c:@M@ButtonMerchant@objc(cs)BTNOrder(im)initWithId:amount:currencyCode:":{"name":"init(id:amount:currencyCode:)","abstract":"

Deprecated.

","parent_name":"Order"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)id":{"name":"id","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)upc":{"name":"upc","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)categories":{"name":"categories","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)name":{"name":"name","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)currency":{"name":"currency","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)value":{"name":"value","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)quantity":{"name":"quantity","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)url":{"name":"url","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/c:@M@ButtonMerchant@objc(pl)ButtonProductCompatible(py)attributes":{"name":"attributes","parent_name":"ButtonProduct"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cpy)attributionToken":{"name":"attributionToken","abstract":"

The last tracked attributionToken from an inbound Button attributed URL.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)configureWithApplicationId:":{"name":"configure(applicationId:)","abstract":"

Configures ButtonMerchant with your application Id.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)trackIncomingURL:":{"name":"trackIncomingURL(_:)","abstract":"

Checks the passed URL for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)trackIncomingUserActivity:":{"name":"trackIncomingUserActivity(_:)","abstract":"

Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)handlePostInstallURL:":{"name":"handlePostInstallURL(_:)","abstract":"

Checks to see if the user visited a url prior to installing your app.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)reportOrder:completion:":{"name":"reportOrder(_:completion:)","abstract":"

Reports an order to Button.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cm)clearAllData":{"name":"clearAllData()","abstract":"

Discards the current session and all persisted data.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cpy)features":{"name":"features","abstract":"

An interface through which library features can be enabled/disabled.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@M@ButtonMerchant@objc(cs)ButtonMerchant(cpy)activity":{"name":"activity","abstract":"

An interface through which user activity can be reported.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/c:@CM@ButtonMerchant@objc(cs)ButtonMerchant(cm)trackOrder:completion:":{"name":"trackOrder(_:completion:)","abstract":"

Deprecated.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html":{"name":"ButtonMerchant","abstract":"

ButtonMerchant is the main entry point to the library.

"},"Classes/ButtonProduct.html":{"name":"ButtonProduct","abstract":"

A concrete implementation of the ButtonProductCompatible protocol.

"},"Classes/Order.html":{"name":"Order","abstract":"

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docs/history/1.4.5/undocumented.json b/docs/history/1.4.5/undocumented.json new file mode 100644 index 0000000..4a10f95 --- /dev/null +++ b/docs/history/1.4.5/undocumented.json @@ -0,0 +1,26 @@ +{ + "warnings": [ + { + "file": "/Users/wes/Developer/button-merchant-ios/Source/ButtonMerchantError.swift", + "line": 32, + "symbol": "ButtonMerchantError.trackOrderDeprecationError", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/wes/Developer/button-merchant-ios/Source/ButtonMerchantError.swift", + "line": 33, + "symbol": "ButtonMerchantError.noEventsError", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/wes/Developer/button-merchant-ios/Source/ConfigurationError.swift", + "line": 46, + "symbol": "ConfigurationError.invalidApplicationId(appicationId:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + } + ], + "source_directory": "/Users/wes/Developer/button-merchant-ios" +} \ No newline at end of file diff --git a/docs/latest b/docs/latest index 008f5fe..884b3eb 120000 --- a/docs/latest +++ b/docs/latest @@ -1 +1 @@ -./history/1.4.4 \ No newline at end of file +./history/1.4.5 \ No newline at end of file diff --git a/fastlane/README.md b/fastlane/README.md index 5c3793d..4d79cf3 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -1,54 +1,72 @@ fastlane documentation -================ +---- + # Installation Make sure you have the latest version of the Xcode command line tools installed: -``` +```sh xcode-select --install ``` -Install _fastlane_ using -``` -[sudo] gem install fastlane -NV -``` -or alternatively using `brew install fastlane` +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) # Available Actions + ## iOS + ### ios version + +```sh +[bundle exec] fastlane ios version ``` -fastlane ios version -``` + Current library version + ### ios lint + +```sh +[bundle exec] fastlane ios lint ``` -fastlane ios lint -``` + Run SwiftLint on the project + ### ios test + +```sh +[bundle exec] fastlane ios test ``` -fastlane ios test -``` + Run the Button merchant library tests + ### ios coverage + +```sh +[bundle exec] fastlane ios coverage ``` -fastlane ios coverage -``` + + ### ios generate_refdocs + +```sh +[bundle exec] fastlane ios generate_refdocs ``` -fastlane ios generate_refdocs -``` + + ### ios post_install_test + +```sh +[bundle exec] fastlane ios post_install_test ``` -fastlane ios post_install_test -``` + Run end-to-end post install test ---- -This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. -More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). -The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).