From 414a09631441dcaf4841d25e68adc545a9a28dd3 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 9 Jun 2020 22:38:18 -0700 Subject: [PATCH 001/105] Fixed spacing. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c0f00b..ed596cc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![release](https://img.shields.io/github/release/ethauvin/akismet-kotlin.svg)](https://github.com/ethauvin/akismet-kotlin/releases/latest) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/akismet-kotlin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/akismet-kotlin) [![Download](https://api.bintray.com/packages/ethauvin/maven/akismet-kotlin/images/download.svg)](https://bintray.com/ethauvin/maven/akismet-kotlin/_latestVersion) \ +[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![release](https://img.shields.io/github/release/ethauvin/akismet-kotlin.svg)](https://github.com/ethauvin/akismet-kotlin/releases/latest) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/akismet-kotlin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/akismet-kotlin) [![Download](https://api.bintray.com/packages/ethauvin/maven/akismet-kotlin/images/download.svg)](https://bintray.com/ethauvin/maven/akismet-kotlin/_latestVersion) + [![Known Vulnerabilities](https://snyk.io/test/github/ethauvin/akismet-kotlin/badge.svg?targetFile=pom.xml)](https://snyk.io/test/github/ethauvin/akismet-kotlin?targetFile=pom.xml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ethauvin_akismet-kotlin&metric=alert_status)](https://sonarcloud.io/dashboard?id=ethauvin_akismet-kotlin) [![Build Status](https://travis-ci.com/ethauvin/akismet-kotlin.svg?branch=master)](https://travis-ci.com/ethauvin/akismet-kotlin) [![CircleCI](https://circleci.com/gh/ethauvin/akismet-kotlin/tree/master.svg?style=shield)](https://circleci.com/gh/ethauvin/akismet-kotlin/tree/master) # [Akismet](https://www.akismet.com) for Kotlin/Java From 7adbddd3a3bf7b6ce33174bea7d4138d5dcf2ba0 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Aug 2020 00:31:13 -0700 Subject: [PATCH 002/105] Upgraded to Gradle 6.6 and Kotlin 1.4.0. --- .idea/kotlinScripting.xml | 6 + README.md | 2 +- build.gradle.kts | 111 +++++++----------- .../detekt/baseline.xml | 0 examples/build.gradle.kts | 8 +- examples/gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- examples/gradlew | 2 +- examples/gradlew.bat | 21 +--- gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- gradlew.bat | 21 +--- .../net/thauvin/erik/akismet/Akismet.kt | 5 +- .../thauvin/erik/akismet/AkismetComment.kt | 9 +- .../net/thauvin/erik/akismet/AkismetTest.kt | 2 +- 16 files changed, 74 insertions(+), 119 deletions(-) create mode 100644 .idea/kotlinScripting.xml rename detekt-baseline.xml => config/detekt/baseline.xml (100%) diff --git a/.idea/kotlinScripting.xml b/.idea/kotlinScripting.xml new file mode 100644 index 0000000..bc444de --- /dev/null +++ b/.idea/kotlinScripting.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md index ed596cc..21dd7bb 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # [Akismet](https://www.akismet.com) for Kotlin/Java -Akismet for Kotlin/Java is a pretty complete and straightforward implementation of the [Automattic's Akismet](https://akismet.com/development/api/) API, a free service which can be used to actively stop comments spam. +Akismet for Kotlin/Java/Android is a pretty complete and straightforward implementation of the [Automattic's Akismet](https://akismet.com/development/api/) API, a free service which can be used to actively stop comments spam. ## Examples (TL;DR) diff --git a/build.gradle.kts b/build.gradle.kts index 1e47788..30ce289 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,23 +1,21 @@ import com.jfrog.bintray.gradle.tasks.BintrayUploadTask -import org.jetbrains.dokka.gradle.DokkaTask import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.io.FileInputStream import java.net.URL -import java.util.Date -import java.util.Properties +import java.util.* plugins { jacoco java `maven-publish` - id("com.github.ben-manes.versions") version "0.28.0" + id("com.github.ben-manes.versions") version "0.29.0" id("com.jfrog.bintray") version "1.8.5" - id("io.gitlab.arturbosch.detekt") version "1.9.1" + id("io.gitlab.arturbosch.detekt") version "1.11.0" id("net.thauvin.erik.gradle.semver") version "1.0.4" - id("org.jetbrains.dokka") version "0.10.1" - id("org.jetbrains.kotlin.jvm") version "1.3.72" - id("org.jetbrains.kotlin.kapt") version "1.3.72" - id("org.jetbrains.kotlin.plugin.serialization") version "1.3.72" + id("org.jetbrains.dokka") version "1.4.0-rc" + id("org.jetbrains.kotlin.jvm") version "1.4.0" + id("org.jetbrains.kotlin.kapt") version "1.4.0" + id("org.jetbrains.kotlin.plugin.serialization") version "1.4.0" id("org.sonarqube") version "3.0" } @@ -34,7 +32,7 @@ var semverProcessor = "net.thauvin.erik:semver:1.2.0" val publicationName = "mavenJava" object VersionInfo { - const val okhttp = "4.7.2" + const val okhttp = "4.8.1" } val versions: VersionInfo by extra { VersionInfo } @@ -66,12 +64,9 @@ dependencies { implementation("com.squareup.okhttp3:okhttp:${versions.okhttp}") implementation("com.squareup.okhttp3:logging-interceptor:${versions.okhttp}") - // Align versions of all Kotlin components - implementation(platform("org.jetbrains.kotlin:kotlin-bom")) - implementation(kotlin("stdlib")) - implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0-1.3.70-eap-274-2") - testImplementation("org.mockito:mockito-core:3.3.3") - testImplementation("org.testng:testng:7.2.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc-218") + testImplementation("org.mockito:mockito-core:3.5.0") + testImplementation("org.testng:testng:7.3.0") } kapt { @@ -81,9 +76,7 @@ kapt { } detekt { - //input = files("src/main/kotlin", "src/test/kotlin") - //filters = ".*/resources/.*,.*/build/.*" - baseline = project.rootDir.resolve("detekt-baseline.xml") + baseline = project.rootDir.resolve("config/detekt/baseline.xml") } jacoco { @@ -108,37 +101,13 @@ val sourcesJar by tasks.creating(Jar::class) { } val javadocJar by tasks.creating(Jar::class) { - dependsOn(tasks.dokka) - from(tasks.dokka) + dependsOn(tasks.dokkaJavadoc) + from(tasks.dokkaJavadoc) archiveClassifier.set("javadoc") description = "Assembles a JAR of the generated Javadoc." group = JavaBasePlugin.DOCUMENTATION_GROUP } -val dokkaDocs by tasks.creating(DokkaTask::class) { - outputFormat = "gfm" - outputDirectory = "$projectDir" - - configuration { - moduleName = "docs" - sourceLink { - path = file("$projectDir/src/main/kotlin").toURI().toString().replace("file:", "") - url = "https://github.com/ethauvin/${project.name}/tree/master/src/main/kotlin" - lineSuffix = "#L" - } - - jdkVersion = 8 - - externalDocumentationLink { - url = URL("https://javaee.github.io/javaee-spec/javadocs/") - packageListUrl = URL("https://javaee.github.io/javaee-spec/javadocs/package-list") - } - - includes = listOf("config/dokka/packages.md") - includeNonPublic = false - } -} - tasks { withType { useTestNG() @@ -169,32 +138,42 @@ tasks { } } - dokka { - outputFormat = "html" - outputDirectory = "$buildDir/javadoc" + dokkaHtml { + outputDirectory = "$projectDir/docs" - configuration { - sourceLink { - path = file("$projectDir/src/main/kotlin").toURI().toString().replace("file:", "") - url = "https://github.com/ethauvin/${project.name}/tree/master/src/main/kotlin" - lineSuffix = "#L" + dokkaSourceSets { + configureEach { + jdkVersion = 8 + includes = listOf("config/dokka/packages.md") + sourceLink { + path = "/src/main/kotlin/" + url = "https://github.com/ethauvin/${project.name}/tree/master/src/main/kotlin/" + lineSuffix = "#L" + } + externalDocumentationLink { + url = URL("https://javaee.github.io/javaee-spec/javadocs/") + packageListUrl = URL("https://javaee.github.io/javaee-spec/javadocs/package-list") + } } - - jdkVersion = 8 - - externalDocumentationLink { - url = URL("https://javaee.github.io/javaee-spec/javadocs/") - packageListUrl = URL("https://javaee.github.io/javaee-spec/javadocs/package-list") - } - - includes = listOf("config/dokka/packages.md") - includeNonPublic = false } - dependsOn(dokkaDocs) + } + + dokkaJavadoc { + dokkaSourceSets { + configureEach { + jdkVersion = 8 + includes = listOf("config/dokka/packages.md") + externalDocumentationLink { + url = URL("https://javaee.github.io/javaee-spec/javadocs/") + packageListUrl = URL("https://javaee.github.io/javaee-spec/javadocs/package-list") + } + } + } + dependsOn(dokkaHtml) } val copyToDeploy by registering(Copy::class) { - from(configurations.runtime) { + from(configurations.runtimeClasspath) { exclude("annotations-*.jar") } from(jar) @@ -261,7 +240,7 @@ bintray { githubRepo = gitHub githubReleaseNotesFile = "README.md" vcsUrl = "$mavenUrl.git" - setLabels("kotlin", "java", "akismet", "comments", "spam", "blog", "automattic", "kismet") + setLabels("akismet", "android", "automattic", "blog", "comments", "java", "kismet", "kotlin", "spam") setLicenses("BSD 3-Clause") publicDownloadNumbers = true version.apply { diff --git a/detekt-baseline.xml b/config/detekt/baseline.xml similarity index 100% rename from detekt-baseline.xml rename to config/detekt/baseline.xml diff --git a/examples/build.gradle.kts b/examples/build.gradle.kts index a45bf50..73c05c3 100644 --- a/examples/build.gradle.kts +++ b/examples/build.gradle.kts @@ -1,6 +1,6 @@ plugins { - id("org.jetbrains.kotlin.jvm") version "1.3.72" - id("com.github.ben-manes.versions") version "0.28.0" + id("org.jetbrains.kotlin.jvm") version "1.4.0" + id("com.github.ben-manes.versions") version "0.29.0" application } @@ -14,10 +14,6 @@ repositories { } dependencies { - // Align versions of all Kotlin components - implementation(platform("org.jetbrains.kotlin:kotlin-bom")) - implementation(kotlin("stdlib")) - implementation("javax.servlet:javax.servlet-api:4.0.1") implementation("net.thauvin.erik:akismet-kotlin:0.9.2") diff --git a/examples/gradle/wrapper/gradle-wrapper.jar b/examples/gradle/wrapper/gradle-wrapper.jar index 62d4c053550b91381bbd28b1afc82d634bf73a8a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch delta 6656 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 Yte!%o?r4GTrVtxD61Ym!|5fq-1K$0e!T1w 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 diff --git a/examples/gradle/wrapper/gradle-wrapper.properties b/examples/gradle/wrapper/gradle-wrapper.properties index 622ab64..6c9a224 100644 --- a/examples/gradle/wrapper/gradle-wrapper.properties +++ b/examples/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/examples/gradlew b/examples/gradlew index fbd7c51..4f906e0 100644 --- a/examples/gradlew +++ b/examples/gradlew @@ -130,7 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/examples/gradlew.bat b/examples/gradlew.bat index 5093609..107acd3 100644 --- a/examples/gradlew.bat +++ b/examples/gradlew.bat @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -54,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -64,21 +64,6 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line @@ -86,7 +71,7 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 62d4c053550b91381bbd28b1afc82d634bf73a8a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch delta 6656 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 Yte!%o?r4GTrVtxD61Ym!|5fq-1K$0e!T1w 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 622ab64..6c9a224 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index fbd7c51..4f906e0 100755 --- a/gradlew +++ b/gradlew @@ -130,7 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 5093609..107acd3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -54,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -64,21 +64,6 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line @@ -86,7 +71,7 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt b/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt index 9a150a7..4709cb0 100644 --- a/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt +++ b/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt @@ -32,7 +32,6 @@ package net.thauvin.erik.akismet import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import net.thauvin.erik.semver.Version import okhttp3.FormBody import okhttp3.HttpUrl @@ -46,7 +45,7 @@ import java.time.OffsetDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter import java.time.temporal.ChronoUnit -import java.util.Date +import java.util.* import java.util.logging.Level import java.util.logging.Logger @@ -65,7 +64,7 @@ open class Akismet(apiKey: String) { */ @JvmStatic fun jsonComment(json: String): AkismetComment { - return Json(JsonConfiguration.Stable).parse(AkismetComment.serializer(), json) + return Json.decodeFromString(AkismetComment.serializer(), json) } /** diff --git a/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt b/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt index c6d5b29..49f765c 100644 --- a/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt +++ b/src/main/kotlin/net/thauvin/erik/akismet/AkismetComment.kt @@ -33,9 +33,14 @@ package net.thauvin.erik.akismet import kotlinx.serialization.Serializable +import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import javax.servlet.http.HttpServletRequest +import kotlin.collections.HashMap +import kotlin.collections.Map +import kotlin.collections.emptyMap +import kotlin.collections.iterator +import kotlin.collections.set private fun String?.ifNull() = this ?: "" @@ -259,7 +264,7 @@ open class AkismetComment(val userIp: String, val userAgent: String) { * @see [Akismet.jsonComment] */ override fun toString(): String { - return Json(JsonConfiguration.Stable).stringify(serializer(), this) + return Json.encodeToString(this) } /** diff --git a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt index ab542d3..c18598e 100644 --- a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt +++ b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt @@ -354,7 +354,7 @@ class AkismetTest { @Test fun jsonCommentTest() { - val jsonComment = Akismet.jsonComment(mockComment.toString()) + val jsonComment = Akismet.jsonComment(mockComment.toJson()) assertEquals(jsonComment, mockComment, "equals") assertEquals(jsonComment.hashCode(), mockComment.hashCode(), "hashcode") From 458c1c67a5105f254e32c8cc6a927a26acd5c390 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Aug 2020 00:32:11 -0700 Subject: [PATCH 003/105] Added GitLab, BitBucket and GitHub CI configurations. --- .github/workflows/gradle.yml | 21 +++++++++++++++++++++ .gitlab-ci.yml | 31 +++++++++++++++++++++++++++++++ bitbucket-pipelines.yml | 9 +++++++++ 3 files changed, 61 insertions(+) create mode 100644 .github/workflows/gradle.yml create mode 100644 .gitlab-ci.yml create mode 100644 bitbucket-pipelines.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 0000000..2801719 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,21 @@ +name: Java CI with Gradle + +on: [push, pull_request, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Test with Gradle + run: ./gradlew check + env: + AKISMET_BLOG: ${{ secrets.AKISMET_BLOG }} + AKISMET_API_KEY: ${{ secrets.AKISMET_API_KEY }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..26820aa --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,31 @@ +image: gradle:alpine + +variables: + GRADLE_OPTS: "-Dorg.gradle.daemon=false" + +before_script: + - export GRADLE_USER_HOME=`pwd`/.gradle + +stages: + - build + - test + +build: + stage: build + script: ./gradlew --build-cache assemble + cache: + key: "$CI_COMMIT_REF_NAME" + policy: push + paths: + - build + - .gradle + +test: + stage: test + script: ./gradlew check + cache: + key: "$CI_COMMIT_REF_NAME" + policy: pull + paths: + - build + - .gradle diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml new file mode 100644 index 0000000..7d98402 --- /dev/null +++ b/bitbucket-pipelines.yml @@ -0,0 +1,9 @@ +image: openjdk:8 + +pipelines: + default: + - step: + caches: + - gradle + script: + - bash ./gradlew check From f621076f91f8dc8b8ac3f9d274505987c1c0b7b4 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 21 Mar 2021 16:32:46 -0700 Subject: [PATCH 004/105] Updated from JCenter to Maven Central. Updated dependencies. --- .circleci/config.yml | 4 +- .gitignore | 39 +- .travis.yml | 4 +- README.md | 11 +- build.gradle.kts | 183 +-- .../-akismet-comment/-akismet-comment.html | 44 + .../-companion/-a-d-m-i-n_-r-o-l-e.html | 38 + .../-t-y-p-e_-b-l-o-g_-p-o-s-t.html | 38 + .../-companion/-t-y-p-e_-c-o-m-m-e-n-t.html | 38 + .../-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html | 38 + .../-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html | 38 + .../-companion/-t-y-p-e_-m-e-s-s-a-g-e.html | 38 + .../-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html | 38 + .../-companion/-t-y-p-e_-r-e-p-l-y.html | 38 + .../-companion/-t-y-p-e_-s-i-g-n-u-p.html | 38 + .../-t-y-p-e_-t-r-a-c-k-b-a-c-k.html | 38 + .../-companion/-t-y-p-e_-t-w-e-e-t.html | 38 + .../-akismet-comment/-companion/index.html | 183 +++ .../-akismet-comment/author-email.html | 38 + .../-akismet-comment/author-url.html | 38 + .../-akismet-comment/author.html | 38 + .../-akismet-comment/blog-charset.html | 38 + .../-akismet-comment/blog-lang.html | 38 + .../-akismet-comment/content.html | 38 + .../-akismet-comment/date-gmt.html | 38 + .../-akismet-comment/equals.html | 38 + .../-akismet-comment/hash-code.html | 38 + .../-akismet-comment/index.html | 382 +++++ .../-akismet-comment/is-test.html | 38 + .../-akismet-comment/permalink.html | 38 + .../-akismet-comment/post-modified-gmt.html | 38 + .../-akismet-comment/recheck-reason.html | 38 + .../-akismet-comment/referrer.html | 38 + .../-akismet-comment/server-env.html | 38 + .../-akismet-comment/to-json.html | 38 + .../-akismet-comment/to-string.html | 38 + .../-akismet-comment/type.html | 38 + .../-akismet-comment/user-agent.html | 38 + .../-akismet-comment/user-ip.html | 38 + .../-akismet-comment/user-role.html | 38 + .../-akismet/-akismet.html | 44 + .../-akismet/-companion/date-to-gmt.html | 44 + .../-akismet/-companion/index.html | 80 ++ .../-akismet/-companion/json-comment.html | 38 + .../-akismet/app-user-agent.html | 38 + .../-akismet/blog.html | 38 + .../-akismet/check-comment.html | 38 + .../-akismet/debug-help.html | 38 + .../-akismet/error-message.html | 38 + .../-akismet/execute-method.html | 38 + .../-akismet/http-status-code.html | 38 + .../-akismet/index.html | 321 +++++ .../-akismet/is-discard.html | 38 + .../-akismet/is-verified-key.html | 38 + .../-akismet/logger.html | 38 + .../-akismet/pro-tip.html | 38 + .../-akismet/reset.html | 38 + .../-akismet/response.html | 38 + .../-akismet/submit-ham.html | 38 + .../-akismet/submit-spam.html | 38 + .../-akismet/verify-key.html | 38 + .../net.thauvin.erik.akismet/index.html | 73 + docs/akismet-kotlin/package-list | 64 + docs/images/anchor-copy-button.svg | 4 + docs/images/arrow_down.svg | 3 + docs/images/copy-icon.svg | 3 + docs/images/copy-successful-icon.svg | 3 + docs/images/docs_logo.svg | 7 + docs/images/footer-go-to-link.svg | 3 + docs/images/go-to-top-icon.svg | 4 + docs/images/logo-icon.svg | 3 + docs/index.html | 47 + docs/navigation.html | 13 + docs/scripts/clipboard.js | 52 + docs/scripts/main.js | 67 + docs/scripts/navigation-loader.js | 64 + docs/scripts/navigation-pane.json | 1 + docs/scripts/pages.json | 1 + docs/scripts/platform-content-handler.js | 290 ++++ docs/scripts/sourceset_dependencies.js | 1 + docs/styles/jetbrains-mono.css | 17 + docs/styles/logo-styles.css | 3 + docs/styles/main.css | 113 ++ docs/styles/style.css | 1229 +++++++++++++++++ examples/build.gradle.kts | 8 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- examples/gradlew | 0 pom.xml | 80 +- version.properties | 6 +- 89 files changed, 5161 insertions(+), 201 deletions(-) create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/blog.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/error-message.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/index.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/logger.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/reset.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/response.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html create mode 100644 docs/akismet-kotlin/net.thauvin.erik.akismet/index.html create mode 100644 docs/akismet-kotlin/package-list create mode 100644 docs/images/anchor-copy-button.svg create mode 100644 docs/images/arrow_down.svg create mode 100644 docs/images/copy-icon.svg create mode 100644 docs/images/copy-successful-icon.svg create mode 100644 docs/images/docs_logo.svg create mode 100644 docs/images/footer-go-to-link.svg create mode 100644 docs/images/go-to-top-icon.svg create mode 100644 docs/images/logo-icon.svg create mode 100644 docs/index.html create mode 100644 docs/navigation.html create mode 100644 docs/scripts/clipboard.js create mode 100644 docs/scripts/main.js create mode 100644 docs/scripts/navigation-loader.js create mode 100644 docs/scripts/navigation-pane.json create mode 100644 docs/scripts/pages.json create mode 100644 docs/scripts/platform-content-handler.js create mode 100644 docs/scripts/sourceset_dependencies.js create mode 100644 docs/styles/jetbrains-mono.css create mode 100644 docs/styles/logo-styles.css create mode 100644 docs/styles/main.css create mode 100644 docs/styles/style.css mode change 100644 => 100755 examples/gradlew diff --git a/.circleci/config.yml b/.circleci/config.yml index 86b3b8f..3f715d8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -34,7 +34,7 @@ jobs: <<: *defaults docker: - - image: openjdk:13-jdk + - image: openjdk:14-jdk <<: *defaults_gradle @@ -51,5 +51,5 @@ workflows: gradle: jobs: - build_gradle_jdk8 - - build_gradle_jdk13 + - build_gradle_jdk14 diff --git a/.gitignore b/.gitignore index f007981..f58d3e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,8 @@ -.vscode/* + !.vscode/extensions.json !.vscode/launch.json !.vscode/settings.json !.vscode/tasks.json - -__pycache__ -.classpath -.DS_Store -.gradle -.history -.kobalt -.mtj.tmp/ -.mvn/timing.properties -.mvn/wrapper/maven-wrapper.jar -.nb-gradle -.project -.scannerwork -.settings *.class *.code-workspace *.ctxt @@ -27,7 +13,21 @@ __pycache__ *.sublime-* *.tar.gz *.zip -/**/.idea_modules/ +.DS_Store +.classpath +.gradle +.history +.kobalt +.mtj.tmp/ +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.nb-gradle +.project +.scannerwork +.settings +.vscode/* +/**/.idea/$CACHE_FILE$ +/**/.idea/$PRODUCT_WORKSPACE_FILE$ /**/.idea/**/caches/build_file_checksums.ser /**/.idea/**/contentModel.xml /**/.idea/**/dataSources.ids @@ -48,8 +48,9 @@ __pycache__ /**/.idea/**/uiDesigner.xml /**/.idea/**/usage.statistics.xml /**/.idea/**/workspace.xml -/**/.idea/$CACHE_FILE$ -/**/.idea/$PRODUCT_WORKSPACE_FILE$ +/**/.idea_modules/ +Thumbs.db +__pycache__ atlassian-ide-plugin.xml bin/ build/ @@ -71,6 +72,7 @@ lib/kotlin* libs/ local.properties out/ +pom.xml.asc pom.xml.next pom.xml.releaseBackup pom.xml.tag @@ -80,5 +82,4 @@ project.properties release.properties target/ test-output -Thumbs.db venv diff --git a/.travis.yml b/.travis.yml index 0fe45a9..15bb555 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,13 +14,13 @@ addons: jdk: - oraclejdk8 - - openjdk13 + - openjdk14 before_install: - chmod +x gradlew after_success: - | - if [ "${TRAVIS_TEST_RESULT}" == 0 ] && [ "$TRAVIS_JDK_VERSION" == oraclejdk8 ]; then + if [ "${TRAVIS_TEST_RESULT}" == 0 ] && [ "$TRAVIS_JDK_VERSION" == "openjdk14" ]; then ./gradlew sonarqube fi diff --git a/README.md b/README.md index 21dd7bb..dad7604 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![release](https://img.shields.io/github/release/ethauvin/akismet-kotlin.svg)](https://github.com/ethauvin/akismet-kotlin/releases/latest) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/akismet-kotlin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/akismet-kotlin) [![Download](https://api.bintray.com/packages/ethauvin/maven/akismet-kotlin/images/download.svg)](https://bintray.com/ethauvin/maven/akismet-kotlin/_latestVersion) +[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![Release](https://img.shields.io/github/release/ethauvin/akismet-kotlin.svg)](https://github.com/ethauvin/akismet-kotlin/releases/latest) [![Maven Central](https://img.shields.io/maven-central/v/net.thauvin.erik/akismet-kotlin.svg?label=maven%20central)](https://search.maven.org/search?q=g:%22net.thauvin.erik%22%20AND%20a:%22akismet-kotlin%22) [![Known Vulnerabilities](https://snyk.io/test/github/ethauvin/akismet-kotlin/badge.svg?targetFile=pom.xml)](https://snyk.io/test/github/ethauvin/akismet-kotlin?targetFile=pom.xml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ethauvin_akismet-kotlin&metric=alert_status)](https://sonarcloud.io/dashboard?id=ethauvin_akismet-kotlin) [![Build Status](https://travis-ci.com/ethauvin/akismet-kotlin.svg?branch=master)](https://travis-ci.com/ethauvin/akismet-kotlin) [![CircleCI](https://circleci.com/gh/ethauvin/akismet-kotlin/tree/master.svg?style=shield)](https://circleci.com/gh/ethauvin/akismet-kotlin/tree/master) @@ -56,21 +56,18 @@ if (isSpam) { [View Full Example](https://github.com/ethauvin/akismet-kotlin/blob/master/examples/src/main/java/com/example/AkismetSample.java) - ### Gradle To use with [Gradle](https://gradle.org/), include the following dependency in your [build](https://github.com/ethauvin/akismet-kotlin/blob/master/examples/build.gradle.kts) file: ```gradle -repositories { - jcenter() -} - dependencies { - implementation("net.thauvin.erik:akismet-kotlin:0.9.2") + implementation("net.thauvin.erik:akismet-kotlin:0.9.3") } ``` +Instructions for using with Maven, Ivy, etc. can be found on [Maven Central](https://search.maven.org/artifact/net.thauvin.erik/akismet-kotlin/0.9.3/jar). + ### HttpServletRequest The more information is sent to Akismet, the more accurate the response is. An [HttpServletRequest](https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpServletRequest.html) can be used as a parameter so that all the relevant information is automatically included. diff --git a/build.gradle.kts b/build.gradle.kts index 30ce289..8df8ca8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,22 +1,19 @@ -import com.jfrog.bintray.gradle.tasks.BintrayUploadTask import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -import java.io.FileInputStream import java.net.URL -import java.util.* plugins { jacoco java `maven-publish` - id("com.github.ben-manes.versions") version "0.29.0" - id("com.jfrog.bintray") version "1.8.5" - id("io.gitlab.arturbosch.detekt") version "1.11.0" + signing + id("com.github.ben-manes.versions") version "0.38.0" + id("io.gitlab.arturbosch.detekt") version "1.16.0" id("net.thauvin.erik.gradle.semver") version "1.0.4" - id("org.jetbrains.dokka") version "1.4.0-rc" - id("org.jetbrains.kotlin.jvm") version "1.4.0" - id("org.jetbrains.kotlin.kapt") version "1.4.0" - id("org.jetbrains.kotlin.plugin.serialization") version "1.4.0" - id("org.sonarqube") version "3.0" + id("org.jetbrains.dokka") version "1.4.30" + id("org.jetbrains.kotlin.jvm") version "1.4.31" + id("org.jetbrains.kotlin.kapt") version "1.4.31" + id("org.jetbrains.kotlin.plugin.serialization") version "1.4.31" + id("org.sonarqube") version "3.1.1" } group = "net.thauvin.erik" @@ -32,27 +29,14 @@ var semverProcessor = "net.thauvin.erik:semver:1.2.0" val publicationName = "mavenJava" object VersionInfo { - const val okhttp = "4.8.1" + const val okhttp = "4.9.1" } val versions: VersionInfo by extra { VersionInfo } -// Load local.properties -File("local.properties").apply { - if (exists()) { - FileInputStream(this).use { fis -> - Properties().apply { - load(fis) - forEach { (k, v) -> - extra[k as String] = v - } - } - } - } -} - repositories { - jcenter() + mavenCentral() + jcenter() // needed for Dokka } dependencies { @@ -65,8 +49,8 @@ dependencies { implementation("com.squareup.okhttp3:logging-interceptor:${versions.okhttp}") implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc-218") - testImplementation("org.mockito:mockito-core:3.5.0") - testImplementation("org.testng:testng:7.3.0") + testImplementation("org.mockito:mockito-core:3.8.0") + testImplementation("org.testng:testng:7.4.0") } kapt { @@ -79,13 +63,10 @@ detekt { baseline = project.rootDir.resolve("config/detekt/baseline.xml") } -jacoco { - toolVersion = "0.8.5" -} - java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 + withSourcesJar() } sonarqube { @@ -95,11 +76,6 @@ sonarqube { } } -val sourcesJar by tasks.creating(Jar::class) { - archiveClassifier.set("sources") - from(sourceSets.getByName("main").allSource) -} - val javadocJar by tasks.creating(Jar::class) { dependsOn(tasks.dokkaJavadoc) from(tasks.dokkaJavadoc) @@ -129,7 +105,7 @@ tasks { } assemble { - dependsOn(sourcesJar, javadocJar) + dependsOn(javadocJar) } clean { @@ -139,20 +115,20 @@ tasks { } dokkaHtml { - outputDirectory = "$projectDir/docs" + outputDirectory.set(file("$projectDir/docs")) dokkaSourceSets { configureEach { - jdkVersion = 8 - includes = listOf("config/dokka/packages.md") + jdkVersion.set(8) + includes.from("config/dokka/packages.md") sourceLink { - path = "/src/main/kotlin/" - url = "https://github.com/ethauvin/${project.name}/tree/master/src/main/kotlin/" - lineSuffix = "#L" + localDirectory.set(file("/src/main/kotlin/")) + remoteUrl.set(URL("https://github.com/ethauvin/${project.name}/tree/master/src/main/kotlin/")) + remoteLineSuffix.set("#L") } externalDocumentationLink { - url = URL("https://javaee.github.io/javaee-spec/javadocs/") - packageListUrl = URL("https://javaee.github.io/javaee-spec/javadocs/package-list") + url.set(URL("https://javaee.github.io/javaee-spec/javadocs/")) + packageListUrl.set(URL("https://javaee.github.io/javaee-spec/javadocs/package-list")) } } } @@ -161,11 +137,11 @@ tasks { dokkaJavadoc { dokkaSourceSets { configureEach { - jdkVersion = 8 - includes = listOf("config/dokka/packages.md") + jdkVersion.set(8) + includes.from("config/dokka/packages.md") externalDocumentationLink { - url = URL("https://javaee.github.io/javaee-spec/javadocs/") - packageListUrl = URL("https://javaee.github.io/javaee-spec/javadocs/package-list") + url.set(URL("https://javaee.github.io/javaee-spec/javadocs/")) + packageListUrl.set(URL("https://javaee.github.io/javaee-spec/javadocs/package-list")) } } } @@ -204,20 +180,10 @@ tasks { } } - val bintrayUpload by existing(BintrayUploadTask::class) { - dependsOn(publishToMavenLocal, gitTag) - doFirst { - versionName = "${project.version}" - versionDesc = "${project.name} ${project.version}" - versionVcsTag = "${project.version}" - versionReleased = Date().toString() - } - } - register("release") { - description = "Publishes version ${project.version} to Bintray." + description = "Publishes version ${project.version} to local repository." group = PublishingPlugin.PUBLISH_TASK_GROUP - dependsOn("wrapper", bintrayUpload) + dependsOn("wrapper", "deploy", "gitTag", "publishToMavenLocal") } "sonarqube" { @@ -225,70 +191,51 @@ tasks { } } -fun findProperty(s: String) = project.findProperty(s) as String? -bintray { - user = findProperty("bintray.user") - key = findProperty("bintray.apikey") - publish = isRelease - setPublications(publicationName) - pkg.apply { - repo = "maven" - name = project.name - desc = description - websiteUrl = mavenUrl - issueTrackerUrl = "$mavenUrl/issues" - githubRepo = gitHub - githubReleaseNotesFile = "README.md" - vcsUrl = "$mavenUrl.git" - setLabels("akismet", "android", "automattic", "blog", "comments", "java", "kismet", "kotlin", "spam") - setLicenses("BSD 3-Clause") - publicDownloadNumbers = true - version.apply { - name = project.version as String - desc = description - vcsTag = project.version as String - gpg.apply { - sign = true - } - } - } -} - publishing { publications { create(publicationName) { from(components["java"]) - artifact(sourcesJar) artifact(javadocJar) - pom.withXml { - asNode().apply { - appendNode("name", project.name) - appendNode("description", project.description) - appendNode("url", mavenUrl) - - appendNode("licenses").appendNode("license").apply { - appendNode("name", "BSD 3-Clause") - appendNode("url", "https://opensource.org/licenses/BSD-3-Clause") + pom { + name.set(project.name) + description.set(project.description) + url.set(mavenUrl) + licenses { + license { + name.set("BSD 3-Clause") + url.set("https://opensource.org/licenses/BSD-3-Clause") } - - appendNode("developers").appendNode("developer").apply { - appendNode("id", "ethauvin") - appendNode("name", "Erik C. Thauvin") - appendNode("email", "erik@thauvin.net") - } - - appendNode("scm").apply { - appendNode("connection", "scm:git:$mavenUrl.git") - appendNode("developerConnection", "scm:git:git@github.com:$gitHub.git") - appendNode("url", mavenUrl) - } - - appendNode("issueManagement").apply { - appendNode("system", "GitHub") - appendNode("url", "$mavenUrl/issues") + } + developers { + developer { + id.set("ethauvin") + name.set("Erik C. Thauvin") + email.set("erik@thauvin.net") + url.set("https://erik.thauvin.net/") } } + scm { + connection.set("scm:git:git://github.com/$gitHub.git") + developerConnection.set("scm:git:git@github.com:$gitHub.git") + url.set("$mavenUrl") + } + issueManagement { + system.set("GitHub") + url.set("$mavenUrl/issues") + } } } } + repositories { + maven { + name = "ossrh" + url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") + credentials(PasswordCredentials::class) + } + } +} + +signing { + useGpgCmd() + sign(publishing.publications[publicationName]) } diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html new file mode 100644 index 0000000..c52db5a --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html @@ -0,0 +1,44 @@ + + + + AkismetComment + + +
+
+ + +
+
+
+
+
+
+ +
+

AkismetComment

+
+
+ +
+
fun AkismetComment(request: HttpServletRequest)
+
+

Create an Akismet comment extracting the userIp, userAgent, referrer and serverEnv environment variables from a Servlet request.

See the Akismet API for more details.

See also

+
+ +
+
fun AkismetComment(userIp: String, userAgent: String)
+
+

Create an Akismet comment instance.

See the Akismet API for more details.

Parameters

userIp

IP address of the comment submitter.

userAgent

User agent string of the web browser submitting the comment.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html new file mode 100644 index 0000000..b3c7ad4 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html @@ -0,0 +1,38 @@ + + + + ADMIN_ROLE + + +
+
+ + +
+
+
+
+
+
+ +
+

ADMIN_ROLE

+
+
+ +
+
const val ADMIN_ROLE: String
+
+

Administrator role. If used, Akismet will always return false.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html new file mode 100644 index 0000000..12840ac --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html @@ -0,0 +1,38 @@ + + + + TYPE_BLOG_POST + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_BLOG_POST

+
+
+ +
+
const val TYPE_BLOG_POST: String
+
+

A blog post.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html new file mode 100644 index 0000000..242714a --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html @@ -0,0 +1,38 @@ + + + + TYPE_COMMENT + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_COMMENT

+
+
+ +
+
const val TYPE_COMMENT: String
+
+

A blog comment.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html new file mode 100644 index 0000000..f61c5a4 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html @@ -0,0 +1,38 @@ + + + + TYPE_CONTACT_FORM + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_CONTACT_FORM

+
+
+ +
+
const val TYPE_CONTACT_FORM: String
+
+

A contact form or feedback form submission.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html new file mode 100644 index 0000000..b3bf653 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html @@ -0,0 +1,38 @@ + + + + TYPE_FORUM_POST + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_FORUM_POST

+
+
+ +
+
const val TYPE_FORUM_POST: String
+
+

A top-level forum post.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html new file mode 100644 index 0000000..e3a1745 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html @@ -0,0 +1,38 @@ + + + + TYPE_MESSAGE + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_MESSAGE

+
+
+ +
+
const val TYPE_MESSAGE: String
+
+

A message sent between just a few users.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html new file mode 100644 index 0000000..054e707 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html @@ -0,0 +1,38 @@ + + + + TYPE_PINGBACK + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_PINGBACK

+
+
+ +
+
const val TYPE_PINGBACK: String
+
+

A pingback.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html new file mode 100644 index 0000000..aaa772c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html @@ -0,0 +1,38 @@ + + + + TYPE_REPLY + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_REPLY

+
+
+ +
+
const val TYPE_REPLY: String
+
+

A reply to a top-level forum post.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html new file mode 100644 index 0000000..09781f8 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html @@ -0,0 +1,38 @@ + + + + TYPE_SIGNUP + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_SIGNUP

+
+
+ +
+
const val TYPE_SIGNUP: String
+
+

A new user account.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html new file mode 100644 index 0000000..f8c3089 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html @@ -0,0 +1,38 @@ + + + + TYPE_TRACKBACK + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_TRACKBACK

+
+
+ +
+
const val TYPE_TRACKBACK: String
+
+

A trackback.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html new file mode 100644 index 0000000..e504800 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html @@ -0,0 +1,38 @@ + + + + TYPE_TWEET + + +
+
+ + +
+
+
+
+
+
+ +
+

TYPE_TWEET

+
+
+ +
+
const val TYPE_TWEET: String
+
+

A Twitter message.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html new file mode 100644 index 0000000..4d85051 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html @@ -0,0 +1,183 @@ + + + + Companion + + +
+
+ + +
+
+
+
+
+
+ +
+

Companion

+
object Companion
+
+
+
+
+

Properties

+
+
+
+
ADMIN_ROLE +
Link copied to clipboard
+
+
+
+
const val ADMIN_ROLE: String
Administrator role.
+
+
+
+
+ +
+
+
TYPE_BLOG_POST +
Link copied to clipboard
+
+
+
+
const val TYPE_BLOG_POST: String
A blog post.
+
+
+
+
+ +
+
+
TYPE_COMMENT +
Link copied to clipboard
+
+
+
+
const val TYPE_COMMENT: String
A blog comment.
+
+
+
+
+ +
+
+
TYPE_CONTACT_FORM +
Link copied to clipboard
+
+
+
+
const val TYPE_CONTACT_FORM: String
A contact form or feedback form submission.
+
+
+
+
+ +
+
+
TYPE_FORUM_POST +
Link copied to clipboard
+
+
+
+
const val TYPE_FORUM_POST: String
A top-level forum post.
+
+
+
+
+ +
+
+
TYPE_MESSAGE +
Link copied to clipboard
+
+
+
+
const val TYPE_MESSAGE: String
A message sent between just a few users.
+
+
+
+
+ +
+
+
TYPE_PINGBACK +
Link copied to clipboard
+
+
+
+
const val TYPE_PINGBACK: String
A pingback.
+
+
+
+
+ +
+
+
TYPE_REPLY +
Link copied to clipboard
+
+
+
+
const val TYPE_REPLY: String
A reply to a top-level forum post.
+
+
+
+
+ +
+
+
TYPE_SIGNUP +
Link copied to clipboard
+
+
+
+
const val TYPE_SIGNUP: String
A new user account.
+
+
+
+
+ +
+
+
TYPE_TRACKBACK +
Link copied to clipboard
+
+
+
+
const val TYPE_TRACKBACK: String
A trackback.
+
+
+
+
+ +
+
+
TYPE_TWEET +
Link copied to clipboard
+
+
+
+
const val TYPE_TWEET: String
A Twitter message.
+
+
+
+
+
+
+
+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html new file mode 100644 index 0000000..aeaabf3 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html @@ -0,0 +1,38 @@ + + + + authorEmail + + +
+
+ + +
+
+
+
+
+
+ +
+

authorEmail

+
+
+ +
+
var authorEmail: String?
+
+

Email address submitted with the comment.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html new file mode 100644 index 0000000..21d8d84 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html @@ -0,0 +1,38 @@ + + + + authorUrl + + +
+
+ + +
+
+
+
+
+
+ +
+

authorUrl

+
+
+ +
+
var authorUrl: String?
+
+

URL submitted with comment.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html new file mode 100644 index 0000000..5070517 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html @@ -0,0 +1,38 @@ + + + + author + + +
+
+ + +
+
+
+
+
+
+ +
+

author

+
+
+ +
+
var author: String?
+
+

Name submitted with the comment.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html new file mode 100644 index 0000000..d8c3806 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html @@ -0,0 +1,38 @@ + + + + blogCharset + + +
+
+ + +
+
+
+
+
+
+ +
+

blogCharset

+
+
+ +
+
var blogCharset: String?
+
+

The character encoding for the form values included in comment parameters, such as UTF-8 or ISO-8859-1

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html new file mode 100644 index 0000000..33b8b21 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html @@ -0,0 +1,38 @@ + + + + blogLang + + +
+
+ + +
+
+
+
+
+
+ +
+

blogLang

+
+
+ +
+
var blogLang: String?
+
+

Indicates the language(s) in use on the blog or site, in ISO 639-1 format, comma-separated.

A site with articles in English and French might use: en, fr_ca

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html new file mode 100644 index 0000000..41938a0 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html @@ -0,0 +1,38 @@ + + + + content + + +
+
+ + +
+
+
+
+
+
+ +
+

content

+
+
+ +
+
var content: String?
+
+

The content that was submitted.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html new file mode 100644 index 0000000..007629c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html @@ -0,0 +1,38 @@ + + + + dateGmt + + +
+
+ + +
+
+
+
+
+
+ +
+

dateGmt

+
+
+ +
+
var dateGmt: String?
+
+

The UTC timestamp of the creation of the comment, in ISO 8601 format.

May be omitted if the comment is sent to the API at the time it is created.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html new file mode 100644 index 0000000..0e6fa08 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html @@ -0,0 +1,38 @@ + + + + equals + + +
+
+ + +
+
+
+
+
+
+ +
+

equals

+
+
+ +
+
open operator override fun equals(other: Any?): Boolean
+
+

Indicates whether some other object is equal to this one.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html new file mode 100644 index 0000000..0df04ef --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html @@ -0,0 +1,38 @@ + + + + hashCode + + +
+
+ + +
+
+
+
+
+
+ +
+

hashCode

+
+
+ +
+
open override fun hashCode(): Int
+
+

Returns a hash code value for the object.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html new file mode 100644 index 0000000..3c70742 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html @@ -0,0 +1,382 @@ + + + + AkismetComment + + +
+
+ + +
+
+
+
+
+
+ +
+

AkismetComment

+
open class AkismetComment(userIp: String, userAgent: String)

A comment to send to Akismet.

Most everything is optional. Performance can drop dramatically if you choose to exclude data points. The more data you send Akismet about each comment, the greater the accuracy. They recommend erring on the side of including too much data.

See the Akismet API for more details.

+
+
+
+
+

Parameters

+
+
userIp

IP address of the comment submitter.

userAgent

User agent string of the web browser submitting the comment.

+
+

Constructors

+
+
+
+
AkismetComment +
Link copied to clipboard
+
+
+
+
fun AkismetComment(request: HttpServletRequest)
Create an Akismet comment extracting the userIp, userAgent, referrer and serverEnv environment variables from a Servlet request.
+
+
+
+
+ +
+
+
AkismetComment +
Link copied to clipboard
+
+
+
+
fun AkismetComment(userIp: String, userAgent: String)
Create an Akismet comment instance.
+
+
+
+
+
+

Types

+
+
+
+
Companion +
Link copied to clipboard
+
+
+
+ +
+
object Companion
+
+
+
+
+
+
+
+

Functions

+
+
+
+
equals +
Link copied to clipboard
+
+
+
+ +
+
open operator override fun equals(other: Any?): Boolean
+
+
Indicates whether some other object is equal to this one.
+
+
+
+
+ +
+
+
hashCode +
Link copied to clipboard
+
+
+
+ +
+
open override fun hashCode(): Int
+
+
Returns a hash code value for the object.
+
+
+
+
+ +
+
+
toJson +
Link copied to clipboard
+
+
+
+ +
+
fun toJson(): String
+
+
Returns a JSON representation of the comment.
+
+
+
+
+ +
+
+
toString +
Link copied to clipboard
+
+
+
+ +
+
open override fun toString(): String
+
+
Returns a JSON representation of the comment.
+
+
+
+
+
+

Properties

+
+
+
+
author +
Link copied to clipboard
+
+
+
+
var author: String?
Name submitted with the comment.
+
+
+
+
+ +
+
+
authorEmail +
Link copied to clipboard
+
+
+
+
var authorEmail: String?
Email address submitted with the comment.
+
+
+
+
+ +
+
+
authorUrl +
Link copied to clipboard
+
+
+
+
var authorUrl: String?
URL submitted with comment.
+
+
+
+
+ +
+
+
blogCharset +
Link copied to clipboard
+
+
+
+
var blogCharset: String?
The character encoding for the form values included in comment parameters, such as UTF-8 or ISO-8859-1
+
+
+
+
+ +
+
+
blogLang +
Link copied to clipboard
+
+
+
+
var blogLang: String?
Indicates the language(s) in use on the blog or site, in ISO 639-1 format, comma-separated.
+
+
+
+
+ +
+
+
content +
Link copied to clipboard
+
+
+
+
var content: String?
The content that was submitted.
+
+
+
+
+ +
+
+
dateGmt +
Link copied to clipboard
+
+
+
+
var dateGmt: String?
The UTC timestamp of the creation of the comment, in ISO 8601 format.
+
+
+
+
+ +
+
+
isTest +
Link copied to clipboard
+
+
+
+
var isTest: Boolean = false
This is an optional parameter.
+
+
+
+
+ +
+
+
permalink +
Link copied to clipboard
+
+
+
+
var permalink: String?
The full permanent URL of the entry the comment was submitted to.
+
+
+
+
+ +
+
+
postModifiedGmt +
Link copied to clipboard
+
+
+
+
var postModifiedGmt: String?
The UTC timestamp of the publication time for the post, page or thread on which the comment was posted.
+
+
+
+
+ +
+
+
recheckReason +
Link copied to clipboard
+
+
+
+
var recheckReason: String?
If you are sending content to Akismet to be rechecked, such as a post that has been edited or old pending comments that you'd like to recheck, include this parameter with a string describing why the content is being rechecked.
+
+
+
+
+ +
+
+
referrer +
Link copied to clipboard
+
+
+
+
var referrer: String?
The content of the referer header should be set here.
+
+
+
+
+ +
+
+
serverEnv +
Link copied to clipboard
+
+
+
+
var serverEnv: Map<String, String>
In PHP, there is an array of environmental variables called $_SERVER that contains information about the Web server itself as well as a key/value for every HTTP header sent with the request.
+
+
+
+
+ +
+
+
type +
Link copied to clipboard
+
+
+
+
var type: String?
A string that describes the type of content being sent, such as:You may send a value not listed above if none of them accurately describe your content.
+
+
+
+
+ +
+
+
userAgent +
Link copied to clipboard
+
+
+
+
val userAgent: String
User agent string of the web browser submitting the comment.
+
+
+
+
+ +
+
+
userIp +
Link copied to clipboard
+
+
+
+
val userIp: String
IP address of the comment submitter.
+
+
+
+
+ +
+
+
userRole +
Link copied to clipboard
+
+
+
+
var userRole: String?
The user role of the user who submitted the comment.
+
+
+
+
+
+
+
+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html new file mode 100644 index 0000000..ffd5357 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html @@ -0,0 +1,38 @@ + + + + isTest + + +
+
+ + +
+
+
+
+
+
+ +
+

isTest

+
+
+ +
+
var isTest: Boolean = false
+
+

This is an optional parameter. You can use it when submitting test queries to Akismet.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html new file mode 100644 index 0000000..2e5252a --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html @@ -0,0 +1,38 @@ + + + + permalink + + +
+
+ + +
+
+
+
+
+
+ +
+

permalink

+
+
+ +
+
var permalink: String?
+
+

The full permanent URL of the entry the comment was submitted to.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html new file mode 100644 index 0000000..2fcb63f --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html @@ -0,0 +1,38 @@ + + + + postModifiedGmt + + +
+
+ + +
+
+
+
+
+
+ +
+

postModifiedGmt

+
+
+ +
+
var postModifiedGmt: String?
+
+

The UTC timestamp of the publication time for the post, page or thread on which the comment was posted.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html new file mode 100644 index 0000000..30198b6 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html @@ -0,0 +1,38 @@ + + + + recheckReason + + +
+
+ + +
+
+
+
+
+
+ +
+

recheckReason

+
+
+ +
+
var recheckReason: String?
+
+

If you are sending content to Akismet to be rechecked, such as a post that has been edited or old pending comments that you'd like to recheck, include this parameter with a string describing why the content is being rechecked.

For example: edit

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html new file mode 100644 index 0000000..9510d02 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html @@ -0,0 +1,38 @@ + + + + referrer + + +
+
+ + +
+
+
+
+
+
+ +
+

referrer

+
+
+ +
+
var referrer: String?
+
+

The content of the referer header should be set here.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html new file mode 100644 index 0000000..66601cc --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html @@ -0,0 +1,38 @@ + + + + serverEnv + + +
+
+ + +
+
+
+
+
+
+ +
+

serverEnv

+
+
+ +
+
var serverEnv: Map<String, String>
+
+

In PHP, there is an array of environmental variables called $_SERVER that contains information about the Web server itself as well as a key/value for every HTTP header sent with the request. This data is highly useful to Akismet.

How the submitted content interacts with the server can be very telling, so please include as much of it as possible.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html new file mode 100644 index 0000000..9522ccd --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html @@ -0,0 +1,38 @@ + + + + toJson + + +
+
+ + +
+
+
+
+
+
+ +
+

toJson

+
+
+ +
+
fun toJson(): String
+
+

Returns a JSON representation of the comment.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html new file mode 100644 index 0000000..a9b3bbb --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html @@ -0,0 +1,38 @@ + + + + toString + + +
+
+ + +
+
+
+
+
+
+ +
+

toString

+
+
+ +
+
open override fun toString(): String
+
+

Returns a JSON representation of the comment.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html new file mode 100644 index 0000000..af5c3d6 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html @@ -0,0 +1,38 @@ + + + + type + + +
+
+ + +
+
+
+
+
+
+ +
+

type

+
+
+ +
+
var type: String?
+
+

A string that describes the type of content being sent, such as:

You may send a value not listed above if none of them accurately describe your content.

This is further explained here.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html new file mode 100644 index 0000000..052a139 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html @@ -0,0 +1,38 @@ + + + + userAgent + + +
+
+ + +
+
+
+
+
+
+ +
+

userAgent

+
+
+ +
+
val userAgent: String
+
+

Parameters

userAgent

User agent string of the web browser submitting the comment.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html new file mode 100644 index 0000000..98cc462 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html @@ -0,0 +1,38 @@ + + + + userIp + + +
+
+ + +
+
+
+
+
+
+ +
+

userIp

+
+
+ +
+
val userIp: String
+
+

Parameters

userIp

IP address of the comment submitter.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html new file mode 100644 index 0000000..f47d381 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html @@ -0,0 +1,38 @@ + + + + userRole + + +
+
+ + +
+
+
+
+
+
+ +
+

userRole

+
+
+ +
+
var userRole: String?
+
+

The user role of the user who submitted the comment. This is an optional parameter.

If you set it to ADMIN_ROLE, Akismet will always return false.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html new file mode 100644 index 0000000..5826138 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html @@ -0,0 +1,44 @@ + + + + Akismet + + +
+
+ + +
+
+
+
+
+
+ +
+

Akismet

+
+
+ +
+
fun Akismet(apiKey: String, blog: String)
+
+

Create a new instance using an Akismet API key and URL registered with Akismet.

+
+ +
+
fun Akismet(apiKey: String)
+
+

Creates new instance using the provided Akismet API key.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html new file mode 100644 index 0000000..dd8437f --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html @@ -0,0 +1,44 @@ + + + + dateToGmt + + +
+
+ + +
+
+
+
+
+
+ +
+

dateToGmt

+
+
+ +
+
fun dateToGmt(date: Date): String
+
+

Convert a date to a UTC timestamp. (ISO 8601)

See also

+
+ +
+
fun dateToGmt(date: LocalDateTime): String
+
+

Convert a locale date/time to a UTC timestamp. (ISO 8601)

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html new file mode 100644 index 0000000..2e5aa90 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html @@ -0,0 +1,80 @@ + + + + Companion + + +
+
+ + +
+
+
+
+
+
+ +
+

Companion

+
object Companion
+
+
+
+
+

Functions

+
+
+
+
dateToGmt +
Link copied to clipboard
+
+
+
+ +
+
fun dateToGmt(date: LocalDateTime): String
+
+
Convert a locale date/time to a UTC timestamp.
+
+ +
+
fun dateToGmt(date: Date): String
+
+
Convert a date to a UTC timestamp.
+
+
+
+
+ +
+
+
jsonComment +
Link copied to clipboard
+
+
+
+ +
+
fun jsonComment(json: String): AkismetComment
+
+
(Re)Create a comment from a JSON string.
+
+
+
+
+
+
+
+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html new file mode 100644 index 0000000..c9c5ac0 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html @@ -0,0 +1,38 @@ + + + + jsonComment + + +
+
+ + +
+
+
+
+
+
+ +
+

jsonComment

+
+
+ +
+
fun jsonComment(json: String): AkismetComment
+
+

(Re)Create a comment from a JSON string.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html new file mode 100644 index 0000000..dd60b4c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html @@ -0,0 +1,38 @@ + + + + appUserAgent + + +
+
+ + +
+
+
+
+
+
+ +
+

appUserAgent

+
+
+ +
+
var appUserAgent: String
+
+

The application user agent to be sent to Akismet.

If possible, the application user agent string should always use the following format:

    Application Name/Version

The library's own user agent string will automatically be appended.

See the Akismet API for more details.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/blog.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/blog.html new file mode 100644 index 0000000..dbc6fa2 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/blog.html @@ -0,0 +1,38 @@ + + + + blog + + +
+
+ + +
+
+
+
+
+
+ +
+

blog

+
+
+ +
+
var blog: String
+
+

The URL registered with Akismet.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html new file mode 100644 index 0000000..089bde2 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html @@ -0,0 +1,38 @@ + + + + checkComment + + +
+
+ + +
+
+
+
+
+
+ +
+

checkComment

+
+
+ +
+
fun checkComment(comment: AkismetComment, trueOnError: Boolean = false): Boolean
+
+

Comment Check.

This is the call you will make the most. It takes a number of arguments and characteristics about the submitted content and then returns a thumbs up or thumbs down. Performance can drop dramatically if you choose to exclude data points. The more data you send Akismet about each comment, the greater the accuracy. They recommend erring on the side of including too much data

By default, if an error (IO, empty response from Akismet, etc.) occurs the function will return false and log the error, use the trueOnError parameter to change this behavior.

See the Akismet API for more details.

Return

true if the comment is spam, false if the comment is not.

Parameters

trueOnError

Set to return true on error.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html new file mode 100644 index 0000000..81c9cc7 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html @@ -0,0 +1,38 @@ + + + + debugHelp + + +
+
+ + +
+
+
+
+
+
+ +
+

debugHelp

+
+
+ +
+
var debugHelp: String
+
+

The x-akismet-debug-help header from the last operation, if any.

If the call returns neither true nor false, the x-akismet-debug-help header will provide context for any error that has occurred.

Note that the x-akismet-debug-help header will not always be sent if a response does not return false or true.

See the Akismet API for more details.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/error-message.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/error-message.html new file mode 100644 index 0000000..d3ef1a0 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/error-message.html @@ -0,0 +1,38 @@ + + + + errorMessage + + +
+
+ + +
+
+
+
+
+
+ +
+

errorMessage

+
+
+ +
+
var errorMessage: String
+
+

The error message.

The error (IO, empty response from Akismet, etc.) message is also logged as a warning.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html new file mode 100644 index 0000000..d0b22fd --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html @@ -0,0 +1,38 @@ + + + + executeMethod + + +
+
+ + +
+
+
+
+
+
+ +
+

executeMethod

+
+
+ +
+
fun executeMethod(apiUrl: HttpUrl?, formBody: FormBody, trueOnError: Boolean = false): Boolean
+
+

Execute a call to an Akismet REST API method.

Parameters

apiUrl

The Akismet API URL endpoint. (e.g. https://rest.akismet.com/1.1/verify-key)

formBody

The HTTP POST form body containing the request parameters to be submitted.

trueOnError

Set to return true on error (IO, empty response, etc.)

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html new file mode 100644 index 0000000..7c012e4 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html @@ -0,0 +1,38 @@ + + + + httpStatusCode + + +
+
+ + +
+
+
+
+
+
+ +
+

httpStatusCode

+
+
+ +
+
var httpStatusCode: Int = 0
+
+

The HTTP status code of the last operation.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/index.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/index.html new file mode 100644 index 0000000..a96b905 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/index.html @@ -0,0 +1,321 @@ + + + + Akismet + + +
+
+ + +
+
+
+
+
+
+ +
+

Akismet

+
open class Akismet(apiKey: String)

Provides access to the Akismet API.

+
+
+
+
+

Constructors

+
+
+
+
Akismet +
Link copied to clipboard
+
+
+
+
fun Akismet(apiKey: String, blog: String)
Create a new instance using an Akismet API key and URL registered with Akismet.
+
+
+
+
+ +
+
+
Akismet +
Link copied to clipboard
+
+
+
+
fun Akismet(apiKey: String)
Creates new instance using the provided Akismet API key.
+
+
+
+
+
+

Types

+
+
+
+
Companion +
Link copied to clipboard
+
+
+
+ +
+
object Companion
+
+
+
+
+
+
+
+

Functions

+
+
+
+
checkComment +
Link copied to clipboard
+
+
+
+ +
+
fun checkComment(comment: AkismetComment, trueOnError: Boolean = false): Boolean
+
+
Comment Check.
+
+
+
+
+ +
+
+
executeMethod +
Link copied to clipboard
+
+
+
+ +
+
fun executeMethod(apiUrl: HttpUrl?, formBody: FormBody, trueOnError: Boolean = false): Boolean
+
+
Execute a call to an Akismet REST API method.
+
+
+
+
+ +
+
+
reset +
Link copied to clipboard
+
+
+
+ +
+
fun reset()
+
+
+
+
+
+
+ +
+
+
submitHam +
Link copied to clipboard
+
+
+
+ +
+
fun submitHam(comment: AkismetComment): Boolean
+
+
Submit Ham.
+
+
+
+
+ +
+
+
submitSpam +
Link copied to clipboard
+
+
+
+ +
+
fun submitSpam(comment: AkismetComment): Boolean
+
+
Submit Spam.
+
+
+
+
+ +
+
+
verifyKey +
Link copied to clipboard
+
+
+
+ +
+
fun verifyKey(): Boolean
+
+
Key Verification.
+
+
+
+
+
+

Properties

+
+
+
+
appUserAgent +
Link copied to clipboard
+
+
+
+
var appUserAgent: String
The application user agent to be sent to Akismet.
+
+
+
+
+ +
+
+
blog +
Link copied to clipboard
+
+
+
+
var blog: String
The URL registered with Akismet.
+
+
+
+
+ +
+
+
debugHelp +
Link copied to clipboard
+
+
+
+
var debugHelp: String
The x-akismet-debug-help header from the last operation, if any.
+
+
+
+
+ +
+
+
errorMessage +
Link copied to clipboard
+
+
+
+
var errorMessage: String
The error message.
+
+
+
+
+ +
+
+
httpStatusCode +
Link copied to clipboard
+
+
+
+
var httpStatusCode: Int = 0
The HTTP status code of the last operation.
+
+
+
+
+ +
+
+
isDiscard +
Link copied to clipboard
+
+
+
+
var isDiscard: Boolean = false
Set to true if Akismet has determined that the last checked comment is blatant spam, and you can safely discard it without saving it in any spam queue.
+
+
+
+
+ +
+
+
isVerifiedKey +
Link copied to clipboard
+
+
+
+
var isVerifiedKey: Boolean = false
Check if the API Key has been verified
+
+
+
+
+ +
+
+
logger +
Link copied to clipboard
+
+
+
+
val logger: Logger
The logger instance.
+
+
+
+
+ +
+
+
proTip +
Link copied to clipboard
+
+
+
+
var proTip: String
The x-akismet-pro-tip header from the last operation, if any.
+
+
+
+
+ +
+
+
response +
Link copied to clipboard
+
+
+
+
var response: String
The actual response sent by Akismet from the last operation.
+
+
+
+
+
+
+
+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html new file mode 100644 index 0000000..ec5cf5f --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html @@ -0,0 +1,38 @@ + + + + isDiscard + + +
+
+ + +
+
+
+
+
+
+ +
+

isDiscard

+
+
+ +
+
var isDiscard: Boolean = false
+
+

Set to true if Akismet has determined that the last checked comment is blatant spam, and you can safely discard it without saving it in any spam queue.

See the Akismet API for more details.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html new file mode 100644 index 0000000..960784c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html @@ -0,0 +1,38 @@ + + + + isVerifiedKey + + +
+
+ + +
+
+
+
+
+
+ +
+

isVerifiedKey

+
+
+ +
+
var isVerifiedKey: Boolean = false
+
+

Check if the API Key has been verified

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/logger.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/logger.html new file mode 100644 index 0000000..b1cd79c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/logger.html @@ -0,0 +1,38 @@ + + + + logger + + +
+
+ + +
+
+
+
+
+
+ +
+

logger

+
+
+ +
+
val logger: Logger
+
+

The logger instance.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html new file mode 100644 index 0000000..03151d2 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html @@ -0,0 +1,38 @@ + + + + proTip + + +
+
+ + +
+
+
+
+
+
+ +
+

proTip

+
+
+ +
+
var proTip: String
+
+

The x-akismet-pro-tip header from the last operation, if any.

If the x-akismet-pro-tip header is set to discard, then Akismet has determined that the comment is blatant spam, and you can safely discard it without saving it in any spam queue.

See the Akismet API for more details.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/reset.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/reset.html new file mode 100644 index 0000000..5fd2a9c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/reset.html @@ -0,0 +1,38 @@ + + + + reset + + +
+
+ + +
+
+
+
+
+
+ +
+

reset

+
+
+ +
+
fun reset()
+
+

Reset the debugHelp, errorMessage, httpStatusCode, isDiscard, isVerifiedKey, proTip, and response properties.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/response.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/response.html new file mode 100644 index 0000000..01209ad --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/response.html @@ -0,0 +1,38 @@ + + + + response + + +
+
+ + +
+
+
+
+
+
+ +
+

response

+
+
+ +
+
var response: String
+
+

The actual response sent by Akismet from the last operation.

For example: true, false, valid, invalid, etc.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html new file mode 100644 index 0000000..7719c36 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html @@ -0,0 +1,38 @@ + + + + submitHam + + +
+
+ + +
+
+
+
+
+
+ +
+

submitHam

+
+
+ +
+
fun submitHam(comment: AkismetComment): Boolean
+
+

Submit Ham. (False Positives)

This call is intended for the submission of false positives - items that were incorrectly classified as spam by Akismet. It takes identical arguments as comment check and submit spam.

It is very important that the values you submit with this call match those of your comment check calls as closely as possible. In order to learn from its mistakes, Akismet needs to match your missed spam and false positive reports to the original comment-check API calls made when the content was first posted. While it is normal for less information to be available for submit-spam and submit-ham calls (most comment systems and forums will not store all metadata), you should ensure that the values that you do send match those of the original content.

See the Akismet API for more details.

Return

true if the comment was submitted, false otherwise.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html new file mode 100644 index 0000000..534b12c --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html @@ -0,0 +1,38 @@ + + + + submitSpam + + +
+
+ + +
+
+
+
+
+
+ +
+

submitSpam

+
+
+ +
+
fun submitSpam(comment: AkismetComment): Boolean
+
+

Submit Spam. (Missed Spam)

This call is for submitting comments that weren't marked as spam but should have been.

It is very important that the values you submit with this call match those of your comment check calls as closely as possible. In order to learn from its mistakes, Akismet needs to match your missed spam and false positive reports to the original comment-check API calls made when the content was first posted. While it is normal for less information to be available for submit-spam and submit-ham calls (most comment systems and forums will not store all metadata), you should ensure that the values that you do send match those of the original content.

See the Akismet API for more details.

Return

true if the comment was submitted, false otherwise.

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html new file mode 100644 index 0000000..f60cde2 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html @@ -0,0 +1,38 @@ + + + + verifyKey + + +
+
+ + +
+
+
+
+
+
+ +
+

verifyKey

+
+
+ +
+
fun verifyKey(): Boolean
+
+

Key Verification.

Key verification authenticates your key before calling the comment check, submit spam, or submit ham methods. This is the first call that you should make to Akismet and is especially useful if you will have multiple users with their own Akismet subscriptions using your application.

See the Akismet API for more details.

Return

true if the key is valid, false otherwise.

See also

+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/net.thauvin.erik.akismet/index.html b/docs/akismet-kotlin/net.thauvin.erik.akismet/index.html new file mode 100644 index 0000000..0d3b2d6 --- /dev/null +++ b/docs/akismet-kotlin/net.thauvin.erik.akismet/index.html @@ -0,0 +1,73 @@ + + + + net.thauvin.erik.akismet + + +
+
+ + +
+
+
+
+
+
+ +
+

Package net.thauvin.erik.akismet

+
+
+
+
+

Types

+
+
+
+
Akismet +
Link copied to clipboard
+
+
+
+ +
+
open class Akismet(apiKey: String)
+
+
Provides access to the Akismet API.
+
+
+
+
+ +
+
+
AkismetComment +
Link copied to clipboard
+
+
+
+ +
+
open class AkismetComment(userIp: String, userAgent: String)
+
+
A comment to send to Akismet.
+
+
+
+
+
+
+
+
+ +
+
+ + + diff --git a/docs/akismet-kotlin/package-list b/docs/akismet-kotlin/package-list new file mode 100644 index 0000000..342db5c --- /dev/null +++ b/docs/akismet-kotlin/package-list @@ -0,0 +1,64 @@ +$dokka.format:html-v1 +$dokka.linkExtension:html +$dokka.location:net.thauvin.erik.akismet////PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/index.html +$dokka.location:net.thauvin.erik.akismet/Akismet.Companion///PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/index.html +$dokka.location:net.thauvin.erik.akismet/Akismet.Companion/dateToGmt/#java.time.LocalDateTime/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html +$dokka.location:net.thauvin.erik.akismet/Akismet.Companion/dateToGmt/#java.util.Date/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/date-to-gmt.html +$dokka.location:net.thauvin.erik.akismet/Akismet.Companion/jsonComment/#kotlin.String/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-companion/json-comment.html +$dokka.location:net.thauvin.erik.akismet/Akismet///PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/index.html +$dokka.location:net.thauvin.erik.akismet/Akismet/Akismet/#kotlin.String#kotlin.String/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html +$dokka.location:net.thauvin.erik.akismet/Akismet/Akismet/#kotlin.String/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/-akismet.html +$dokka.location:net.thauvin.erik.akismet/Akismet/appUserAgent/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/app-user-agent.html +$dokka.location:net.thauvin.erik.akismet/Akismet/blog/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/blog.html +$dokka.location:net.thauvin.erik.akismet/Akismet/checkComment/#net.thauvin.erik.akismet.AkismetComment#kotlin.Boolean/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/check-comment.html +$dokka.location:net.thauvin.erik.akismet/Akismet/debugHelp/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/debug-help.html +$dokka.location:net.thauvin.erik.akismet/Akismet/errorMessage/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/error-message.html +$dokka.location:net.thauvin.erik.akismet/Akismet/executeMethod/#okhttp3.HttpUrl?#okhttp3.FormBody#kotlin.Boolean/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/execute-method.html +$dokka.location:net.thauvin.erik.akismet/Akismet/httpStatusCode/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/http-status-code.html +$dokka.location:net.thauvin.erik.akismet/Akismet/isDiscard/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-discard.html +$dokka.location:net.thauvin.erik.akismet/Akismet/isVerifiedKey/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/is-verified-key.html +$dokka.location:net.thauvin.erik.akismet/Akismet/logger/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/logger.html +$dokka.location:net.thauvin.erik.akismet/Akismet/proTip/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/pro-tip.html +$dokka.location:net.thauvin.erik.akismet/Akismet/reset/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/reset.html +$dokka.location:net.thauvin.erik.akismet/Akismet/response/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/response.html +$dokka.location:net.thauvin.erik.akismet/Akismet/submitHam/#net.thauvin.erik.akismet.AkismetComment/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-ham.html +$dokka.location:net.thauvin.erik.akismet/Akismet/submitSpam/#net.thauvin.erik.akismet.AkismetComment/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/submit-spam.html +$dokka.location:net.thauvin.erik.akismet/Akismet/verifyKey/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet/verify-key.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion///PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/index.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/ADMIN_ROLE/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-a-d-m-i-n_-r-o-l-e.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_BLOG_POST/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-b-l-o-g_-p-o-s-t.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_COMMENT/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-m-m-e-n-t.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_CONTACT_FORM/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-c-o-n-t-a-c-t_-f-o-r-m.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_FORUM_POST/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-f-o-r-u-m_-p-o-s-t.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_MESSAGE/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-m-e-s-s-a-g-e.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_PINGBACK/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-p-i-n-g-b-a-c-k.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_REPLY/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-r-e-p-l-y.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_SIGNUP/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-s-i-g-n-u-p.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_TRACKBACK/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-r-a-c-k-b-a-c-k.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment.Companion/TYPE_TWEET/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-companion/-t-y-p-e_-t-w-e-e-t.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment///PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/index.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/AkismetComment/#javax.servlet.http.HttpServletRequest/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/AkismetComment/#kotlin.String#kotlin.String/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/-akismet-comment.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/author/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/authorEmail/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-email.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/authorUrl/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/author-url.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/blogCharset/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-charset.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/blogLang/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/blog-lang.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/content/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/content.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/dateGmt/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/date-gmt.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/equals/#kotlin.Any?/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/equals.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/hashCode/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/hash-code.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/isTest/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/is-test.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/permalink/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/permalink.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/postModifiedGmt/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/post-modified-gmt.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/recheckReason/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/recheck-reason.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/referrer/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/referrer.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/serverEnv/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/server-env.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/toJson/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-json.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/toString/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/to-string.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/type/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/type.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/userAgent/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-agent.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/userIp/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-ip.html +$dokka.location:net.thauvin.erik.akismet/AkismetComment/userRole/#/PointingToDeclaration/akismet-kotlin/net.thauvin.erik.akismet/-akismet-comment/user-role.html +net.thauvin.erik.akismet + diff --git a/docs/images/anchor-copy-button.svg b/docs/images/anchor-copy-button.svg new file mode 100644 index 0000000..bab9d74 --- /dev/null +++ b/docs/images/anchor-copy-button.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/docs/images/arrow_down.svg b/docs/images/arrow_down.svg new file mode 100644 index 0000000..89e7df4 --- /dev/null +++ b/docs/images/arrow_down.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/images/copy-icon.svg b/docs/images/copy-icon.svg new file mode 100644 index 0000000..61440f0 --- /dev/null +++ b/docs/images/copy-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/images/copy-successful-icon.svg b/docs/images/copy-successful-icon.svg new file mode 100644 index 0000000..1865f73 --- /dev/null +++ b/docs/images/copy-successful-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/images/docs_logo.svg b/docs/images/docs_logo.svg new file mode 100644 index 0000000..7c1e3ae --- /dev/null +++ b/docs/images/docs_logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/images/footer-go-to-link.svg b/docs/images/footer-go-to-link.svg new file mode 100644 index 0000000..0137e22 --- /dev/null +++ b/docs/images/footer-go-to-link.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/images/go-to-top-icon.svg b/docs/images/go-to-top-icon.svg new file mode 100644 index 0000000..d987f3e --- /dev/null +++ b/docs/images/go-to-top-icon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/docs/images/logo-icon.svg b/docs/images/logo-icon.svg new file mode 100644 index 0000000..1b3b367 --- /dev/null +++ b/docs/images/logo-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..5937efb --- /dev/null +++ b/docs/index.html @@ -0,0 +1,47 @@ + + + + akismet-kotlin + + +
+
+ + +
+
+
+
+
+
+ +
+

akismet-kotlin

+

Akismet for Kotlin/Java, a client library for accessing the Automattic Kismet (Akismet) spam comments filtering service.

package net.thauvin.erik.akismet

A Kotlin/Java library for accessing the Akismet service.

+
+

Packages

+
+
+
+
+
net.thauvin.erik.akismet +
Link copied to clipboard
+
+
+
+
+
+
+
+
+ +
+
+ + + diff --git a/docs/navigation.html b/docs/navigation.html new file mode 100644 index 0000000..0e24462 --- /dev/null +++ b/docs/navigation.html @@ -0,0 +1,13 @@ + + diff --git a/docs/scripts/clipboard.js b/docs/scripts/clipboard.js new file mode 100644 index 0000000..b00ce24 --- /dev/null +++ b/docs/scripts/clipboard.js @@ -0,0 +1,52 @@ +window.addEventListener('load', () => { + document.querySelectorAll('span.copy-icon').forEach(element => { + element.addEventListener('click', (el) => copyElementsContentToClipboard(element)); + }) + + document.querySelectorAll('span.anchor-icon').forEach(element => { + element.addEventListener('click', (el) => { + if(element.hasAttribute('pointing-to')){ + const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to') + copyTextToClipboard(element, location) + } + }); + }) +}) + +const copyElementsContentToClipboard = (element) => { + const selection = window.getSelection(); + const range = document.createRange(); + range.selectNodeContents(element.parentNode.parentNode); + selection.removeAllRanges(); + selection.addRange(range); + + copyAndShowPopup(element, () => selection.removeAllRanges()) +} + +const copyTextToClipboard = (element, text) => { + var textarea = document.createElement("textarea"); + textarea.textContent = text; + textarea.style.position = "fixed"; + document.body.appendChild(textarea); + textarea.select(); + + copyAndShowPopup(element, () => document.body.removeChild(textarea)) +} + +const copyAndShowPopup = (element, after) => { + try { + document.execCommand('copy'); + element.nextElementSibling.classList.add('active-popup'); + setTimeout(() => { + element.nextElementSibling.classList.remove('active-popup'); + }, 1200); + } catch (e) { + console.error('Failed to write to clipboard:', e) + } + finally { + if(after) after() + } +} + +const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0] + diff --git a/docs/scripts/main.js b/docs/scripts/main.js new file mode 100644 index 0000000..029fa9e --- /dev/null +++ b/docs/scripts/main.js @@ -0,0 +1,67 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=390)}([function(e,t,n){e.exports=n(264)()},function(e,t,n){"use strict";e.exports=n(239)},function(e,t,n){var r; +/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;to;)Q(e,n=r[o++],t[n]);return e},X=function(e){var t=F.call(this,e=x(e,!0));return!(this===W&&o(H,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(H,e)||o(this,A)&&this[A][e])||t)},J=function(e,t){if(e=w(e),t=x(t,!0),e!==W||!o(H,t)||o(U,t)){var n=I(e,t);return!n||!o(H,t)||o(e,A)&&e[A][t]||(n.enumerable=!0),n}},Z=function(e){for(var t,n=z(w(e)),r=[],i=0;n.length>i;)o(H,t=n[i++])||t==A||t==c||r.push(t);return r},ee=function(e){for(var t,n=e===W,r=z(n?U:w(e)),i=[],a=0;r.length>a;)!o(H,t=r[a++])||n&&!o(W,t)||i.push(H[t]);return i};B||(l((R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(n){this===W&&t.call(U,n),o(this,A)&&o(this[A],e)&&(this[A][e]=!1),K(this,e,S(1,n))};return i&&G&&K(W,e,{configurable:!0,set:t}),q(e)}).prototype,"toString",(function(){return this._k})),E.f=J,C.f=Q,n(114).f=O.f=Z,n(95).f=X,T.f=ee,i&&!n(111)&&l(W,"propertyIsEnumerable",X,!0),h.f=function(e){return q(d(e))}),a(a.G+a.W+a.F*!B,{Symbol:R});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)d(te[ne++]);for(var re=P(d.store),oe=0;re.length>oe;)v(re[oe++]);a(a.S+a.F*!B,"Symbol",{for:function(e){return o(D,e+="")?D[e]:D[e]=R(e)},keyFor:function(e){if(!$(e))throw TypeError(e+" is not a symbol!");for(var t in D)if(D[t]===e)return t},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!B,"Object",{create:function(e,t){return void 0===t?k(e):Y(k(e),t)},defineProperty:Q,defineProperties:Y,getOwnPropertyDescriptor:J,getOwnPropertyNames:Z,getOwnPropertySymbols:ee});var ie=u((function(){T.f(1)}));a(a.S+a.F*ie,"Object",{getOwnPropertySymbols:function(e){return T.f(_(e))}}),M&&a(a.S+a.F*(!B||u((function(){var e=R();return"[null]"!=N([e])||"{}"!=N({a:e})||"{}"!=N(Object(e))}))),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(b(t)||void 0!==e)&&!$(e))return m(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!$(t))return t}),r[1]=t,N.apply(M,r)}}),R.prototype[L]||n(59)(R.prototype,L,R.prototype.valueOf),f(R,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(10);r(r.S+r.F*!n(30),"Object",{defineProperty:n(39).f})},function(e,t,n){"use strict";n(257);var r=n(27),o=n(135),i=n(30),a=/./.toString,l=function(e){n(42)(RegExp.prototype,"toString",e,!0)};n(31)((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?l((function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!i&&e instanceof RegExp?o.call(e):void 0)})):"toString"!=a.name&&l((function(){return a.call(this)}))},function(e,t,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(42)(r,"toString",(function(){var e=i.call(this);return e==e?o.call(this):"Invalid Date"}))},function(e,t,n){n(182)("asyncIterator")},function(e,t,n){var r=n(32),o=n(79),i=n(59),a=n(42),l=n(80),c=function(e,t,n){var u,s,f,p,d=e&c.F,h=e&c.G,v=e&c.S,g=e&c.P,m=e&c.B,y=h?r:v?r[t]||(r[t]={}):(r[t]||{}).prototype,b=h?o:o[t]||(o[t]={}),_=b.prototype||(b.prototype={});for(u in h&&(n=t),n)f=((s=!d&&y&&void 0!==y[u])?y:n)[u],p=m&&s?l(f,r):g&&"function"==typeof f?l(Function.call,f):f,y&&a(y,u,f,e&c.U),b[u]!=f&&i(b,u,p),g&&_[u]!=f&&(_[u]=f)};r.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){for(var r=n(12),o=n(70),i=n(42),a=n(32),l=n(59),c=n(96),u=n(25),s=u("iterator"),f=u("toStringTag"),p=c.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(d),v=0;v=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t,n){var r=n(10);r(r.S,"Object",{create:n(83)})},function(e,t,n){var r=n(10),o=n(83),i=n(81),a=n(27),l=n(29),c=n(31),u=n(184),s=(n(32).Reflect||{}).construct,f=c((function(){function e(){}return!(s((function(){}),[],e)instanceof e)})),p=!c((function(){s((function(){}))}));r(r.S+r.F*(f||p),"Reflect",{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!f)return s(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(u.apply(e,r))}var c=n.prototype,d=o(l(c)?c:Object.prototype),h=Function.apply.call(e,d,t);return l(h)?h:d}})},function(e,t,n){var r=n(10);r(r.S,"Object",{setPrototypeOf:n(180).set})},function(e,t,n){var r=n(54),o=n(70);n(252)("keys",(function(){return function(e){return o(r(e))}}))},function(e,t,n){"use strict";var r=n(10),o=n(130)(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n(72)(i)),"Array",{indexOf:function(e){return a?i.apply(this,arguments)||0:o(this,e,arguments[1])}})},function(e,t,n){var r=n(26),o=n(266);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(10);r(r.S+r.F,"Object",{assign:n(185)})},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,l=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(l),"/*# ".concat(c," */")),i=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(i).concat([o]).join("\n")}var a,l,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(r)for(var i=0;i=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})}))},function(e,t,n){var r=n(35),o=n(28),i=n(98),a=n(74),l=n(75),c=function(e,t,n){var u,s,f,p=e&c.F,d=e&c.G,h=e&c.S,v=e&c.P,g=e&c.B,m=e&c.W,y=d?o:o[t]||(o[t]={}),b=y.prototype,_=d?r:h?r[t]:(r[t]||{}).prototype;for(u in d&&(n=t),n)(s=!p&&_&&void 0!==_[u])&&l(y,u)||(f=s?_[u]:n[u],y[u]=d&&"function"!=typeof _[u]?n[u]:g&&s?i(f,r):m&&_[u]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):v&&"function"==typeof f?i(Function.call,f):f,v&&((y.virtual||(y.virtual={}))[u]=f,e&c.R&&b&&!b[u]&&a(b,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var r=n(26),o=n(332);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(113),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(71);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";var r=n(10),o=n(62)(1);r(r.P+r.F*!n(72)([].map,!0),"Array",{map:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(64);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){e.exports=!n(85)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(80),o=n(10),i=n(54),a=n(189),l=n(190),c=n(53),u=n(174),s=n(191);o(o.S+o.F*!n(192)((function(e){Array.from(e)})),"Array",{from:function(e){var t,n,o,f,p=i(e),d="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,g=void 0!==v,m=0,y=s(p);if(g&&(v=r(v,h>2?arguments[2]:void 0,2)),null==y||d==Array&&l(y))for(n=new d(t=c(p.length));t>m;m++)u(n,m,g?v(p[m],m):p[m]);else for(f=y.call(p),n=new d;!(o=f.next()).done;m++)u(n,m,g?a(f,v,[o.value,m],!0):o.value);return n.length=m,n}})},function(e,t,n){var r=n(39),o=n(91);e.exports=n(30)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(112),o=n(71);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(10),o=n(62)(0),i=n(72)([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(80),o=n(112),i=n(54),a=n(53),l=n(259);e.exports=function(e,t){var n=1==e,c=2==e,u=3==e,s=4==e,f=6==e,p=5==e||f,d=t||l;return function(t,l,h){for(var v,g,m=i(t),y=o(m),b=r(l,h,3),_=a(y.length),w=0,x=n?d(t,_):c?d(t,0):void 0;_>w;w++)if((p||w in y)&&(g=b(v=y[w],w,m),e))if(n)x[w]=g;else if(g)switch(e){case 3:return!0;case 5:return v;case 6:return w;case 2:x.push(v)}else if(s)return!1;return f?-1:u||s?s:x}}},function(e,t,n){var r=n(56),o=n(200),i=n(147),a=Object.defineProperty;t.f=n(57)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports={default:n(282),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(304)),o=a(n(308)),i=a(n(205));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,i.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){(function(e,r){var o; +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(){var i="Expected a function",a="__lodash_placeholder__",l=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],c="[object Arguments]",u="[object Array]",s="[object Boolean]",f="[object Date]",p="[object Error]",d="[object Function]",h="[object GeneratorFunction]",v="[object Map]",g="[object Number]",m="[object Object]",y="[object RegExp]",b="[object Set]",_="[object String]",w="[object Symbol]",x="[object WeakMap]",S="[object ArrayBuffer]",k="[object DataView]",O="[object Float32Array]",E="[object Float64Array]",T="[object Int8Array]",C="[object Int16Array]",P="[object Int32Array]",I="[object Uint8Array]",j="[object Uint16Array]",z="[object Uint32Array]",R=/\b__p \+= '';/g,M=/\b(__p \+=) '' \+/g,N=/(__e\(.*?\)|\b__t\)) \+\n'';/g,A=/&(?:amp|lt|gt|quot|#39);/g,L=/[&<>"']/g,F=RegExp(A.source),D=RegExp(L.source),H=/<%-([\s\S]+?)%>/g,U=/<%([\s\S]+?)%>/g,W=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,V=/^\w*$/,G=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,K=/[\\^$.*+?()[\]{}|]/g,q=RegExp(K.source),$=/^\s+|\s+$/g,Q=/^\s+/,Y=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Z=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,oe=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,le=/^0o[0-7]+$/i,ce=/^(?:0|[1-9]\d*)$/,ue=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,se=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",he="[\\ud800-\\udfff]",ve="["+de+"]",ge="["+pe+"]",me="\\d+",ye="[\\u2700-\\u27bf]",be="[a-z\\xdf-\\xf6\\xf8-\\xff]",_e="[^\\ud800-\\udfff"+de+me+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",we="\\ud83c[\\udffb-\\udfff]",xe="[^\\ud800-\\udfff]",Se="(?:\\ud83c[\\udde6-\\uddff]){2}",ke="[\\ud800-\\udbff][\\udc00-\\udfff]",Oe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ee="(?:"+be+"|"+_e+")",Te="(?:"+Oe+"|"+_e+")",Ce="(?:"+ge+"|"+we+")"+"?",Pe="[\\ufe0e\\ufe0f]?"+Ce+("(?:\\u200d(?:"+[xe,Se,ke].join("|")+")[\\ufe0e\\ufe0f]?"+Ce+")*"),Ie="(?:"+[ye,Se,ke].join("|")+")"+Pe,je="(?:"+[xe+ge+"?",ge,Se,ke,he].join("|")+")",ze=RegExp("['’]","g"),Re=RegExp(ge,"g"),Me=RegExp(we+"(?="+we+")|"+je+Pe,"g"),Ne=RegExp([Oe+"?"+be+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ve,Oe,"$"].join("|")+")",Te+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ve,Oe+Ee,"$"].join("|")+")",Oe+"?"+Ee+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Oe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",me,Ie].join("|"),"g"),Ae=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\ufe0e\\ufe0f]"),Le=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Fe=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],De=-1,He={};He[O]=He[E]=He[T]=He[C]=He[P]=He[I]=He["[object Uint8ClampedArray]"]=He[j]=He[z]=!0,He[c]=He[u]=He[S]=He[s]=He[k]=He[f]=He[p]=He[d]=He[v]=He[g]=He[m]=He[y]=He[b]=He[_]=He[x]=!1;var Ue={};Ue[c]=Ue[u]=Ue[S]=Ue[k]=Ue[s]=Ue[f]=Ue[O]=Ue[E]=Ue[T]=Ue[C]=Ue[P]=Ue[v]=Ue[g]=Ue[m]=Ue[y]=Ue[b]=Ue[_]=Ue[w]=Ue[I]=Ue["[object Uint8ClampedArray]"]=Ue[j]=Ue[z]=!0,Ue[p]=Ue[d]=Ue[x]=!1;var We={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Be=parseFloat,Ve=parseInt,Ge="object"==typeof e&&e&&e.Object===Object&&e,Ke="object"==typeof self&&self&&self.Object===Object&&self,qe=Ge||Ke||Function("return this")(),$e=t&&!t.nodeType&&t,Qe=$e&&"object"==typeof r&&r&&!r.nodeType&&r,Ye=Qe&&Qe.exports===$e,Xe=Ye&&Ge.process,Je=function(){try{var e=Qe&&Qe.require&&Qe.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(e){}}(),Ze=Je&&Je.isArrayBuffer,et=Je&&Je.isDate,tt=Je&&Je.isMap,nt=Je&&Je.isRegExp,rt=Je&&Je.isSet,ot=Je&&Je.isTypedArray;function it(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function at(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o-1}function pt(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function Mt(e,t){for(var n=e.length;n--&&wt(t,e[n],0)>-1;);return n}function Nt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var At=Et({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Lt=Et({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ft(e){return"\\"+We[e]}function Dt(e){return Ae.test(e)}function Ht(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Ut(e,t){return function(n){return e(t(n))}}function Wt(e,t){for(var n=-1,r=e.length,o=0,i=[];++n",""":'"',"'":"'"});var $t=function e(t){var n,r=(t=null==t?qe:$t.defaults(qe.Object(),t,$t.pick(qe,Fe))).Array,o=t.Date,pe=t.Error,de=t.Function,he=t.Math,ve=t.Object,ge=t.RegExp,me=t.String,ye=t.TypeError,be=r.prototype,_e=de.prototype,we=ve.prototype,xe=t["__core-js_shared__"],Se=_e.toString,ke=we.hasOwnProperty,Oe=0,Ee=(n=/[^.]+$/.exec(xe&&xe.keys&&xe.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Te=we.toString,Ce=Se.call(ve),Pe=qe._,Ie=ge("^"+Se.call(ke).replace(K,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),je=Ye?t.Buffer:void 0,Me=t.Symbol,Ae=t.Uint8Array,We=je?je.allocUnsafe:void 0,Ge=Ut(ve.getPrototypeOf,ve),Ke=ve.create,$e=we.propertyIsEnumerable,Qe=be.splice,Xe=Me?Me.isConcatSpreadable:void 0,Je=Me?Me.iterator:void 0,yt=Me?Me.toStringTag:void 0,Et=function(){try{var e=ei(ve,"defineProperty");return e({},"",{}),e}catch(e){}}(),Qt=t.clearTimeout!==qe.clearTimeout&&t.clearTimeout,Yt=o&&o.now!==qe.Date.now&&o.now,Xt=t.setTimeout!==qe.setTimeout&&t.setTimeout,Jt=he.ceil,Zt=he.floor,en=ve.getOwnPropertySymbols,tn=je?je.isBuffer:void 0,nn=t.isFinite,rn=be.join,on=Ut(ve.keys,ve),an=he.max,ln=he.min,cn=o.now,un=t.parseInt,sn=he.random,fn=be.reverse,pn=ei(t,"DataView"),dn=ei(t,"Map"),hn=ei(t,"Promise"),vn=ei(t,"Set"),gn=ei(t,"WeakMap"),mn=ei(ve,"create"),yn=gn&&new gn,bn={},_n=Ti(pn),wn=Ti(dn),xn=Ti(hn),Sn=Ti(vn),kn=Ti(gn),On=Me?Me.prototype:void 0,En=On?On.valueOf:void 0,Tn=On?On.toString:void 0;function Cn(e){if(Va(e)&&!Ra(e)&&!(e instanceof zn)){if(e instanceof jn)return e;if(ke.call(e,"__wrapped__"))return Ci(e)}return new jn(e)}var Pn=function(){function e(){}return function(t){if(!Ba(t))return{};if(Ke)return Ke(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function In(){}function jn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function zn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Rn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Yn(e,t,n,r,o,i){var a,l=1&t,u=2&t,p=4&t;if(n&&(a=o?n(e,r,o,i):n(e)),void 0!==a)return a;if(!Ba(e))return e;var x=Ra(e);if(x){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&ke.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!l)return yo(e,a)}else{var R=ri(e),M=R==d||R==h;if(La(e))return fo(e,l);if(R==m||R==c||M&&!o){if(a=u||M?{}:ii(e),!l)return u?function(e,t){return bo(e,ni(e),t)}(e,function(e,t){return e&&bo(t,wl(t),e)}(a,e)):function(e,t){return bo(e,ti(e),t)}(e,Kn(a,e))}else{if(!Ue[R])return o?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case S:return po(e);case s:case f:return new r(+e);case k:return function(e,t){var n=t?po(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case O:case E:case T:case C:case P:case I:case"[object Uint8ClampedArray]":case j:case z:return ho(e,n);case v:return new r;case g:case _:return new r(e);case y:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case b:return new r;case w:return o=e,En?ve(En.call(o)):{}}var o}(e,R,l)}}i||(i=new Ln);var N=i.get(e);if(N)return N;i.set(e,a),Qa(e)?e.forEach((function(r){a.add(Yn(r,t,n,r,e,i))})):Ga(e)&&e.forEach((function(r,o){a.set(o,Yn(r,t,n,o,e,i))}));var A=x?void 0:(p?u?qo:Ko:u?wl:_l)(e);return lt(A||e,(function(r,o){A&&(r=e[o=r]),Bn(a,o,Yn(r,t,n,o,e,i))})),a}function Xn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var o=n[r],i=t[o],a=e[o];if(void 0===a&&!(o in e)||!i(a))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new ye(i);return _i((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,r){var o=-1,i=ft,a=!0,l=e.length,c=[],u=t.length;if(!l)return c;n&&(t=dt(t,It(n))),r?(i=pt,a=!1):t.length>=200&&(i=zt,a=!1,t=new An(t));e:for(;++o-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Vn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Nn.prototype.clear=function(){this.size=0,this.__data__={hash:new Rn,map:new(dn||Mn),string:new Rn}},Nn.prototype.delete=function(e){var t=Jo(this,e).delete(e);return this.size-=t?1:0,t},Nn.prototype.get=function(e){return Jo(this,e).get(e)},Nn.prototype.has=function(e){return Jo(this,e).has(e)},Nn.prototype.set=function(e,t){var n=Jo(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},An.prototype.add=An.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},An.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Mn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Nn(r)}return n.set(e,t),this.size=n.size,this};var er=xo(cr),tr=xo(ur,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,o){return n=!!t(e,r,o)})),n}function rr(e,t,n){for(var r=-1,o=e.length;++r0&&n(l)?t>1?ir(l,t-1,n,r,o):ht(o,l):r||(o[o.length]=l)}return o}var ar=So(),lr=So(!0);function cr(e,t){return e&&ar(e,t,_l)}function ur(e,t){return e&&lr(e,t,_l)}function sr(e,t){return st(t,(function(t){return Ha(e[t])}))}function fr(e,t){for(var n=0,r=(t=lo(t,e)).length;null!=e&&nt}function vr(e,t){return null!=e&&ke.call(e,t)}function gr(e,t){return null!=e&&t in ve(e)}function mr(e,t,n){for(var o=n?pt:ft,i=e[0].length,a=e.length,l=a,c=r(a),u=1/0,s=[];l--;){var f=e[l];l&&t&&(f=dt(f,It(t))),u=ln(f.length,u),c[l]=!n&&(t||i>=120&&f.length>=120)?new An(l&&f):void 0}f=e[0];var p=-1,d=c[0];e:for(;++p=l)return c;var u=n[r];return c*("desc"==u?-1:1)}}return e.index-t.index}(e,t,n)}))}function Rr(e,t,n){for(var r=-1,o=t.length,i={};++r-1;)l!==e&&Qe.call(l,c,1),Qe.call(e,c,1);return e}function Nr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;li(o)?Qe.call(e,o,1):Zr(e,o)}}return e}function Ar(e,t){return e+Zt(sn()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Zt(t/2))&&(e+=e)}while(t);return n}function Fr(e,t){return wi(vi(e,t,Kl),e+"")}function Dr(e){return Dn(Pl(e))}function Hr(e,t){var n=Pl(e);return ki(n,Qn(t,0,n.length))}function Ur(e,t,n,r){if(!Ba(e))return e;for(var o=-1,i=(t=lo(t,e)).length,a=i-1,l=e;null!=l&&++oi?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=r(i);++o>>1,a=e[i];null!==a&&!Xa(a)&&(n?a<=t:a=200){var u=t?null:Fo(e);if(u)return Bt(u);a=!1,o=zt,c=new An}else c=t?[]:l;e:for(;++r=r?e:Gr(e,t,n)}var so=Qt||function(e){return qe.clearTimeout(e)};function fo(e,t){if(t)return e.slice();var n=e.length,r=We?We(n):new e.constructor(n);return e.copy(r),r}function po(e){var t=new e.constructor(e.byteLength);return new Ae(t).set(new Ae(e)),t}function ho(e,t){var n=t?po(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function vo(e,t){if(e!==t){var n=void 0!==e,r=null===e,o=e==e,i=Xa(e),a=void 0!==t,l=null===t,c=t==t,u=Xa(t);if(!l&&!u&&!i&&e>t||i&&a&&c&&!l&&!u||r&&a&&c||!n&&c||!o)return 1;if(!r&&!i&&!u&&e1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&ci(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=ve(t);++r-1?o[i?t[a]:a]:void 0}}function Co(e){return Go((function(t){var n=t.length,r=n,o=jn.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new ye(i);if(o&&!l&&"wrapper"==Qo(a))var l=new jn([],!0)}for(r=l?r:n;++r1&&b.reverse(),f&&ul))return!1;var u=i.get(e),s=i.get(t);if(u&&s)return u==t&&s==e;var f=-1,p=!0,d=2&n?new An:void 0;for(i.set(e,t),i.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return lt(l,(function(n){var r="_."+n[0];t&n[1]&&!ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(J);return t?t[1].split(Z):[]}(r),n)))}function Si(e){var t=0,n=0;return function(){var r=cn(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function ki(e,t){var n=-1,r=e.length,o=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,$i(e,n)}));function ta(e){var t=Cn(e);return t.__chain__=!0,t}function na(e,t){return t(e)}var ra=Go((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,o=function(t){return $n(t,e)};return!(t>1||this.__actions__.length)&&r instanceof zn&&li(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:na,args:[o],thisArg:void 0}),new jn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(o)}));var oa=_o((function(e,t,n){ke.call(e,n)?++e[n]:qn(e,n,1)}));var ia=To(zi),aa=To(Ri);function la(e,t){return(Ra(e)?lt:er)(e,Xo(t,3))}function ca(e,t){return(Ra(e)?ct:tr)(e,Xo(t,3))}var ua=_o((function(e,t,n){ke.call(e,n)?e[n].push(t):qn(e,n,[t])}));var sa=Fr((function(e,t,n){var o=-1,i="function"==typeof t,a=Na(e)?r(e.length):[];return er(e,(function(e){a[++o]=i?it(t,e,n):yr(e,t,n)})),a})),fa=_o((function(e,t,n){qn(e,n,t)}));function pa(e,t){return(Ra(e)?dt:Tr)(e,Xo(t,3))}var da=_o((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ha=Fr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ci(e,t[0],t[1])?t=[]:n>2&&ci(t[0],t[1],t[2])&&(t=[t[0]]),zr(e,ir(t,1),[])})),va=Yt||function(){return qe.Date.now()};function ga(e,t,n){return t=n?void 0:t,Ho(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function ma(e,t){var n;if("function"!=typeof t)throw new ye(i);return e=rl(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var ya=Fr((function(e,t,n){var r=1;if(n.length){var o=Wt(n,Yo(ya));r|=32}return Ho(e,r,t,n,o)})),ba=Fr((function(e,t,n){var r=3;if(n.length){var o=Wt(n,Yo(ba));r|=32}return Ho(t,r,e,n,o)}));function _a(e,t,n){var r,o,a,l,c,u,s=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new ye(i);function h(t){var n=r,i=o;return r=o=void 0,s=t,l=e.apply(i,n)}function v(e){return s=e,c=_i(m,t),f?h(e):l}function g(e){var n=e-u;return void 0===u||n>=t||n<0||p&&e-s>=a}function m(){var e=va();if(g(e))return y(e);c=_i(m,function(e){var n=t-(e-u);return p?ln(n,a-(e-s)):n}(e))}function y(e){return c=void 0,d&&r?h(e):(r=o=void 0,l)}function b(){var e=va(),n=g(e);if(r=arguments,o=this,u=e,n){if(void 0===c)return v(u);if(p)return so(c),c=_i(m,t),h(u)}return void 0===c&&(c=_i(m,t)),l}return t=il(t)||0,Ba(n)&&(f=!!n.leading,a=(p="maxWait"in n)?an(il(n.maxWait)||0,t):a,d="trailing"in n?!!n.trailing:d),b.cancel=function(){void 0!==c&&so(c),s=0,r=u=o=c=void 0},b.flush=function(){return void 0===c?l:y(va())},b}var wa=Fr((function(e,t){return Jn(e,1,t)})),xa=Fr((function(e,t,n){return Jn(e,il(t)||0,n)}));function Sa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ye(i);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(Sa.Cache||Nn),n}function ka(e){if("function"!=typeof e)throw new ye(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Sa.Cache=Nn;var Oa=co((function(e,t){var n=(t=1==t.length&&Ra(t[0])?dt(t[0],It(Xo())):dt(ir(t,1),It(Xo()))).length;return Fr((function(r){for(var o=-1,i=ln(r.length,n);++o=t})),za=br(function(){return arguments}())?br:function(e){return Va(e)&&ke.call(e,"callee")&&!$e.call(e,"callee")},Ra=r.isArray,Ma=Ze?It(Ze):function(e){return Va(e)&&dr(e)==S};function Na(e){return null!=e&&Wa(e.length)&&!Ha(e)}function Aa(e){return Va(e)&&Na(e)}var La=tn||ic,Fa=et?It(et):function(e){return Va(e)&&dr(e)==f};function Da(e){if(!Va(e))return!1;var t=dr(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!qa(e)}function Ha(e){if(!Ba(e))return!1;var t=dr(e);return t==d||t==h||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ua(e){return"number"==typeof e&&e==rl(e)}function Wa(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Ba(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Va(e){return null!=e&&"object"==typeof e}var Ga=tt?It(tt):function(e){return Va(e)&&ri(e)==v};function Ka(e){return"number"==typeof e||Va(e)&&dr(e)==g}function qa(e){if(!Va(e)||dr(e)!=m)return!1;var t=Ge(e);if(null===t)return!0;var n=ke.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Se.call(n)==Ce}var $a=nt?It(nt):function(e){return Va(e)&&dr(e)==y};var Qa=rt?It(rt):function(e){return Va(e)&&ri(e)==b};function Ya(e){return"string"==typeof e||!Ra(e)&&Va(e)&&dr(e)==_}function Xa(e){return"symbol"==typeof e||Va(e)&&dr(e)==w}var Ja=ot?It(ot):function(e){return Va(e)&&Wa(e.length)&&!!He[dr(e)]};var Za=No(Er),el=No((function(e,t){return e<=t}));function tl(e){if(!e)return[];if(Na(e))return Ya(e)?Kt(e):yo(e);if(Je&&e[Je])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Je]());var t=ri(e);return(t==v?Ht:t==b?Bt:Pl)(e)}function nl(e){return e?(e=il(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function rl(e){var t=nl(e),n=t%1;return t==t?n?t-n:t:0}function ol(e){return e?Qn(rl(e),0,4294967295):0}function il(e){if("number"==typeof e)return e;if(Xa(e))return NaN;if(Ba(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ba(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace($,"");var n=ie.test(e);return n||le.test(e)?Ve(e.slice(2),n?2:8):oe.test(e)?NaN:+e}function al(e){return bo(e,wl(e))}function ll(e){return null==e?"":Xr(e)}var cl=wo((function(e,t){if(pi(t)||Na(t))bo(t,_l(t),e);else for(var n in t)ke.call(t,n)&&Bn(e,n,t[n])})),ul=wo((function(e,t){bo(t,wl(t),e)})),sl=wo((function(e,t,n,r){bo(t,wl(t),e,r)})),fl=wo((function(e,t,n,r){bo(t,_l(t),e,r)})),pl=Go($n);var dl=Fr((function(e,t){e=ve(e);var n=-1,r=t.length,o=r>2?t[2]:void 0;for(o&&ci(t[0],t[1],o)&&(r=1);++n1),t})),bo(e,qo(e),n),r&&(n=Yn(n,7,Bo));for(var o=t.length;o--;)Zr(n,t[o]);return n}));var Ol=Go((function(e,t){return null==e?{}:function(e,t){return Rr(e,t,(function(t,n){return gl(e,n)}))}(e,t)}));function El(e,t){if(null==e)return{};var n=dt(qo(e),(function(e){return[e]}));return t=Xo(t),Rr(e,n,(function(e,n){return t(e,n[0])}))}var Tl=Do(_l),Cl=Do(wl);function Pl(e){return null==e?[]:jt(e,_l(e))}var Il=Oo((function(e,t,n){return t=t.toLowerCase(),e+(n?jl(t):t)}));function jl(e){return Dl(ll(e).toLowerCase())}function zl(e){return(e=ll(e))&&e.replace(ue,At).replace(Re,"")}var Rl=Oo((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ml=Oo((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Nl=ko("toLowerCase");var Al=Oo((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Ll=Oo((function(e,t,n){return e+(n?" ":"")+Dl(t)}));var Fl=Oo((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Dl=ko("toUpperCase");function Hl(e,t,n){return e=ll(e),void 0===(t=n?void 0:t)?function(e){return Le.test(e)}(e)?function(e){return e.match(Ne)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var Ul=Fr((function(e,t){try{return it(e,void 0,t)}catch(e){return Da(e)?e:new pe(e)}})),Wl=Go((function(e,t){return lt(t,(function(t){t=Ei(t),qn(e,t,ya(e[t],e))})),e}));function Bl(e){return function(){return e}}var Vl=Co(),Gl=Co(!0);function Kl(e){return e}function ql(e){return Sr("function"==typeof e?e:Yn(e,1))}var $l=Fr((function(e,t){return function(n){return yr(n,e,t)}})),Ql=Fr((function(e,t){return function(n){return yr(e,n,t)}}));function Yl(e,t,n){var r=_l(t),o=sr(t,r);null!=n||Ba(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=sr(t,_l(t)));var i=!(Ba(n)&&"chain"in n&&!n.chain),a=Ha(e);return lt(o,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__),o=n.__actions__=yo(this.__actions__);return o.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,ht([this.value()],arguments))})})),e}function Xl(){}var Jl=zo(dt),Zl=zo(ut),ec=zo(mt);function tc(e){return ui(e)?Ot(Ei(e)):function(e){return function(t){return fr(t,e)}}(e)}var nc=Mo(),rc=Mo(!0);function oc(){return[]}function ic(){return!1}var ac=jo((function(e,t){return e+t}),0),lc=Lo("ceil"),cc=jo((function(e,t){return e/t}),1),uc=Lo("floor");var sc,fc=jo((function(e,t){return e*t}),1),pc=Lo("round"),dc=jo((function(e,t){return e-t}),0);return Cn.after=function(e,t){if("function"!=typeof t)throw new ye(i);return e=rl(e),function(){if(--e<1)return t.apply(this,arguments)}},Cn.ary=ga,Cn.assign=cl,Cn.assignIn=ul,Cn.assignInWith=sl,Cn.assignWith=fl,Cn.at=pl,Cn.before=ma,Cn.bind=ya,Cn.bindAll=Wl,Cn.bindKey=ba,Cn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ra(e)?e:[e]},Cn.chain=ta,Cn.chunk=function(e,t,n){t=(n?ci(e,t,n):void 0===t)?1:an(rl(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var i=0,a=0,l=r(Jt(o/t));io?0:o+n),(r=void 0===r||r>o?o:rl(r))<0&&(r+=o),r=n>r?0:ol(r);n>>0)?(e=ll(e))&&("string"==typeof t||null!=t&&!$a(t))&&!(t=Xr(t))&&Dt(e)?uo(Kt(e),0,n):e.split(t,n):[]},Cn.spread=function(e,t){if("function"!=typeof e)throw new ye(i);return t=null==t?0:an(rl(t),0),Fr((function(n){var r=n[t],o=uo(n,0,t);return r&&ht(o,r),it(e,this,o)}))},Cn.tail=function(e){var t=null==e?0:e.length;return t?Gr(e,1,t):[]},Cn.take=function(e,t,n){return e&&e.length?Gr(e,0,(t=n||void 0===t?1:rl(t))<0?0:t):[]},Cn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Gr(e,(t=r-(t=n||void 0===t?1:rl(t)))<0?0:t,r):[]},Cn.takeRightWhile=function(e,t){return e&&e.length?to(e,Xo(t,3),!1,!0):[]},Cn.takeWhile=function(e,t){return e&&e.length?to(e,Xo(t,3)):[]},Cn.tap=function(e,t){return t(e),e},Cn.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new ye(i);return Ba(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),_a(e,t,{leading:r,maxWait:t,trailing:o})},Cn.thru=na,Cn.toArray=tl,Cn.toPairs=Tl,Cn.toPairsIn=Cl,Cn.toPath=function(e){return Ra(e)?dt(e,Ei):Xa(e)?[e]:yo(Oi(ll(e)))},Cn.toPlainObject=al,Cn.transform=function(e,t,n){var r=Ra(e),o=r||La(e)||Ja(e);if(t=Xo(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:Ba(e)&&Ha(i)?Pn(Ge(e)):{}}return(o?lt:cr)(e,(function(e,r,o){return t(n,e,r,o)})),n},Cn.unary=function(e){return ga(e,1)},Cn.union=Vi,Cn.unionBy=Gi,Cn.unionWith=Ki,Cn.uniq=function(e){return e&&e.length?Jr(e):[]},Cn.uniqBy=function(e,t){return e&&e.length?Jr(e,Xo(t,2)):[]},Cn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},Cn.unset=function(e,t){return null==e||Zr(e,t)},Cn.unzip=qi,Cn.unzipWith=$i,Cn.update=function(e,t,n){return null==e?e:eo(e,t,ao(n))},Cn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:eo(e,t,ao(n),r)},Cn.values=Pl,Cn.valuesIn=function(e){return null==e?[]:jt(e,wl(e))},Cn.without=Qi,Cn.words=Hl,Cn.wrap=function(e,t){return Ea(ao(t),e)},Cn.xor=Yi,Cn.xorBy=Xi,Cn.xorWith=Ji,Cn.zip=Zi,Cn.zipObject=function(e,t){return oo(e||[],t||[],Bn)},Cn.zipObjectDeep=function(e,t){return oo(e||[],t||[],Ur)},Cn.zipWith=ea,Cn.entries=Tl,Cn.entriesIn=Cl,Cn.extend=ul,Cn.extendWith=sl,Yl(Cn,Cn),Cn.add=ac,Cn.attempt=Ul,Cn.camelCase=Il,Cn.capitalize=jl,Cn.ceil=lc,Cn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=il(n))==n?n:0),void 0!==t&&(t=(t=il(t))==t?t:0),Qn(il(e),t,n)},Cn.clone=function(e){return Yn(e,4)},Cn.cloneDeep=function(e){return Yn(e,5)},Cn.cloneDeepWith=function(e,t){return Yn(e,5,t="function"==typeof t?t:void 0)},Cn.cloneWith=function(e,t){return Yn(e,4,t="function"==typeof t?t:void 0)},Cn.conformsTo=function(e,t){return null==t||Xn(e,t,_l(t))},Cn.deburr=zl,Cn.defaultTo=function(e,t){return null==e||e!=e?t:e},Cn.divide=cc,Cn.endsWith=function(e,t,n){e=ll(e),t=Xr(t);var r=e.length,o=n=void 0===n?r:Qn(rl(n),0,r);return(n-=t.length)>=0&&e.slice(n,o)==t},Cn.eq=Pa,Cn.escape=function(e){return(e=ll(e))&&D.test(e)?e.replace(L,Lt):e},Cn.escapeRegExp=function(e){return(e=ll(e))&&q.test(e)?e.replace(K,"\\$&"):e},Cn.every=function(e,t,n){var r=Ra(e)?ut:nr;return n&&ci(e,t,n)&&(t=void 0),r(e,Xo(t,3))},Cn.find=ia,Cn.findIndex=zi,Cn.findKey=function(e,t){return bt(e,Xo(t,3),cr)},Cn.findLast=aa,Cn.findLastIndex=Ri,Cn.findLastKey=function(e,t){return bt(e,Xo(t,3),ur)},Cn.floor=uc,Cn.forEach=la,Cn.forEachRight=ca,Cn.forIn=function(e,t){return null==e?e:ar(e,Xo(t,3),wl)},Cn.forInRight=function(e,t){return null==e?e:lr(e,Xo(t,3),wl)},Cn.forOwn=function(e,t){return e&&cr(e,Xo(t,3))},Cn.forOwnRight=function(e,t){return e&&ur(e,Xo(t,3))},Cn.get=vl,Cn.gt=Ia,Cn.gte=ja,Cn.has=function(e,t){return null!=e&&oi(e,t,vr)},Cn.hasIn=gl,Cn.head=Ni,Cn.identity=Kl,Cn.includes=function(e,t,n,r){e=Na(e)?e:Pl(e),n=n&&!r?rl(n):0;var o=e.length;return n<0&&(n=an(o+n,0)),Ya(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&wt(e,t,n)>-1},Cn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:rl(n);return o<0&&(o=an(r+o,0)),wt(e,t,o)},Cn.inRange=function(e,t,n){return t=nl(t),void 0===n?(n=t,t=0):n=nl(n),function(e,t,n){return e>=ln(t,n)&&e=-9007199254740991&&e<=9007199254740991},Cn.isSet=Qa,Cn.isString=Ya,Cn.isSymbol=Xa,Cn.isTypedArray=Ja,Cn.isUndefined=function(e){return void 0===e},Cn.isWeakMap=function(e){return Va(e)&&ri(e)==x},Cn.isWeakSet=function(e){return Va(e)&&"[object WeakSet]"==dr(e)},Cn.join=function(e,t){return null==e?"":rn.call(e,t)},Cn.kebabCase=Rl,Cn.last=Di,Cn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return void 0!==n&&(o=(o=rl(n))<0?an(r+o,0):ln(o,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,o):_t(e,St,o,!0)},Cn.lowerCase=Ml,Cn.lowerFirst=Nl,Cn.lt=Za,Cn.lte=el,Cn.max=function(e){return e&&e.length?rr(e,Kl,hr):void 0},Cn.maxBy=function(e,t){return e&&e.length?rr(e,Xo(t,2),hr):void 0},Cn.mean=function(e){return kt(e,Kl)},Cn.meanBy=function(e,t){return kt(e,Xo(t,2))},Cn.min=function(e){return e&&e.length?rr(e,Kl,Er):void 0},Cn.minBy=function(e,t){return e&&e.length?rr(e,Xo(t,2),Er):void 0},Cn.stubArray=oc,Cn.stubFalse=ic,Cn.stubObject=function(){return{}},Cn.stubString=function(){return""},Cn.stubTrue=function(){return!0},Cn.multiply=fc,Cn.nth=function(e,t){return e&&e.length?jr(e,rl(t)):void 0},Cn.noConflict=function(){return qe._===this&&(qe._=Pe),this},Cn.noop=Xl,Cn.now=va,Cn.pad=function(e,t,n){e=ll(e);var r=(t=rl(t))?Gt(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return Ro(Zt(o),n)+e+Ro(Jt(o),n)},Cn.padEnd=function(e,t,n){e=ll(e);var r=(t=rl(t))?Gt(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=sn();return ln(e+o*(t-e+Be("1e-"+((o+"").length-1))),t)}return Ar(e,t)},Cn.reduce=function(e,t,n){var r=Ra(e)?vt:Tt,o=arguments.length<3;return r(e,Xo(t,4),n,o,er)},Cn.reduceRight=function(e,t,n){var r=Ra(e)?gt:Tt,o=arguments.length<3;return r(e,Xo(t,4),n,o,tr)},Cn.repeat=function(e,t,n){return t=(n?ci(e,t,n):void 0===t)?1:rl(t),Lr(ll(e),t)},Cn.replace=function(){var e=arguments,t=ll(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Cn.result=function(e,t,n){var r=-1,o=(t=lo(t,e)).length;for(o||(o=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=ln(e,4294967295);e-=4294967295;for(var o=Pt(r,t=Xo(t));++n=i)return e;var l=n-Gt(r);if(l<1)return r;var c=a?uo(a,0,l).join(""):e.slice(0,l);if(void 0===o)return c+r;if(a&&(l+=c.length-l),$a(o)){if(e.slice(l).search(o)){var u,s=c;for(o.global||(o=ge(o.source,ll(re.exec(o))+"g")),o.lastIndex=0;u=o.exec(s);)var f=u.index;c=c.slice(0,void 0===f?l:f)}}else if(e.indexOf(Xr(o),l)!=l){var p=c.lastIndexOf(o);p>-1&&(c=c.slice(0,p))}return c+r},Cn.unescape=function(e){return(e=ll(e))&&F.test(e)?e.replace(A,qt):e},Cn.uniqueId=function(e){var t=++Oe;return ll(e)+t},Cn.upperCase=Fl,Cn.upperFirst=Dl,Cn.each=la,Cn.eachRight=ca,Cn.first=Ni,Yl(Cn,(sc={},cr(Cn,(function(e,t){ke.call(Cn.prototype,t)||(sc[t]=e)})),sc),{chain:!1}),Cn.VERSION="4.17.19",lt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Cn[e].placeholder=Cn})),lt(["drop","take"],(function(e,t){zn.prototype[e]=function(n){n=void 0===n?1:an(rl(n),0);var r=this.__filtered__&&!t?new zn(this):this.clone();return r.__filtered__?r.__takeCount__=ln(n,r.__takeCount__):r.__views__.push({size:ln(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},zn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),lt(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;zn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Xo(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),lt(["head","last"],(function(e,t){var n="take"+(t?"Right":"");zn.prototype[e]=function(){return this[n](1).value()[0]}})),lt(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");zn.prototype[e]=function(){return this.__filtered__?new zn(this):this[n](1)}})),zn.prototype.compact=function(){return this.filter(Kl)},zn.prototype.find=function(e){return this.filter(e).head()},zn.prototype.findLast=function(e){return this.reverse().find(e)},zn.prototype.invokeMap=Fr((function(e,t){return"function"==typeof e?new zn(this):this.map((function(n){return yr(n,e,t)}))})),zn.prototype.reject=function(e){return this.filter(ka(Xo(e)))},zn.prototype.slice=function(e,t){e=rl(e);var n=this;return n.__filtered__&&(e>0||t<0)?new zn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=rl(t))<0?n.dropRight(-t):n.take(t-e)),n)},zn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},zn.prototype.toArray=function(){return this.take(4294967295)},cr(zn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=Cn[r?"take"+("last"==t?"Right":""):t],i=r||/^find/.test(t);o&&(Cn.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,l=t instanceof zn,c=a[0],u=l||Ra(t),s=function(e){var t=o.apply(Cn,ht([e],a));return r&&f?t[0]:t};u&&n&&"function"==typeof c&&1!=c.length&&(l=u=!1);var f=this.__chain__,p=!!this.__actions__.length,d=i&&!f,h=l&&!p;if(!i&&u){t=h?t:new zn(this);var v=e.apply(t,a);return v.__actions__.push({func:na,args:[s],thisArg:void 0}),new jn(v,f)}return d&&h?e.apply(this,a):(v=this.thru(s),d?r?v.value()[0]:v.value():v)})})),lt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=be[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Cn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(Ra(o)?o:[],e)}return this[n]((function(n){return t.apply(Ra(n)?n:[],e)}))}})),cr(zn.prototype,(function(e,t){var n=Cn[t];if(n){var r=n.name+"";ke.call(bn,r)||(bn[r]=[]),bn[r].push({name:t,func:n})}})),bn[Po(void 0,2).name]=[{name:"wrapper",func:void 0}],zn.prototype.clone=function(){var e=new zn(this.__wrapped__);return e.__actions__=yo(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=yo(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=yo(this.__views__),e},zn.prototype.reverse=function(){if(this.__filtered__){var e=new zn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},zn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ra(e),r=t<0,o=n?e.length:0,i=function(e,t,n){var r=-1,o=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Cn.prototype.plant=function(e){for(var t,n=this;n instanceof In;){var r=Ci(n);r.__index__=0,r.__values__=void 0,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},Cn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof zn){var t=e;return this.__actions__.length&&(t=new zn(this)),(t=t.reverse()).__actions__.push({func:na,args:[Bi],thisArg:void 0}),new jn(t,this.__chain__)}return this.thru(Bi)},Cn.prototype.toJSON=Cn.prototype.valueOf=Cn.prototype.value=function(){return no(this.__wrapped__,this.__actions__)},Cn.prototype.first=Cn.prototype.head,Je&&(Cn.prototype[Je]=function(){return this}),Cn}();qe._=$t,void 0===(o=function(){return $t}.call(t,n,t,r))||(r.exports=o)}).call(this)}).call(this,n(108),n(243)(e))},function(e,t,n){var r=n(26),o=n(335);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(26),o=n(376);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(173),o=n(132);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(31);e.exports=function(e,t){return!!e&&r((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},function(e,t,n){"use strict";var r=n(27),o=n(54),i=n(53),a=n(113),l=n(138),c=n(139),u=Math.max,s=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;n(140)("replace",2,(function(e,t,n,h){return[function(r,o){var i=e(this),a=null==r?void 0:r[t];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(e,t){var o=h(n,e,this,t);if(o.done)return o.value;var f=r(e),p=String(this),d="function"==typeof t;d||(t=String(t));var g=f.global;if(g){var m=f.unicode;f.lastIndex=0}for(var y=[];;){var b=c(f,p);if(null===b)break;if(y.push(b),!g)break;""===String(b[0])&&(f.lastIndex=l(p,i(f.lastIndex),m))}for(var _,w="",x=0,S=0;S=x&&(w+=p.slice(x,O)+I,x=O+k.length)}return w+p.slice(x)}];function v(e,t,r,i,a,l){var c=r+e.length,u=i.length,s=d;return void 0!==a&&(a=o(a),s=p),n.call(l,s,(function(n,o){var l;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,r);case"'":return t.slice(c);case"<":l=a[o.slice(1,-1)];break;default:var s=+o;if(0===s)return n;if(s>u){var p=f(s/10);return 0===p?n:p<=u?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}l=i[s-1]}return void 0===l?"":l}))}}))},function(e,t,n){var r=n(63),o=n(121);e.exports=n(57)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(202),o=n(148);e.exports=function(e){return r(o(e))}},function(e,t,n){(function(t){function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}}).call(this,n(108))},function(e,t,n){var r=n(10);r(r.S+r.F*!n(30),"Object",{defineProperties:n(172)})},function(e,t){var n=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(81);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(10),o=n(249),i=n(60),a=n(94),l=n(174);r(r.S,"Object",{getOwnPropertyDescriptors:function(e){for(var t,n,r=i(e),c=a.f,u=o(r),s={},f=0;u.length>f;)void 0!==(n=c(r,t=u[f++]))&&l(s,t,n);return s}})},function(e,t,n){var r=n(27),o=n(172),i=n(132),a=n(131)("IE_PROTO"),l=function(){},c=function(){var e,t=n(171)("iframe"),r=i.length;for(t.style.display="none",n(251).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("
+