From 6cf760bc3a964402707fb0be1c17be368380d422 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 13 May 2024 17:14:41 -0400 Subject: [PATCH 01/73] fix download/upload artifacts --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2c64760..9340ad8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -163,7 +163,7 @@ jobs: forgeboxAPIKey: ${{ secrets.FORGEBOX_TOKEN }} - name: Download build artifacts - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: testbox path: .tmp From 5ab990fe3861c8d2189bcae61b8973ab25a93330 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 13 May 2024 17:17:50 -0400 Subject: [PATCH 02/73] bump --- box.json | 2 +- changelog.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/box.json b/box.json index ca49c81..ac391ee 100644 --- a/box.json +++ b/box.json @@ -1,6 +1,6 @@ { "name":"TestBox", - "version":"5.4.0", + "version":"5.5.0", "location":"https://downloads.ortussolutions.com/ortussolutions/testbox/@build.version@/testbox-@build.version@.zip", "author":"Ortus Solutions ", "slug":"testbox", diff --git a/changelog.md b/changelog.md index 41a96ee..35a7f22 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.4.0] - 2024-05-13 + ### Improvement - [TESTBOX-385](https://ortussolutions.atlassian.net/browse/TESTBOX-385) Remove all unsafe references to evaluate From 7c5fd3f23bcba435ed0d75df93445e7d1d29d820 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Wed, 4 Sep 2024 15:53:51 +0200 Subject: [PATCH 03/73] TESTBOX-390 #resolve $getProperty behaviour change between 5.0 and 5.4 TESTBOX-391 #resolve MockBox converted to script --- system/MockBox.cfc | 1026 +++++++++++------------------- system/TestBox.cfc | 2 +- system/reports/assets/simple.cfm | 478 +++++++------- 3 files changed, 611 insertions(+), 895 deletions(-) diff --git a/system/MockBox.cfc b/system/MockBox.cfc index 0fdb371..5ee5339 100644 --- a/system/MockBox.cfc +++ b/system/MockBox.cfc @@ -1,151 +1,76 @@ - - - - - - - - +/** + * Copyright Since 2005 TestBox Framework by Luis Majano and Ortus Solutions, Corp + * www.ortussolutions.com + * --- + * MockBox is in charge of all kinds of software mocking abilities. + */ +component accessors=true { + + property name="mockGenerator"; + property name="generationPath"; + + /** + * Create an instance of MockBox + * + * @generationPath The mocking generation relative path. If not defined, then the factory will use its internal tmp path. Just make sure that this folder is accessible from an include. + */ + function init( generationPath = "" ){ var tempDir = "/testbox/system/stubs"; - variables.instance = structNew(); - // Setup the generation Path if ( len( trim( arguments.generationPath ) ) neq 0 ) { // Default to coldbox tmp path - variables.instance.generationPath = arguments.generationPath; + variables.generationPath = arguments.generationPath; } else { - variables.instance.generationPath = tempDir; + variables.generationPath = tempDir; } // Cleanup of paths. - if ( right( variables.instance.generationPath, 1 ) neq "/" ) { - variables.instance.generationPath = variables.instance.generationPath & "/"; + if ( right( variables.generationPath, 1 ) neq "/" ) { + variables.generationPath = variables.generationPath & "/"; } - variables.instance.mockGenerator = createObject( "component", "testbox.system.mockutils.MockGenerator" ).init( - this, - false - ); + variables.mockGenerator = new testbox.system.mockutils.MockGenerator( this, false ); return this; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + } + + /** + * -------------------------------------------------------------------------------------------- + * MOCK CREATION METHODS + * -------------------------------------------------------------------------------------------- + */ + + /** + * Create an empty mock object. By empty we mean we remove all methods so you can mock them. + * + * @className The class name of the object to mock. The mock factory will instantiate it for you + * @object The object to mock, already instantiated + * @callLogging Add method call logging for all mocked methods. Defaults to true + * + * @return The object being mocked + */ + function createEmptyMock( className, object, boolean callLogging = true ){ + arguments.clearMethods = true; + return createMock( argumentCollection = arguments ); + } + + /** + * Create a mock object or prepares an object to act as a mock for spying. + * + * @className The class name of the object to mock. The mock factory will instantiate it for you + * @object The object to mock, already instantiated + * @clearMethods If true, all methods in the target mock object will be removed. You can then mock only the methods that you want to mock. Defaults to false + * @callLogging Add method call logging for all mocked methods. Defaults to true + * + * @return The object being mocked + */ + function createMock( + className, + object, + clearMethods = false, + callLogging = true + ){ var obj = 0; // class to mock @@ -175,159 +100,114 @@ The Official ColdBox Mocking Factory // Return Mock return obj; - - - - - - - - - - + } + + /** + * Prepares an already instantiated object to act as a mock for spying and much more. + * + * @object The already instantiated object to prepare for mocking + * @callLogging Add method call logging for all mocked methods + * + * @return The object being prepared for mocking + */ + function prepareMock( required object, callLogging = true ){ if ( structKeyExists( arguments.object, "mockbox" ) ) { return arguments.object; } return createMock( object = arguments.object ); - - - - - - - - - + } + + /** + * Create an empty stub object that you can use for mocking. + * + * @callLogging Add method call logging for all mocked methods + * @extends Make the stub extend from certain class + * @implements Make the stub adhere to an interface + * + * @return The stub object + */ + function createStub( + callLogging = true, + extends = "", + implements = "" + ){ // No implements or inheritance if ( NOT len( trim( arguments.implements ) ) AND NOT len( trim( arguments.extends ) ) ) { return createMock( className = "testbox.system.mockutils.Stub", callLogging = arguments.callLogging ); } - // Generate the CFC + Create it + Remove it - return prepareMock( instance.mockGenerator.generateCFC( argumentCollection = arguments ) ); - - - - - - - - - - - - - + // Generate the class + Create it + Remove it + return prepareMock( variables.mockGenerator.generateCFC( argumentCollection = arguments ) ); + } + + /** + * -------------------------------------------------------------------------------------------- + * DECORATION INJECTED METHODS ON MOCK OBJECTS + * -------------------------------------------------------------------------------------------- + */ + + + /** + * Mock a property inside of an object in any scope. Injected as = $property() + * + * @propertyName The name of the property to mock + * @propertyScope The scope where the property lives in. By default we will use the variables scope. + * @mock The object or data to inject + * + * @return The object being mocked + */ + function $property( + required propertyName, + propertyScope = "variables", + required mock + ){ "#arguments.propertyScope#.#arguments.propertyName#" = arguments.mock; return this; - - - - - - - - - - var thisScope = variables; - if ( arguments.scope == "this" ) { - thisScope = this; - } else if ( !isNull( variables ) && variables.keyExists( arguments.scope ) ) { - thisScope = variables[ arguments.scope ]; + } + + + /** + * Gets an internal mocked object property + * + * @name The name of the property to retrieve. + * @scope The scope to which to retrieve the property from. Defaults to 'variables' scope. + * @defaultValue Default value to return if property does not exist + * + * @return The value of the property or the default value if the property does not exist + */ + function $getProperty( + required name, + scope = "variables", + defaultValue + ){ + var targetScope = evaluate( "#arguments.scope#" ); + + if ( structKeyExists( targetScope, arguments.name ) ) { + return targetScope[ arguments.name ]; } - if ( structKeyExists( thisScope, arguments.name ) ) { - return thisScope[ arguments.name ]; + if ( !isNull( arguments.defaultValue ) ) { + return arguments.defaultValue; } - if ( structKeyExists( arguments, "default" ) ) { + if ( !isNull( arguments.default ) ) { return arguments.default; } - - - - - - - - + + throw( + type = "MockBox.PropertyDoesNotExist", + message = "The property requested [#arguments.name#] does not exist in the [#arguments.scope#] scope" + ); + } + + + /** + * I return the number of times the specified mock object's methods have been called or a specific method has been called. If the mock method has not been defined the results is a -1 + * + * @methodName Name of the method to get the total made calls from. If not passed, then we count all methods in this mock object + * + * @return The number of times the specified mock object's method or all methods have been called + */ + numeric function $count( methodName = "" ){ var key = ""; var totalCount = 0; @@ -344,131 +224,76 @@ The Official ColdBox Mocking Factory totalCount = totalCount + this._mockMethodCallCounters[ key ]; } return totalCount; - - - - - - - - + } + + /** + * Assert how many calls have been made to the mock or a specific mock method: Injected as $verifyCallCount() and $times() + * + * @count The number of calls to assert + * @methodName Name of the method to verify the calls from, if not passed it asserts all mocked method calls + * + * @return True if the number of calls have been made to the mock or a specific mock method + */ + boolean function $times( required count, methodName = "" ){ return ( this.$count( argumentCollection = arguments ) eq arguments.count ); - - - - - - - + } + + + /** + * Assert that no interactions have been made to the mock or a specific mock method: Alias to $times(0). Injected as $never() + * + * @methodName Name of the method to verify the calls from + * + * @return True if no interactions have been made to the mock or a specific mock method + */ + boolean function $never( methodName = "" ){ if ( this.$count( arguments.methodName ) EQ 0 ) { return true; } return false; - - - - - - - - + } + + /** + * Assert that at least a certain number of calls have been made on the mock or a specific mock method. Injected as $atLeast() + * + * @minNumberOfInvocations The min number of calls to assert + * @methodName Name of the method to verify the calls from, if blank, from the entire mock + * + * @return True if at least a certain number of calls have been made on the mock or a specific mock method + */ + boolean function $atLeast( required minNumberOfInvocations, methodName = "" ){ return ( this.$count( argumentCollection = arguments ) GTE arguments.minNumberOfInvocations ); - - - - - - - + } + + + /** + * Assert that only 1 call has been made on the mock or a specific mock method. Injected as $once() + * + * @methodName Name of the method to verify the calls from, if blank, from the entire mock + * + * @return True if only 1 call has been made on the mock or a specific mock method + */ + boolean function $once( methodName = "" ){ return ( this.$count( argumentCollection = arguments ) EQ 1 ); - - - - - - - - + } + + /** + * Assert that at most a certain number of calls have been made on the mock or a specific mock method. Injected as $atMost() + * + * @maxNumberOfInvocations The max number of calls to assert + * @methodName Name of the method to verify the calls from, if blank, from the entire mock + * + * @return True if at most a certain number of calls have been made on the mock or a specific mock method + */ + boolean function $atMost( required maxNumberOfInvocations, methodName = "" ){ return ( this.$count( argumentCollection = arguments ) LTE arguments.maxNumberOfInvocations ); - - - - - - - - + } + + /** + * Use this method to mock more than 1 result as passed in arguments. Can only be called when chained to a $() or $().$args() call. Results will be recycled on a multiple of their lengths according to how many times they are called, simulating a state-machine algorithm. Injected as: $results() + */ + function $results(){ + if ( len( this._mockCurrentMethod ) ) { // Check if arguments hash is set if ( len( this._mockCurrentArgsHash ) ) { this._mockArgResults[ this._mockCurrentArgsHash ] = arguments; @@ -482,29 +307,23 @@ The Official ColdBox Mocking Factory this._mockCurrentArgsHash = ""; return this; - - - - - - - - - - - - - + } + + // throw exception + throw( + type = "MockFactory.IllegalStateException", + message = "No current method name set", + detail = "This method was probably called without chaining it to a $() call. Ex: obj.$().$results(), or obj.$('method').$args().$results()" + ); + } + + /** + * Use this method to mock more than 1 result as passed in arguments. Can only be called when chained to a $() or $().$args() call. Results will be determined by the callback sent in. Basically the method will call this callback and return its results) + * + * @target The UDF or closure to execute as a callback + */ + function $callback( required target ){ + if ( len( this._mockCurrentMethod ) ) { // Check if arguments hash is set if ( len( this._mockCurrentArgsHash ) ) { this._mockArgResults[ this._mockCurrentArgsHash ] = { @@ -521,25 +340,20 @@ The Official ColdBox Mocking Factory this._mockCurrentArgsHash = ""; return this; - - - - - - - - - + } + + // throw exception + throw( + type = "MockFactory.IllegalStateException", + message = "No current method name set", + detail = "This method was probably called without chaining it to a $() call. Ex: obj.$().$callback(), or obj.$('method').$args().$callback()" + ); + } + + /** + * Use this method to return an exception when called. Can only be called when chained to a $() or $().$args() call. Results will be recycled on a multiple of their lengths according to how many times they are called, simulating a state-machine algorithm. Injected as: $throws() + */ + function $throws(){ if ( len( this._mockCurrentMethod ) ) { var args = arguments; return this.$callback( function(){ @@ -557,117 +371,60 @@ The Official ColdBox Mocking Factory message = "No current method name set", detail = "This method was probably called without chaining it to a $() call. Ex: obj.$().$throws(), or obj.$('method').$args().$throws()" ); - - - - - - + } + + /** + * Use this method to mock specific arguments when calling a mocked method. Can only be called when chained to a $() call. If a method is called with arguments and no match, it defaults to the base results defined. Injected as: $args() + */ + function $args(){ // check if method is set on concat if ( len( this._mockCurrentMethod ) ) { // argument Hash Signature this._mockCurrentArgsHash = this._mockCurrentMethod & "|" & this.mockBox.normalizeArguments( arguments ); - // concat this return this; } - - - - - - - - - - - - - - - - - - - - - + + // throw exception + throw( + type = "MockBox.IllegalStateException", + message = "No current method name set", + detail = "This method was probably called without chaining it to a mockMethod() call. Ex: obj.mockMethod().mockArgs()" + ); + } + + /** + * Mock a method, simple but magical. Injected as: $() + * + * @method The method you want to mock + * @preserveReturnType Preserve the return type of the method + * @throwException Throw an exception if the method is called + * @throwType The type of exception to throw + * @throwDetail The detail of the exception to throw + * @throwMessage The message of the exception to throw + * @throwErrorCode The error code of the exception to throw + * @callOriginal Call the original method + * @preserveArguments Preserve the arguments of the method + * @callback The callback to execute + * + * @return The results it must return, if not passed it returns void or you will have to do the mockResults() chain + * @return The results it must return, if not passed it returns void or you will have to do the mockResults() chain + */ + function $( + required method, + any returns, + boolean preserveReturnType = true, + boolean throwException = false, + string throwType = "", + string throwDetail = "", + string throwMessage = "", + string throwErrorCode = "", + boolean callOriginal = false, + boolean preserveArguments = false, + any callback + ){ var fncMD = structNew(); var genFile = ""; var oMockGenerator = this.MockBox.getmockGenerator(); @@ -732,98 +489,66 @@ The Official ColdBox Mocking Factory this._mockCallLoggers[ arguments.method ] = arrayNew( 1 ); return this; - - - - - - - - - + } + + + /** + * Spy on a Method. Like mocking but keeping the original code. + * + * @method The method you want to mock or spy on + */ + function $spy( required method ){ return this.$( method = arguments.method, callback = variables[ arguments.method ] ); - - - - - - - - - - - - var rtn = structNew(); - rtn.mockResults = this._mockResults; - rtn.mockCallBacks = this._mockCallbacks; - rtn.mockArgResults = this._mockArgResults; - rtn.mockMethodCallCounters = this._mockMethodCallCounters; - rtn.mockCallLoggingActive = this._mockCallLoggingActive; - rtn.mockCallLoggers = this._mockCallLoggers; - rtn.mockGenerationPath = this._mockGenerationPath; - rtn.mockOriginalMD = this._mockOriginalMD; - return rtn; - - - - - - + } + + + /** + * Retrieve the method call logger structures. Injected as: $callLog() + */ + struct function $callLog(){ + return this._mockCallLoggers + } + + /** + * Debugging method for MockBox enabled mocks/stubs, useful to find out things about your mocks. Injected as $debug() + */ + struct function $debug(){ + return { + "mockResults" : this._mockResults, + "mockCallBacks" : this._mockCallbacks, + "mockArgResults" : this._mockArgResults, + "mockMethodCallCounters" : this._mockMethodCallCounters, + "mockCallLoggingActive" : this._mockCallLoggingActive, + "mockCallLoggers" : this._mockCallLoggers, + "mockGenerationPath" : this._mockGenerationPath, + "mockOriginalMD" : this._mockOriginalMD + }; + } + + + /** + * Reset all mock counters and logs on the targeted mock. Injected as $reset + */ + function $reset(){ for ( var item in this._mockMethodCallCounters ) { this._mockMethodCallCounters[ item ] = 0; this._mockCallLoggers[ item ] = []; } return this; - - - - - - - - - - /** - * Accepts a specifically formatted chunk of text, and returns it as a query object. - * v2 rewrite by Jamie Jackson - * v3 rewrite by James Davis - * - * @param queryData Specifically format chunk of text to convert to a query. (Required) - * @author Bert Dawson (bert@redbanner.com) - * @version 3, June 25, 2013 - * - * @return Returns a query object. - */ + } + + /** + * Accepts a specifically formatted chunk of text, and returns it as a query object. + * v2 rewrite by Jamie Jackson + * v3 rewrite by James Davis + * + * @queryData Specifically format chunk of text to convert to a query. (Required) + * @author Bert Dawson (bert@redbanner.com) + * @version 3, June 25, 2013 + * + * @return Returns a query object. + */ + Query function querySim( required queryData ){ var fieldsDelimiter = "|"; var listOfColumns = ""; var tmpQuery = ""; @@ -860,19 +585,14 @@ The Official ColdBox Mocking Factory } return ( tmpQuery ); - - - - - - - + } + + /** + * Normalize arguments for serialization + * + * @args The arguments to normalize + */ + function normalizeArguments( required args ){ // TreeMap will give us arguments in a consistent order, but we can't rely on Java to serialize argument values in the same way ColdFusion will var argOrderedTree = createObject( "java", "java.util.TreeMap" ).init( arguments.args ); var serializedArgs = ""; @@ -920,15 +640,14 @@ The Official ColdBox Mocking Factory * to catch any values deep in complex variables. */ return hash( lCase( serializedArgs ) ); - - - - - - - - - + } + + /** + * Decorate a mock object with all the necessary methods and properties + * + * @target The object to decorate + */ + private function decorateMock( required target ){ var obj = target; // Mock Method Results Holder @@ -975,17 +694,14 @@ The Official ColdBox Mocking Factory obj.$reset = variables.$reset; // Mock Box obj.mockBox = this; - - - - - - - - + } + + + /** + * Get the util object + */ + private function getUtil(){ + return new testbox.system.util.Util(); + } + +} diff --git a/system/TestBox.cfc b/system/TestBox.cfc index 043e76f..1deb9c3 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -2,7 +2,7 @@ * Copyright Since 2005 TestBox Framework by Luis Majano and Ortus Solutions, Corp * www.ortussolutions.com * --- - * Welcome to the next generation of BDD and xUnit testing for CFML applications + * Welcome to the next generation of BDD and xUnit testing for BoxLang & CFML applications * The TestBox core class allows you to execute all kinds of test bundles, directories and more. */ component accessors="true" { diff --git a/system/reports/assets/simple.cfm b/system/reports/assets/simple.cfm index 18340a5..e3b3bb3 100644 --- a/system/reports/assets/simple.cfm +++ b/system/reports/assets/simple.cfm @@ -17,287 +17,287 @@ -
+
- -
+ +
-
- -
- - v#testbox.getVersion()# -
-
+
+ +
+ + v#testbox.getVersion()# +
+
+ +
+ +
+ + Run All Tests + + + +
+
+
+ + + + #testbox.getCoverageService().renderStats( results.getCoverageData(), false )# + + + +
+ + +
+
+

Test Results Stats (#numberFormat( results.getTotalDuration() )# ms)

+
+
+ Bundles:#results.getTotalBundles()# + Suites:#results.getTotalSuites()# + Specs:#results.getTotalSpecs()# +
+ +
+ Labels Applied: #arrayToList( results.getLabels() )# +
+
+ +
+ Excludes Applied: #arrayToList( results.getExcludes() )# +
+
+
+ + #results.getCFMLEngine()# + #results.getCFMLEngineVersion()# + +
+
+
- + - - - - #testbox.getCoverageService().renderStats( results.getCoverageData(), false )# - - - -
- - -
-
-

Test Results Stats (#numberFormat( results.getTotalDuration() )# ms)

-
-
- Bundles:#results.getTotalBundles()# - Suites:#results.getTotalSuites()# - Specs:#results.getTotalSpecs()# -
- -
- Labels Applied: #arrayToList( results.getLabels() )# -
-
- -
- Excludes Applied: #arrayToList( results.getExcludes() )# -
-
-
- - #results.getCFMLEngine()# - #results.getCFMLEngineVersion()# - -
-
-
- -
+ +
- Pass: #results.getTotalPass()# + Pass: #thisBundle.totalPass# - Failures: #results.getTotalFail()# + Failures: #thisBundle.totalFail# - Errors: #results.getTotalError()# + Errors: #thisBundle.totalError# - Skipped: #results.getTotalSkipped()# + Skipped: #thisBundle.totalSkipped# Reset
+
+ Suites:#thisBundle.totalSuites# + Specs:#thisBundle.totalSpecs# +
-
- - - - - - +
+
+
    - -
    - + + +
    #encodeForHtml( thisBundle.globalException.Message )#
    +
    + + #thisBundle.globalException.TagContext[ 1 ].codePrintHTML# + +
    +
    +
    + +
    + + -
    -
    -
      - - - -
    • - -
      - -
      -
    • -
      + + + #genSuiteReport( suiteStats, thisBundle )# + + + + +
    • + +
      +

      The following data was collected in order as your tests ran via the debug() method:

      + + +
      #thisDebug.label#
      + +
      - - - -
    • - -
      -

      The following data was collected in order as your tests ran via the debug() method:

      - - -
      #thisDebug.label#
      - -
      -
      -
      -
    • -
      -
    -
    -
    -
- +
+ + + +
-
+ +
+
+
+ + + + + + + + + + + +
+
+
+ +
+
+
+
+
+ + + +

TestBox Global Runner

+

Please use the form below to run test bundle(s), directories and more.

+
+ + +
+
+ + +
+
+ checked="true" /> + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ checked="true" /> + +
+
+
+ + +
+
+
+ checked="true" /> + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
+
+
+ + +
+ + + + +
From d9a1d1917ac571838f378ae3d39fd26e6041b06b Mon Sep 17 00:00:00 2001 From: lmajano Date: Sat, 7 Sep 2024 12:05:49 +0000 Subject: [PATCH 25/73] Apply cfformat changes --- system/runners/UnitRunner.cfc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/system/runners/UnitRunner.cfc b/system/runners/UnitRunner.cfc index f97cbfc..1490f8c 100644 --- a/system/runners/UnitRunner.cfc +++ b/system/runners/UnitRunner.cfc @@ -425,7 +425,7 @@ component /** * Retrieve the testing methods/specs from a given target. * - * @target The target to get the methods from + * @target The target to get the methods from * @testResults The test results object * * @return An array of method specs @@ -438,18 +438,26 @@ component for ( var thisMethod in methodArray ) { // only valid functions and test functions allowed if ( - ( isCustomFunction( arguments.target[ thisMethod ] ) || isClosure( arguments.target[ thisMethod ] ) ) + ( + isCustomFunction( arguments.target[ thisMethod ] ) || isClosure( + arguments.target[ thisMethod ] + ) + ) && isValidTestMethod( thisMethod, arguments.target ) ) { // Build the spec data packet var specMD = getMetadata( arguments.target[ thisMethod ] ); var spec = { - "id" : hash( specMD.name ), - "name" : specMD.name, - "hint" : ( structKeyExists( specMD, "hint" ) ? specMD.hint : "" ), - "skip" : ( structKeyExists( specMD, "skip" ) ? ( len( specMD.skip ) ? specMD.skip : true ) : false ), - "focused" : ( structKeyExists( specMD, "focused" ) ? ( len( specMD.focused ) ? specMD.focused : true ) : false ), + "id" : hash( specMD.name ), + "name" : specMD.name, + "hint" : ( structKeyExists( specMD, "hint" ) ? specMD.hint : "" ), + "skip" : ( + structKeyExists( specMD, "skip" ) ? ( len( specMD.skip ) ? specMD.skip : true ) : false + ), + "focused" : ( + structKeyExists( specMD, "focused" ) ? ( len( specMD.focused ) ? specMD.focused : true ) : false + ), "labels" : ( structKeyExists( specMD, "labels" ) ? listToArray( specMD.labels ) : [] ), "order" : ( structKeyExists( specMD, "order" ) ? listToArray( specMD.order ) : index++ ), "expectedException" : ( From 86bc9c0dcf4216c3524a74733fd5e80f32a1256a Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 15:46:53 +0200 Subject: [PATCH 26/73] TESTBOX-289 #resolve showUDFs = false option with debug() --- system/BaseSpec.cfc | 7 +++++-- system/reports/assets/dot.cfm | 15 +++++++++++---- system/reports/assets/min.cfm | 15 +++++++++++---- system/reports/assets/simple.cfm | 9 +++++++-- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/system/BaseSpec.cfc b/system/BaseSpec.cfc index 89c088e..bb5e2f6 100644 --- a/system/BaseSpec.cfc +++ b/system/BaseSpec.cfc @@ -1485,7 +1485,8 @@ component { any var, string label = "", boolean deepCopy = false, - numeric top = "999" + numeric top = "999", + boolean showUDFs = false ){ // null check if ( isNull( arguments.var ) ) { @@ -1500,6 +1501,7 @@ component { // Check if executing spec is set, else most likely this is called from a request scoped debug method arguments.label = !isNull( this.$currentExecutingSpec ) ? this.$currentExecutingSpec : "request"; } + // add to debug output arrayAppend( this.$debugBuffer, @@ -1507,7 +1509,8 @@ component { "data" : newVar, "label" : arguments.label, "timestamp" : now(), - "top" : arguments.top + "top" : arguments.top, + "showUDFs" : arguments.showUDFs } ); return this; diff --git a/system/reports/assets/dot.cfm b/system/reports/assets/dot.cfm index 60faac6..232509a 100644 --- a/system/reports/assets/dot.cfm +++ b/system/reports/assets/dot.cfm @@ -135,8 +135,15 @@ @@ -158,7 +165,7 @@ $(".expand-collapse").click(function (event) { let icon = $(this).children(".svg-inline--fa"); var icon_fa_icon = icon.attr('data-icon'); - + if (icon_fa_icon === "minus-square") { icon.attr('data-icon', 'plus-square'); } else if (icon_fa_icon === "plus-square") { @@ -239,4 +246,4 @@ function toggleDebug( specid ) { - \ No newline at end of file + diff --git a/system/reports/assets/min.cfm b/system/reports/assets/min.cfm index 3259414..0ed60bb 100644 --- a/system/reports/assets/min.cfm +++ b/system/reports/assets/min.cfm @@ -17,7 +17,7 @@
- +
@@ -126,8 +126,15 @@ @@ -169,4 +176,4 @@ function toggleDebug( specid ) { - \ No newline at end of file + diff --git a/system/reports/assets/simple.cfm b/system/reports/assets/simple.cfm index f2a755a..888ab81 100644 --- a/system/reports/assets/simple.cfm +++ b/system/reports/assets/simple.cfm @@ -282,9 +282,14 @@

The following data was collected in order as your tests ran via the debug() method:

- +
#thisDebug.label#
- +
From 414997e5264762eb98edb460a4cf5d323d391222 Mon Sep 17 00:00:00 2001 From: lmajano Date: Mon, 9 Sep 2024 13:48:19 +0000 Subject: [PATCH 27/73] Apply cfformat changes --- system/BaseSpec.cfc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/BaseSpec.cfc b/system/BaseSpec.cfc index bb5e2f6..d5cd620 100644 --- a/system/BaseSpec.cfc +++ b/system/BaseSpec.cfc @@ -1510,7 +1510,7 @@ component { "label" : arguments.label, "timestamp" : now(), "top" : arguments.top, - "showUDFs" : arguments.showUDFs + "showUDFs" : arguments.showUDFs } ); return this; From 97738df0ad428ef065fc1ca37c1f2c4b98c4052b Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 16:27:39 +0200 Subject: [PATCH 28/73] TESTBOX-331 #resolve TextReporter doesn't correctly support testBundles URL param --- box.json | 8 +- system/TestResult.cfc | 4 +- system/reports/ANTJUnitReporter.cfc | 3 + system/reports/BaseReporter.cfc | 30 ++++ system/reports/CodexWikiReporter.cfc | 13 +- system/reports/ConsoleReporter.cfc | 3 + system/reports/DocReporter.cfc | 13 +- system/reports/DotReporter.cfc | 13 +- system/reports/JSONReporter.cfc | 3 + system/reports/JUnitReporter.cfc | 3 + system/reports/MinReporter.cfc | 13 +- system/reports/MinTextReporter.cfc | 3 + system/reports/SimpleReporter.cfc | 19 +-- system/reports/TapReporter.cfc | 3 + system/reports/TextReporter.cfc | 2 + system/reports/XMLReporter.cfc | 4 + system/reports/assets/codexwiki.cfm | 6 +- system/reports/assets/doc.cfm | 6 +- system/reports/assets/mintext.cfm | 6 +- system/reports/assets/text.cfm | 4 + tests/coverageReport.json | 1 + tests/index.cfm | 196 --------------------------- 22 files changed, 88 insertions(+), 268 deletions(-) create mode 100644 tests/coverageReport.json delete mode 100644 tests/index.cfm diff --git a/box.json b/box.json index ac391ee..ce0e451 100644 --- a/box.json +++ b/box.json @@ -38,7 +38,9 @@ "dependencies":{ "cbstreams":"^2.0.0", "mockdatacfc":"^3", - "globber":"^3.1.3" + "globber":"^3.1.3", + "bx-compat":"^1.3.0+6", + "bx-unsafe-evaluate":"^1.0.0+2" }, "devDependencies":{ "commandbox-dotenv":"*", @@ -48,7 +50,9 @@ "installPaths":{ "cbstreams":"system/modules/cbstreams/", "mockdatacfc":"system/modules/mockdatacfc/", - "globber":"system/modules/globber/" + "globber":"system/modules/globber/", + "bx-compat":".engine/boxlang/WEB-INF/boxlang/modules/bx-compat/", + "bx-unsafe-evaluate":".engine/boxlang/WEB-INF/boxlang/modules/bx-unsafe-evaluate/" }, "scripts":{ "release":"recipe build/release.boxr", diff --git a/system/TestResult.cfc b/system/TestResult.cfc index b2cef33..3708cb5 100644 --- a/system/TestResult.cfc +++ b/system/TestResult.cfc @@ -424,11 +424,13 @@ component accessors="true" { "CFMLEngineVersion" ]; + + var result = { "coverage" : {} }; // Do simple properties only for ( var thisProp in pList ) { - if ( structKeyExists( variables, thisProp ) ) { + if ( structKeyExists( variables, thisProp ) && !isNull( variables[ thisProp ] ) ) { result[ thisProp ] = variables[ thisProp ]; // Do we need to strip out the buffer? diff --git a/system/reports/ANTJUnitReporter.cfc b/system/reports/ANTJUnitReporter.cfc index 11488fa..db3d464 100644 --- a/system/reports/ANTJUnitReporter.cfc +++ b/system/reports/ANTJUnitReporter.cfc @@ -34,6 +34,9 @@ component extends="BaseReporter" { getPageContextResponse().setContentType( "application/xml" ); } + // prepare incoming params + prepareIncomingParams(); + return toJUnit( arguments.results ); } diff --git a/system/reports/BaseReporter.cfc b/system/reports/BaseReporter.cfc index acdb594..e373499 100644 --- a/system/reports/BaseReporter.cfc +++ b/system/reports/BaseReporter.cfc @@ -79,4 +79,34 @@ component { } } + /** + * Prepare incoming params for reports: + * - testMethod + * - testSpecs + * - testSuites + * - testBundles + * - directory + * - editor + */ + function prepareIncomingParams(){ + if ( !structKeyExists( url, "testMethod" ) ) { + url.testMethod = ""; + } + if ( !structKeyExists( url, "testSpecs" ) ) { + url.testSpecs = ""; + } + if ( !structKeyExists( url, "testSuites" ) ) { + url.testSuites = ""; + } + if ( !structKeyExists( url, "testBundles" ) ) { + url.testBundles = ""; + } + if ( !structKeyExists( url, "directory" ) ) { + url.directory = ""; + } + if ( !structKeyExists( url, "editor" ) ) { + url.editor = "vscode"; + } + } + } diff --git a/system/reports/CodexWikiReporter.cfc b/system/reports/CodexWikiReporter.cfc index 319adfa..96b289d 100644 --- a/system/reports/CodexWikiReporter.cfc +++ b/system/reports/CodexWikiReporter.cfc @@ -47,18 +47,7 @@ component extends="BaseReporter" { } // prepare incoming params - if ( !structKeyExists( url, "testMethod" ) ) { - url.testMethod = ""; - } - if ( !structKeyExists( url, "testSpecs" ) ) { - url.testSpecs = ""; - } - if ( !structKeyExists( url, "testSuites" ) ) { - url.testSuites = ""; - } - if ( !structKeyExists( url, "testBundles" ) ) { - url.testBundles = ""; - } + prepareIncomingParams(); // prepare the report savecontent variable="local.report" { diff --git a/system/reports/ConsoleReporter.cfc b/system/reports/ConsoleReporter.cfc index e8f3a3b..c824bb9 100644 --- a/system/reports/ConsoleReporter.cfc +++ b/system/reports/ConsoleReporter.cfc @@ -41,6 +41,9 @@ component extends="TextReporter" { // bundle stats variables.bundleStats= arguments.results.getBundleStats(); + // prepare incoming params + prepareIncomingParams(); + // prepare the report savecontent variable ="local.report" { include "assets/text.cfm"; diff --git a/system/reports/DocReporter.cfc b/system/reports/DocReporter.cfc index b789c62..0cabfcf 100644 --- a/system/reports/DocReporter.cfc +++ b/system/reports/DocReporter.cfc @@ -47,18 +47,7 @@ component extends="BaseReporter" { } // prepare incoming params - if ( !structKeyExists( url, "testMethod" ) ) { - url.testMethod = ""; - } - if ( !structKeyExists( url, "testSpecs" ) ) { - url.testSpecs = ""; - } - if ( !structKeyExists( url, "testSuites" ) ) { - url.testSuites = ""; - } - if ( !structKeyExists( url, "testBundles" ) ) { - url.testBundles = ""; - } + prepareIncomingParams(); // prepare the report savecontent variable="local.report" { diff --git a/system/reports/DotReporter.cfc b/system/reports/DotReporter.cfc index 2ce17f7..1594939 100644 --- a/system/reports/DotReporter.cfc +++ b/system/reports/DotReporter.cfc @@ -49,18 +49,7 @@ component extends="BaseReporter" { } // prepare incoming params - if ( !structKeyExists( url, "testMethod" ) ) { - url.testMethod = ""; - } - if ( !structKeyExists( url, "testSpecs" ) ) { - url.testSpecs = ""; - } - if ( !structKeyExists( url, "testSuites" ) ) { - url.testSuites = ""; - } - if ( !structKeyExists( url, "testBundles" ) ) { - url.testBundles = ""; - } + prepareIncomingParams(); // prepare the report savecontent variable="local.report" { diff --git a/system/reports/JSONReporter.cfc b/system/reports/JSONReporter.cfc index 41f9d47..2c56382 100644 --- a/system/reports/JSONReporter.cfc +++ b/system/reports/JSONReporter.cfc @@ -34,6 +34,9 @@ component extends="BaseReporter" { getPageContextResponse().setContentType( "application/json" ); } + // prepare incoming params + prepareIncomingParams(); + return serializeJSON( arguments.results.getMemento( includeDebugBuffer = true ) ); } diff --git a/system/reports/JUnitReporter.cfc b/system/reports/JUnitReporter.cfc index 58a3231..a8f5414 100644 --- a/system/reports/JUnitReporter.cfc +++ b/system/reports/JUnitReporter.cfc @@ -34,6 +34,9 @@ component extends="BaseReporter" { getPageContextResponse().setContentType( "application/xml" ); } + // prepare incoming params + prepareIncomingParams(); + return toJUnit( arguments.results ); } diff --git a/system/reports/MinReporter.cfc b/system/reports/MinReporter.cfc index 4e7d3dd..8e07e00 100644 --- a/system/reports/MinReporter.cfc +++ b/system/reports/MinReporter.cfc @@ -50,18 +50,7 @@ component extends="BaseReporter" { } // prepare incoming params - if ( !structKeyExists( url, "testMethod" ) ) { - url.testMethod = ""; - } - if ( !structKeyExists( url, "testSpecs" ) ) { - url.testSpecs = ""; - } - if ( !structKeyExists( url, "testSuites" ) ) { - url.testSuites = ""; - } - if ( !structKeyExists( url, "testBundles" ) ) { - url.testBundles = ""; - } + prepareIncomingParams(); // prepare the report savecontent variable="local.report" { diff --git a/system/reports/MinTextReporter.cfc b/system/reports/MinTextReporter.cfc index 12b5cf5..1fc09a8 100644 --- a/system/reports/MinTextReporter.cfc +++ b/system/reports/MinTextReporter.cfc @@ -35,6 +35,9 @@ component extends="TextReporter" { } // bundle stats variables.bundleStats= arguments.results.getBundleStats(); + // prepare incoming params + prepareIncomingParams(); + // prepare the report savecontent variable ="local.report" { include "assets/mintext.cfm"; diff --git a/system/reports/SimpleReporter.cfc b/system/reports/SimpleReporter.cfc index b166fb0..47563b9 100644 --- a/system/reports/SimpleReporter.cfc +++ b/system/reports/SimpleReporter.cfc @@ -47,24 +47,7 @@ component extends="BaseReporter" { } // prepare incoming params - if ( !structKeyExists( url, "testMethod" ) ) { - url.testMethod = ""; - } - if ( !structKeyExists( url, "testSpecs" ) ) { - url.testSpecs = ""; - } - if ( !structKeyExists( url, "testSuites" ) ) { - url.testSuites = ""; - } - if ( !structKeyExists( url, "testBundles" ) ) { - url.testBundles = ""; - } - if ( !structKeyExists( url, "directory" ) ) { - url.directory = ""; - } - if ( !structKeyExists( url, "editor" ) ) { - url.editor = "vscode"; - } + prepareIncomingParams(); // prepare the report savecontent variable="local.report" { diff --git a/system/reports/TapReporter.cfc b/system/reports/TapReporter.cfc index 7f31724..58ec0d0 100644 --- a/system/reports/TapReporter.cfc +++ b/system/reports/TapReporter.cfc @@ -37,6 +37,9 @@ component extends="BaseReporter" { // bundle stats variables.bundleStats = arguments.results.getBundleStats(); + // prepare incoming params + prepareIncomingParams(); + // prepare the report savecontent variable="local.report" { include "assets/tap.cfm"; diff --git a/system/reports/TextReporter.cfc b/system/reports/TextReporter.cfc index cc06aee..4d52f37 100644 --- a/system/reports/TextReporter.cfc +++ b/system/reports/TextReporter.cfc @@ -35,6 +35,8 @@ component extends="BaseReporter" { } // bundle stats variables.bundleStats= arguments.results.getBundleStats(); + // prepare incoming params + prepareIncomingParams(); // prepare the report savecontent variable ="local.report" { include "assets/text.cfm"; diff --git a/system/reports/XMLReporter.cfc b/system/reports/XMLReporter.cfc index 3c9e70c..5f52130 100644 --- a/system/reports/XMLReporter.cfc +++ b/system/reports/XMLReporter.cfc @@ -41,6 +41,10 @@ component extends="BaseReporter" { resetHTMLResponse(); getPageContextResponse().setContentType( "application/xml" ); } + + // prepare incoming params + prepareIncomingParams(); + return variables.converter.toXML( data = arguments.results.getMemento(), rootName = "TestBox" ); } diff --git a/system/reports/assets/codexwiki.cfm b/system/reports/assets/codexwiki.cfm index cf4518b..c727ce1 100644 --- a/system/reports/assets/codexwiki.cfm +++ b/system/reports/assets/codexwiki.cfm @@ -16,6 +16,10 @@ #chr(10)# + + + + = #thisBundle.path# (#thisBundle.totalDuration# ms) = * '''Suites/Specs:''' #thisBundle.totalSuites#/#thisBundle.totalSpecs# @@ -78,4 +82,4 @@ - \ No newline at end of file + diff --git a/system/reports/assets/doc.cfm b/system/reports/assets/doc.cfm index 83f3356..03ae5a6 100644 --- a/system/reports/assets/doc.cfm +++ b/system/reports/assets/doc.cfm @@ -22,6 +22,10 @@ + + + +
@@ -115,4 +119,4 @@ - \ No newline at end of file + diff --git a/system/reports/assets/mintext.cfm b/system/reports/assets/mintext.cfm index c67f775..e8dd072 100644 --- a/system/reports/assets/mintext.cfm +++ b/system/reports/assets/mintext.cfm @@ -1,6 +1,10 @@ █▓▒▒░░░ TestBox v#testbox.getVersion()# ░░░▒▒▓█ + + + + _____________________________________________________________ #space()# @@ -118,4 +122,4 @@ Labels: #space( 7 )# #arrayToList( results.getLabels() )# - \ No newline at end of file + diff --git a/system/reports/assets/text.cfm b/system/reports/assets/text.cfm index 453623c..68c360f 100644 --- a/system/reports/assets/text.cfm +++ b/system/reports/assets/text.cfm @@ -1,6 +1,10 @@ █▓▒▒░░░ TestBox v#testbox.getVersion()# ░░░▒▒▓█ + + + + _____________________________________________________________ #space()# diff --git a/tests/coverageReport.json b/tests/coverageReport.json new file mode 100644 index 0000000..956b0e9 --- /dev/null +++ b/tests/coverageReport.json @@ -0,0 +1 @@ +{"COLUMNS":["filePath","relativeFilePath","filePathHash","numLines","numCoveredLines","numExecutableLines","percCoverage","lineData"],"DATA":[["/Users/lmajano/Sites/projects/TestBox/tests/CoverageReporterTest.cfc","CoverageReporterTest.cfc","B506E28C0CC6B7939E1A86ED7ACDA3B2",3,2,0,1,{"2":"1","1":1}],["/Users/lmajano/Sites/projects/TestBox/tests/CoverageServiceTest.cfc","CoverageServiceTest.cfc","7F968BF64B0F50B6BA8988D55B3B17EE",3,0,0,1,{}]]} \ No newline at end of file diff --git a/tests/index.cfm b/tests/index.cfm deleted file mode 100644 index f06be9b..0000000 --- a/tests/index.cfm +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - // create reporters - reporters = [ "ANTJunit", "Console", "Codexwiki", "Doc", "Dot", "JSON", "JUnit", "Min", "Raw", "Simple", "Tap", "Text", "XML" ]; - ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); - - if( url.opt_run ){ - // Include the TestBox HTML Runner - include "/testbox/system/runners/HTMLRunner.cfm"; - abort; - } - - - - - - - - - TestBox Runner - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
-
- - - -

TestBox Global Runner

-

Please use the form below to run test bundle(s), directories and more.

-
- - -
-
- - -
-
- checked="true" /> - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- checked="true" /> - -
-
-
- - -
-
-
- checked="true" /> - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
- - -
- -
-
-
-
- - -
- - - - -
From c5234b3004b02b54f1eb87e1886354629aa62bb1 Mon Sep 17 00:00:00 2001 From: lmajano Date: Mon, 9 Sep 2024 14:28:21 +0000 Subject: [PATCH 29/73] Apply cfformat changes --- system/reports/ConsoleReporter.cfc | 4 ++-- system/reports/MinTextReporter.cfc | 4 ++-- system/reports/TextReporter.cfc | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/system/reports/ConsoleReporter.cfc b/system/reports/ConsoleReporter.cfc index c824bb9..83c9375 100644 --- a/system/reports/ConsoleReporter.cfc +++ b/system/reports/ConsoleReporter.cfc @@ -40,12 +40,12 @@ component extends="TextReporter" { } // bundle stats - variables.bundleStats= arguments.results.getBundleStats(); + variables.bundleStats = arguments.results.getBundleStats(); // prepare incoming params prepareIncomingParams(); // prepare the report - savecontent variable ="local.report" { + savecontent variable="local.report" { include "assets/text.cfm"; } diff --git a/system/reports/MinTextReporter.cfc b/system/reports/MinTextReporter.cfc index 1fc09a8..52c1563 100644 --- a/system/reports/MinTextReporter.cfc +++ b/system/reports/MinTextReporter.cfc @@ -34,12 +34,12 @@ component extends="TextReporter" { getPageContextResponse().setContentType( "text/plain" ); } // bundle stats - variables.bundleStats= arguments.results.getBundleStats(); + variables.bundleStats = arguments.results.getBundleStats(); // prepare incoming params prepareIncomingParams(); // prepare the report - savecontent variable ="local.report" { + savecontent variable="local.report" { include "assets/mintext.cfm"; } return reReplace( diff --git a/system/reports/TextReporter.cfc b/system/reports/TextReporter.cfc index 4d52f37..2350c78 100644 --- a/system/reports/TextReporter.cfc +++ b/system/reports/TextReporter.cfc @@ -34,11 +34,11 @@ component extends="BaseReporter" { getPageContextResponse().setContentType( "text/plain" ); } // bundle stats - variables.bundleStats= arguments.results.getBundleStats(); + variables.bundleStats = arguments.results.getBundleStats(); // prepare incoming params prepareIncomingParams(); // prepare the report - savecontent variable ="local.report" { + savecontent variable="local.report" { include "assets/text.cfm"; } return reReplace( From 64da85fd6f3cc1c2341d5a1c3baca641d2de9533 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 18:43:16 +0200 Subject: [PATCH 30/73] TESTBOX-397 #resolve debug() get's two new arguments: label and showUDFs --- system/BaseSpec.cfc | 10 +++++++--- tests/coverageReport.json | 1 - 2 files changed, 7 insertions(+), 4 deletions(-) delete mode 100644 tests/coverageReport.json diff --git a/system/BaseSpec.cfc b/system/BaseSpec.cfc index d5cd620..16f892a 100644 --- a/system/BaseSpec.cfc +++ b/system/BaseSpec.cfc @@ -1463,12 +1463,16 @@ component { * * @var The data to send * @top Apply a top to the dump, by default it does 9999 levels + * @showUDFs Show UDFs in the dump, by default it does not + * @label A label to add to the console output */ - any function console( required var, top = 9999 ){ + any function console( required var, numeric top = 9999, boolean showUDFs = false, string label="" ){ writeDump( - var = arguments.var, output = "console", - top = arguments.top + var = arguments.var, + label = "TestBox Console: #arguments.label#", + top = arguments.top, + showUDFs = arguments.showUDFs ); return this; } diff --git a/tests/coverageReport.json b/tests/coverageReport.json deleted file mode 100644 index 956b0e9..0000000 --- a/tests/coverageReport.json +++ /dev/null @@ -1 +0,0 @@ -{"COLUMNS":["filePath","relativeFilePath","filePathHash","numLines","numCoveredLines","numExecutableLines","percCoverage","lineData"],"DATA":[["/Users/lmajano/Sites/projects/TestBox/tests/CoverageReporterTest.cfc","CoverageReporterTest.cfc","B506E28C0CC6B7939E1A86ED7ACDA3B2",3,2,0,1,{"2":"1","1":1}],["/Users/lmajano/Sites/projects/TestBox/tests/CoverageServiceTest.cfc","CoverageServiceTest.cfc","7F968BF64B0F50B6BA8988D55B3B17EE",3,0,0,1,{}]]} \ No newline at end of file From 1c72acd84e9cabfc3abb974fd25cdcf1159c0c5c Mon Sep 17 00:00:00 2001 From: lmajano Date: Mon, 9 Sep 2024 16:43:58 +0000 Subject: [PATCH 31/73] Apply cfformat changes --- system/BaseSpec.cfc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/system/BaseSpec.cfc b/system/BaseSpec.cfc index 16f892a..f5f809a 100644 --- a/system/BaseSpec.cfc +++ b/system/BaseSpec.cfc @@ -1461,17 +1461,22 @@ component { /** * Send some information to the console via writedump( output="console" ) * - * @var The data to send - * @top Apply a top to the dump, by default it does 9999 levels + * @var The data to send + * @top Apply a top to the dump, by default it does 9999 levels * @showUDFs Show UDFs in the dump, by default it does not - * @label A label to add to the console output + * @label A label to add to the console output */ - any function console( required var, numeric top = 9999, boolean showUDFs = false, string label="" ){ + any function console( + required var, + numeric top = 9999, + boolean showUDFs = false, + string label = "" + ){ writeDump( - output = "console", - var = arguments.var, - label = "TestBox Console: #arguments.label#", - top = arguments.top, + output = "console", + var = arguments.var, + label = "TestBox Console: #arguments.label#", + top = arguments.top, showUDFs = arguments.showUDFs ); return this; From e0204b1f20dc73af8883365ad9551207d210a949 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 19:29:06 +0200 Subject: [PATCH 32/73] prepping for passthrough assertions --- system/BaseSpec.cfc | 16 ++++++++++++++++ tests/specs/BDDTest.cfc | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/system/BaseSpec.cfc b/system/BaseSpec.cfc index 16f892a..26e69ba 100644 --- a/system/BaseSpec.cfc +++ b/system/BaseSpec.cfc @@ -1826,4 +1826,20 @@ component { return server.keyExists( "os" ) && server.os.name.findNoCase( "mac" ); } + /** + * ------------------------------------------------------------------ + * Pass-through assertions + * ------------------------------------------------------------------ + */ + + function onMissingMethod( missingMethodName, missingMethodArguments ){ + // If the method follows the pattern "assert{target}" then get the target into a variable + if( left( arguments.missingMethodName, 6 ) == "assert" && len( arguments.missingMethodName ) > 6 ){ + var target = right( arguments.missingMethodName, len( arguments.missingMethodName ) - 6 ); + return invoke( this.$assert, target, arguments.missingMethodArguments ); + } + + } + + } diff --git a/tests/specs/BDDTest.cfc b/tests/specs/BDDTest.cfc index 18531fc..4913c9c 100644 --- a/tests/specs/BDDTest.cfc +++ b/tests/specs/BDDTest.cfc @@ -49,6 +49,12 @@ component extends="testbox.system.BaseSpec" { } ); } ); + it( "can have a spec with passthrough assertions", function(){ + this.assertIsEqual( 1, 1 ); + this.assertIsTrue( true ); + this.assertIsFalse( false ); + } ); + it( "can match strings with no case sensitivity and, has, commas in the title", function(){ expect( "Luis" ).toMatch( "^luis" ); } ); From 42b8a408dc8a19fd38eb7aba49d45919f9a5d907 Mon Sep 17 00:00:00 2001 From: lmajano Date: Mon, 9 Sep 2024 17:29:48 +0000 Subject: [PATCH 33/73] Apply cfformat changes --- system/BaseSpec.cfc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/system/BaseSpec.cfc b/system/BaseSpec.cfc index 8631d3c..ec35a57 100644 --- a/system/BaseSpec.cfc +++ b/system/BaseSpec.cfc @@ -1837,14 +1837,16 @@ component { * ------------------------------------------------------------------ */ - function onMissingMethod( missingMethodName, missingMethodArguments ){ + function onMissingMethod( missingMethodName, missingMethodArguments ){ // If the method follows the pattern "assert{target}" then get the target into a variable - if( left( arguments.missingMethodName, 6 ) == "assert" && len( arguments.missingMethodName ) > 6 ){ + if ( left( arguments.missingMethodName, 6 ) == "assert" && len( arguments.missingMethodName ) > 6 ) { var target = right( arguments.missingMethodName, len( arguments.missingMethodName ) - 6 ); - return invoke( this.$assert, target, arguments.missingMethodArguments ); + return invoke( + this.$assert, + target, + arguments.missingMethodArguments + ); } - - } - + } } From 170f90f86baaa179023543eafd86cfffc3e32b22 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 21:26:41 +0200 Subject: [PATCH 34/73] update to use ordered listes --- tests/specs/coverage/CoverageReporterTest.cfc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/specs/coverage/CoverageReporterTest.cfc b/tests/specs/coverage/CoverageReporterTest.cfc index 3f1da73..f7b9a88 100644 --- a/tests/specs/coverage/CoverageReporterTest.cfc +++ b/tests/specs/coverage/CoverageReporterTest.cfc @@ -126,7 +126,7 @@ component extends="testbox.system.BaseSpec" { numExecutableLines : 0, percCoverage : 0, filePathHash : hash( fileName ), - lineData : createObject( "java", "java.util.LinkedHashMap" ).init() + lineData : structNew( "ordered" ) } ); qryData[ "lineData" ][ rowN ] = {}; From c100e02c21003f8aef11c72c7db1c6d5cfbd95f7 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Mon, 9 Sep 2024 23:09:33 +0200 Subject: [PATCH 35/73] TESTBOX-398 #resolve DisplayName on a bundle now shows up in the reports --- system/TestResult.cfc | 7 ++++++- system/reports/assets/codexwiki.cfm | 2 +- system/reports/assets/doc.cfm | 2 +- system/reports/assets/dot.cfm | 2 +- system/reports/assets/min.cfm | 2 +- system/reports/assets/simple.cfm | 4 +++- system/reports/assets/text.cfm | 2 +- tests/specs/AssertionsTest.cfc | 2 +- 8 files changed, 15 insertions(+), 8 deletions(-) diff --git a/system/TestResult.cfc b/system/TestResult.cfc index 3708cb5..9551cbb 100644 --- a/system/TestResult.cfc +++ b/system/TestResult.cfc @@ -175,6 +175,11 @@ component accessors="true" { /** * Start a new bundle stats and return its reference + * + * @bundlePath The path of the bundle + * @name The display name of the bundle + * + * @return The bundle stats struct reference */ struct function startBundleStats( required string bundlePath, required string name ){ lock name="tb-results-#variables.resultsID#" type="exclusive" timeout="10" { @@ -182,7 +187,7 @@ component accessors="true" { var stats = { // bundle id "id" : hash( getTickCount() + randRange( 1, 10000000 ) ), - // The bundle name + // The bundle display name "name" : arguments.name, // Path of the bundle "path" : arguments.bundlePath, diff --git a/system/reports/assets/codexwiki.cfm b/system/reports/assets/codexwiki.cfm index c727ce1..59ac967 100644 --- a/system/reports/assets/codexwiki.cfm +++ b/system/reports/assets/codexwiki.cfm @@ -20,7 +20,7 @@ -= #thisBundle.path# (#thisBundle.totalDuration# ms) = += #thisBundle.name# (#thisBundle.totalDuration# ms) = * '''Suites/Specs:''' #thisBundle.totalSuites#/#thisBundle.totalSpecs# * '''Pass:''' #thisBundle.totalPass# diff --git a/system/reports/assets/doc.cfm b/system/reports/assets/doc.cfm index 03ae5a6..0158939 100644 --- a/system/reports/assets/doc.cfm +++ b/system/reports/assets/doc.cfm @@ -29,7 +29,7 @@
-

#thisBundle.path# (#thisBundle.totalDuration# ms)

+

#thisBundle.name# (#thisBundle.totalDuration# ms)

Suites/Specs: #thisBundle.totalSuites#/#thisBundle.totalSpecs#
diff --git a/system/reports/assets/dot.cfm b/system/reports/assets/dot.cfm index 232509a..ded7ab5 100644 --- a/system/reports/assets/dot.cfm +++ b/system/reports/assets/dot.cfm @@ -127,7 +127,7 @@

  • - Debug Stream: #thisBundle.path# + Debug Stream: #thisBundle.name#
  • + +
    @@ -154,7 +156,7 @@ href="#variables.baseURL#&directory=#URLEncodedFormat( URL.directory )#&testBundles=#URLEncodedFormat( thisBundle.path )#&opt_run=true&coverageEnabled=false" title="Run only this bundle" > - #thisBundle.path# (#numberFormat( thisBundle.totalDuration )# ms) + #thisBundle.name# (#numberFormat( thisBundle.totalDuration )# ms) + +
    +
    + + +
    +
    +

    Availble Test Runners:

    +

    + Below is a listing of the runners matching the "runner*.cfm" pattern. +

    + + + + #runners.name# + +
    +
    + + +
    +
    +
    + +

    TestBox Test Browser:

    +

    + Below is a listing of the files and folders starting from your root #rootMapping#. You can click on individual tests in order to execute them + or click on the Run All button on your left and it will execute a directory runner from the visible folder. +

    + +
    + #targetPath.replace( rootPath, "" )# + + + + + + +
    +
    +
    + + + + + + + + + + &##x271A; #qResults.name# + +
    + + + #qResults.name# + +
    + + + #qResults.name# + +
    + + #qResults.name# +
    +
    +
    +
    +
    +
    +
    +
    + + + + diff --git a/bx/test-harness/Application.bx b/bx/test-harness/Application.bx new file mode 100644 index 0000000..b2a1480 --- /dev/null +++ b/bx/test-harness/Application.bx @@ -0,0 +1,32 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + * This is the test harness application file that will be executed by the TestBox in isolation + * to a root application. Usually you mimic your application's Application.bx settings here. + */ +class { + this.name = "My Test Harness"; + + // The mapping to easily access the tests + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + // The mapping to easily access the root application usually the parent folder + this.mappings[ "/root" ] = expandPath( "/../" ); + //this.mappings[ "/testbox" ] = expandPath( "/../" ); + + // Any application settings go here + + /** + * Executes BEFORE any runner or test requested. + */ + boolean function onRequestStart( String targetPage ){ + return true; + } + + /** + * Executes AFTER any runner or test requested. + */ + void function onRequestEnd( String targetPage ){ + } + +} diff --git a/test-harness/results/TEST.properties b/bx/test-harness/results/TEST.properties similarity index 100% rename from test-harness/results/TEST.properties rename to bx/test-harness/results/TEST.properties diff --git a/test-harness/results/latestrun.log b/bx/test-harness/results/latestrun.log similarity index 100% rename from test-harness/results/latestrun.log rename to bx/test-harness/results/latestrun.log diff --git a/bx/test-harness/runner.bxm b/bx/test-harness/runner.bxm new file mode 100644 index 0000000..b19a394 --- /dev/null +++ b/bx/test-harness/runner.bxm @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bx/test-harness/specs/BDDTest.bx b/bx/test-harness/specs/BDDTest.bx new file mode 100644 index 0000000..6ac8094 --- /dev/null +++ b/bx/test-harness/specs/BDDTest.bx @@ -0,0 +1,125 @@ +/** + * My first spec file + */ +class extends="testbox.system.BaseSpec" { + + /** + * You can prepare variables here that will be available to all specs in this spec file + */ + property testbox; + property foo; + property salvador; + + /*********************************** LIFE CYCLE Methods ***********************************/ + + /** + * Executes BEFORE all suites in this spec file + */ + function beforeAll(){ + variables.salvador = 1; + } + + /** + * Executes AFTER all suites in this spec file + */ + function afterAll(){ + // do cleanup here + } + + /*********************************** BDD SUITES ***********************************/ + + function run(){ + /** + * describe() starts a suite group of spec tests. It is the main BDD construct. + * You can also use the aliases: story(), feature(), scenario(), given(), when() + * to create fluent chains of human-readable expressions. + * + * Arguments: + * + * @title Required: The title of the suite, Usually how you want to name the desired behavior + * @body Required: A closure that will resemble the tests to execute. + * @labels The list or array of labels this suite group belongs to + * @asyncAll If you want to parallelize the execution of the defined specs in this suite group. + * @skip A flag that tells TestBox to skip this suite group from testing if true + * @focused A flag that tells TestBox to only run this suite and no other + */ + describe( "A spec", () => { + /** + * -------------------------------------------------------------------------- + * Runs before each spec in THIS suite group or nested groups + * -------------------------------------------------------------------------- + */ + beforeEach( () => { + testbox = 0; + testbox++; + } ); + + /** + * -------------------------------------------------------------------------- + * Runs after each spec in THIS suite group or nested groups + * -------------------------------------------------------------------------- + */ + afterEach( () => { + foo = 0; + } ); + + /** + * it() describes a spec to test. Usually the title is prefixed with the suite name to create an expression. + * You can also use the aliases: then(), test() to create fluent chains of human-readable expressions. + * + * Arguments: + * + * @title The title of this spec + * @body The closure that represents the test + * @labels The list or array of labels this spec belongs to + * @skip A flag or a closure that tells TestBox to skip this spec test from testing if true. If this is a closure it must return boolean. + * @data A struct of data you would like to bind into the spec so it can be later passed into the executing body function + * @focused A flag that tells TestBox to only run this spec and no other + */ + it( "can test for equality", () => { + expect( testbox ).toBe( 1 ); + } ); + + it( "can have more than one expectation to test", () => { + testbox = testbox * 8; + // type checks + expect( testbox ).toBeTypeOf( "numeric" ); + // dynamic type methods + expect( testbox ).toBeNumeric(); + // delta ranges + expect( testbox ).toBeCloseTo( expected = 10, delta = 2 ); + } ); + + it( "can have negative expectations", () => { + testbox = testbox * 8; + // type checks + expect( testbox ).notToBeTypeOf( "usdate" ); + // dynamic type methods + expect( testbox ).notToBeArray(); + // delta ranges + expect( testbox ).notToBeCloseTo( expected = 10, delta = 2 ); + } ); + + xit( "can have tests that can be skipped easily like this one by prefixing it with x", () => { + fail( "xit() this should skip" ); + } ); + + it( + title = "can have tests that execute if the right environment exists (Windows Only)", + body = () => { + expect( server.os.name ).toInclude( "Windows" ); + }, + skip = ( !isWindows() ) + ); + + it( + title = "can have tests that execute if the right environment exists (Mac Only)", + body = () => { + expect( server.os.name ).toInclude( "Mac" ); + }, + skip = ( !isMac() ) + ); + } ); + } + +} diff --git a/bx/test-harness/specs/MyFirstSpec.bx b/bx/test-harness/specs/MyFirstSpec.bx new file mode 100644 index 0000000..48878a9 --- /dev/null +++ b/bx/test-harness/specs/MyFirstSpec.bx @@ -0,0 +1,15 @@ +class extends="testbox.system.BaseSpec"{ + + function run(){ + describe( "My First Test", ()=>{ + test( "it can add", ()=>{ + expect( sum( 1, 2 ) ).toBe( 3 ) + } ) + } ) + } + + private function sum( a, b ){ + return a + b + } + +} diff --git a/bx/test-harness/test.xml b/bx/test-harness/test.xml new file mode 100755 index 0000000..8153d70 --- /dev/null +++ b/bx/test-harness/test.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tests ran at ${start.TODAY} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bx/test-runner/index.bxm b/bx/test-runner/index.bxm new file mode 100644 index 0000000..ddae1fd --- /dev/null +++ b/bx/test-runner/index.bxm @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + // create reporters + reporters = [ "ANTJunit", "Console", "Codexwiki", "Doc", "Dot", "JSON", "JUnit", "Min", "Raw", "Simple", "Tap", "Text", "XML" ]; + ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); + + if( url.opt_run ){ + // Include the TestBox HTML Runner + include "/testbox/system/runners/HTMLRunner.cfm"; + abort; + } + + + + + + + + TestBox Runner + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    + + + +

    TestBox Global Runner

    +

    Please use the form below to run test bundle(s), directories and more.

    +
    + + +
    +
    + + +
    +
    + checked="true" /> + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + checked="true" /> + +
    +
    +
    + + +
    +
    +
    + checked="true" /> + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    + + +
    + +
    +
    +
    +
    + + +
    + + + + +
    diff --git a/test-browser/index.cfm b/cfml/test-browser/index.cfm similarity index 94% rename from test-browser/index.cfm rename to cfml/test-browser/index.cfm index 24e26e3..284bd82 100644 --- a/test-browser/index.cfm +++ b/cfml/test-browser/index.cfm @@ -1,23 +1,29 @@ // No cf debugging cfsetting( showdebugoutput="false" ); - // Path Navigation - param name="url.path" default=""; - // Root Tests Directory + // GLOBAL VARIABLES + ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); + TESTBOX_VERSION = new testBox.system.TestBox().getVersion(); + // TEST LOCATIONS -> UPDATE AS YOU SEE FIT rootMapping = "/tests/specs"; + + // Local Variables rootPath = expandPath( rootMapping ); targetPath = rootPath; - // Append navigation path + + // Incoming Navigation + param name="url.path" default=""; if( len( url.path ) ){ targetPath = getCanonicalPath( rootpath & "/" & url.path ); - // Avoid traversals + // Avoid traversals, reset to root if( !findNoCase( rootpath, targetPath ) ){ targetPath = rootpath; } } + // Get the actual execution path executePath = rootMapping & ( len( url.path ) ? "/#url.path#" : "/" ); - // Directory Runner + // Execute an incoming path if( !isNull( url.action ) ){ if( directoryExists( targetPath ) ){ writeOutput( "#new testbox.system.TestBox( directory=executePath ).run()#" ); @@ -26,17 +32,16 @@ } abort; } - // Get target path listing + + // Get the tests to navigate qResults = directoryList( targetPath, false, "query", "", "name" ); - // Get the back path + + // Calculate the back navigation path if( len( url.path ) ){ backPath = url.path.listToArray( "/\" ); backPath.pop(); backPath = backPath.toList( "/" ); } - // TestBox Assets - ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); - TESTBOX_VERSION = new testBox.system.TestBox().getVersion(); diff --git a/test-harness/Application.cfc b/cfml/test-harness/Application.cfc similarity index 100% rename from test-harness/Application.cfc rename to cfml/test-harness/Application.cfc diff --git a/cfml/test-harness/results/TEST.properties b/cfml/test-harness/results/TEST.properties new file mode 100644 index 0000000..3bb4488 --- /dev/null +++ b/cfml/test-harness/results/TEST.properties @@ -0,0 +1,11 @@ +test.passed=true +test.labels= +test.bundles= +test.directory=test.specs +total.bundles=1 +total.suites=1 +total.specs=7 +total.pass=4 +total.fail=0 +total.error=0 +total.skipped=3 \ No newline at end of file diff --git a/cfml/test-harness/results/latestrun.log b/cfml/test-harness/results/latestrun.log new file mode 100644 index 0000000..29ee286 --- /dev/null +++ b/cfml/test-harness/results/latestrun.log @@ -0,0 +1 @@ +Tests ran at 12-23-2013 04:21:49 PM \ No newline at end of file diff --git a/test-harness/runner.cfm b/cfml/test-harness/runner.cfm similarity index 100% rename from test-harness/runner.cfm rename to cfml/test-harness/runner.cfm diff --git a/test-harness/specs/BDDTest.cfc b/cfml/test-harness/specs/BDDTest.cfc similarity index 85% rename from test-harness/specs/BDDTest.cfc rename to cfml/test-harness/specs/BDDTest.cfc index af32a6c..313eb65 100644 --- a/test-harness/specs/BDDTest.cfc +++ b/cfml/test-harness/specs/BDDTest.cfc @@ -3,13 +3,25 @@ */ component extends="testbox.system.BaseSpec" { + /** + * You can prepare variables here that will be available to all specs in this spec file + */ + property testbox; + property foo; + property salvador; + /*********************************** LIFE CYCLE Methods ***********************************/ + /** + * Executes BEFORE all suites in this spec file + */ function beforeAll(){ - // setup the entire test bundle here variables.salvador = 1; } + /** + * Executes AFTER all suites in this spec file + */ function afterAll(){ // do cleanup here } @@ -53,7 +65,7 @@ component extends="testbox.system.BaseSpec" { /** * it() describes a spec to test. Usually the title is prefixed with the suite name to create an expression. - * You can also use the aliases: then() to create fluent chains of human-readable expressions. + * You can also use the aliases: then(), test() to create fluent chains of human-readable expressions. * * Arguments: * @@ -93,25 +105,21 @@ component extends="testbox.system.BaseSpec" { } ); it( - title = "can have tests that execute if the right environment exists (lucee only)", + title = "can have tests that execute if the right environment exists (Windows Only)", body = () => { - expect( server ).toHaveKey( "lucee" ); + expect( server.os.name ).toInclude( "Windows" ); }, - skip = ( !isLucee() ) + skip = ( !isWindows() ) ); it( - title = "can have tests that execute if the right environment exists (Adobe only)", + title = "can have tests that execute if the right environment exists (Mac Only)", body = () => { - expect( server ).notToHaveKey( "lucee" ); + expect( server.os.name ).toInclude( "Mac" ); }, - skip = ( isLucee() ) + skip = ( !isMac() ) ); } ); } - private function isLucee(){ - return ( structKeyExists( server, "lucee" ) ); - } - } diff --git a/cfml/test-harness/specs/MyFirstSpec.cfc b/cfml/test-harness/specs/MyFirstSpec.cfc new file mode 100644 index 0000000..2cc96ca --- /dev/null +++ b/cfml/test-harness/specs/MyFirstSpec.cfc @@ -0,0 +1,15 @@ +component extends="testbox.system.BaseSpec"{ + + function run(){ + describe( "My First Test", ()=>{ + test( "it can add", ()=>{ + expect( sum( 1, 2 ) ).toBe( 3 ) + } ) + } ) + } + + private function sum( a, b ){ + return a + b + } + +} diff --git a/test-harness/test.xml b/cfml/test-harness/test.xml similarity index 100% rename from test-harness/test.xml rename to cfml/test-harness/test.xml diff --git a/test-runner/index.cfm b/cfml/test-runner/index.cfm similarity index 100% rename from test-runner/index.cfm rename to cfml/test-runner/index.cfm From 603c0b17a262ae29d89f18ee5847520ff7323c96 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 00:01:50 +0200 Subject: [PATCH 53/73] TESTBOX-401 #resolve BoxLang CLI mode and Runner --- .gitignore | 5 ++++ bin/run | 20 +++++++++++++++ bx/{test-browser => browser}/index.bxm | 0 bx/{test-runner => runner}/index.bxm | 0 bx/{test-harness => tests}/Application.bx | 1 - .../results/TEST.properties | 0 .../results/latestrun.log | 0 bx/{test-harness => tests}/runner.bxm | 0 bx/{test-harness => tests}/specs/BDDTest.bx | 0 .../specs/MyFirstSpec.bx | 0 bx/tests/specs/integration/.gitkeep | 0 bx/tests/specs/unit/.gitkeep | 0 bx/tests/test.bxs | 3 +++ bx/{test-harness => tests}/test.xml | 0 cfml/{test-browser => browser}/index.cfm | 0 cfml/{test-runner => runner}/index.cfm | 0 cfml/{test-harness => tests}/Application.cfc | 0 cfml/tests/integration/.gitkeep | 0 .../results/TEST.properties | 0 .../results/latestrun.log | 0 cfml/{test-harness => tests}/runner.cfm | 0 .../{test-harness => tests}/specs/BDDTest.cfc | 0 .../specs/MyFirstSpec.cfc | 0 cfml/{test-harness => tests}/test.xml | 0 cfml/tests/unit/.gitkeep | 0 system/TestBox.cfc | 25 +++++++++++-------- system/reports/BaseReporter.cfc | 13 ++++++++++ 27 files changed, 55 insertions(+), 12 deletions(-) create mode 100755 bin/run rename bx/{test-browser => browser}/index.bxm (100%) rename bx/{test-runner => runner}/index.bxm (100%) rename bx/{test-harness => tests}/Application.bx (94%) rename bx/{test-harness => tests}/results/TEST.properties (100%) rename bx/{test-harness => tests}/results/latestrun.log (100%) rename bx/{test-harness => tests}/runner.bxm (100%) rename bx/{test-harness => tests}/specs/BDDTest.bx (100%) rename bx/{test-harness => tests}/specs/MyFirstSpec.bx (100%) create mode 100644 bx/tests/specs/integration/.gitkeep create mode 100644 bx/tests/specs/unit/.gitkeep create mode 100644 bx/tests/test.bxs rename bx/{test-harness => tests}/test.xml (100%) rename cfml/{test-browser => browser}/index.cfm (100%) rename cfml/{test-runner => runner}/index.cfm (100%) rename cfml/{test-harness => tests}/Application.cfc (100%) create mode 100644 cfml/tests/integration/.gitkeep rename cfml/{test-harness => tests}/results/TEST.properties (100%) rename cfml/{test-harness => tests}/results/latestrun.log (100%) rename cfml/{test-harness => tests}/runner.cfm (100%) rename cfml/{test-harness => tests}/specs/BDDTest.cfc (100%) rename cfml/{test-harness => tests}/specs/MyFirstSpec.cfc (100%) rename cfml/{test-harness => tests}/test.xml (100%) create mode 100644 cfml/tests/unit/.gitkeep diff --git a/.gitignore b/.gitignore index a02e64d..0fb9acd 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,8 @@ WEB-INF build/build.number .artifacts .tmp + +# Harness Testers +bx/testbox +bx/grapher +cfml/testbox diff --git a/bin/run b/bin/run new file mode 100755 index 0000000..5aae741 --- /dev/null +++ b/bin/run @@ -0,0 +1,20 @@ +#!/usr/bin/env boxlang + +/** + * TestBox Runner for BoxLang + */ + +executionPath = server.java.executionPath +testsDirectory = "tests.specs" +executionArgs = jsonDeserialize( server.java.executionArgs ) + +// No Arguments, execute the entire suite +testArgs = {} +if( executionArgs.isEmpty() ){ + testArgs = { + "directory" : testsDirectory, + "recurse" : true + } +} + +println( new testbox.system.TestBox( argumentCollection = testArgs ).run() ) diff --git a/bx/test-browser/index.bxm b/bx/browser/index.bxm similarity index 100% rename from bx/test-browser/index.bxm rename to bx/browser/index.bxm diff --git a/bx/test-runner/index.bxm b/bx/runner/index.bxm similarity index 100% rename from bx/test-runner/index.bxm rename to bx/runner/index.bxm diff --git a/bx/test-harness/Application.bx b/bx/tests/Application.bx similarity index 94% rename from bx/test-harness/Application.bx rename to bx/tests/Application.bx index b2a1480..a80f9e6 100644 --- a/bx/test-harness/Application.bx +++ b/bx/tests/Application.bx @@ -12,7 +12,6 @@ class { this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); // The mapping to easily access the root application usually the parent folder this.mappings[ "/root" ] = expandPath( "/../" ); - //this.mappings[ "/testbox" ] = expandPath( "/../" ); // Any application settings go here diff --git a/bx/test-harness/results/TEST.properties b/bx/tests/results/TEST.properties similarity index 100% rename from bx/test-harness/results/TEST.properties rename to bx/tests/results/TEST.properties diff --git a/bx/test-harness/results/latestrun.log b/bx/tests/results/latestrun.log similarity index 100% rename from bx/test-harness/results/latestrun.log rename to bx/tests/results/latestrun.log diff --git a/bx/test-harness/runner.bxm b/bx/tests/runner.bxm similarity index 100% rename from bx/test-harness/runner.bxm rename to bx/tests/runner.bxm diff --git a/bx/test-harness/specs/BDDTest.bx b/bx/tests/specs/BDDTest.bx similarity index 100% rename from bx/test-harness/specs/BDDTest.bx rename to bx/tests/specs/BDDTest.bx diff --git a/bx/test-harness/specs/MyFirstSpec.bx b/bx/tests/specs/MyFirstSpec.bx similarity index 100% rename from bx/test-harness/specs/MyFirstSpec.bx rename to bx/tests/specs/MyFirstSpec.bx diff --git a/bx/tests/specs/integration/.gitkeep b/bx/tests/specs/integration/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bx/tests/specs/unit/.gitkeep b/bx/tests/specs/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bx/tests/test.bxs b/bx/tests/test.bxs new file mode 100644 index 0000000..1eb6e5b --- /dev/null +++ b/bx/tests/test.bxs @@ -0,0 +1,3 @@ +// Run all the specs in the tests.specs directory and subdirectories +r = new testbox.system.TestBox( directory="tests.specs" ) +println( r.run() ) diff --git a/bx/test-harness/test.xml b/bx/tests/test.xml similarity index 100% rename from bx/test-harness/test.xml rename to bx/tests/test.xml diff --git a/cfml/test-browser/index.cfm b/cfml/browser/index.cfm similarity index 100% rename from cfml/test-browser/index.cfm rename to cfml/browser/index.cfm diff --git a/cfml/test-runner/index.cfm b/cfml/runner/index.cfm similarity index 100% rename from cfml/test-runner/index.cfm rename to cfml/runner/index.cfm diff --git a/cfml/test-harness/Application.cfc b/cfml/tests/Application.cfc similarity index 100% rename from cfml/test-harness/Application.cfc rename to cfml/tests/Application.cfc diff --git a/cfml/tests/integration/.gitkeep b/cfml/tests/integration/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cfml/test-harness/results/TEST.properties b/cfml/tests/results/TEST.properties similarity index 100% rename from cfml/test-harness/results/TEST.properties rename to cfml/tests/results/TEST.properties diff --git a/cfml/test-harness/results/latestrun.log b/cfml/tests/results/latestrun.log similarity index 100% rename from cfml/test-harness/results/latestrun.log rename to cfml/tests/results/latestrun.log diff --git a/cfml/test-harness/runner.cfm b/cfml/tests/runner.cfm similarity index 100% rename from cfml/test-harness/runner.cfm rename to cfml/tests/runner.cfm diff --git a/cfml/test-harness/specs/BDDTest.cfc b/cfml/tests/specs/BDDTest.cfc similarity index 100% rename from cfml/test-harness/specs/BDDTest.cfc rename to cfml/tests/specs/BDDTest.cfc diff --git a/cfml/test-harness/specs/MyFirstSpec.cfc b/cfml/tests/specs/MyFirstSpec.cfc similarity index 100% rename from cfml/test-harness/specs/MyFirstSpec.cfc rename to cfml/tests/specs/MyFirstSpec.cfc diff --git a/cfml/test-harness/test.xml b/cfml/tests/test.xml similarity index 100% rename from cfml/test-harness/test.xml rename to cfml/tests/test.xml diff --git a/cfml/tests/unit/.gitkeep b/cfml/tests/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/system/TestBox.cfc b/system/TestBox.cfc index 9fc235b..e456bd7 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -32,9 +32,15 @@ component accessors="true" { // A list of globbing patterns to match bundles to test ONLY! Ex: *Spec|*Test property name="bundlesPattern"; - // Constants + // Static Variables variables.TESTBOX_PATH = expandPath( "/testbox" ); variables.IS_BOXLANG = server.keyExists( "boxlang" ); + variables.IS_CLI = !getFunctionList().keyExists( "getPageContext" ); + variables.DEFAULT_REPORTER = variables.IS_CLI ? "text" : "simple"; + variables.DEFAULT_BUNDLES_PATTERN = "*.bx|*.cfc"; + // TestBox Info : Modified by the build process. + variables.VERSION = "@build.version@+@build.number@"; + variables.CODENAME = ""; /** * Constructor @@ -51,18 +57,15 @@ component accessors="true" { any bundles = [], any directory = {}, any directories = {}, - any reporter = "simple", + any reporter = variables.DEFAULT_REPORTER, any labels = [], any excludes = [], struct options = {}, - string bundlesPattern = "*.bx|*.cfc" + string bundlesPattern = variables.DEFAULT_BUNDLES_PATTERN ){ - // TestBox version - variables.version = "@build.version@+@build.number@"; - variables.codename = ""; // Bundles pattern if ( !len( arguments.bundlesPattern ) ) { - arguments.bundlesPattern = "*.bx|*.cfc"; + arguments.bundlesPattern = variables.DEFAULT_BUNDLES_PATTERN; } variables.bundlesPattern = arguments.bundlesPattern; // Utility and mappings @@ -203,10 +206,10 @@ component accessors="true" { moduleRecord.moduleConfig.onLoad(); } catch ( any e ) { moduleRecord.activationFailure = e; - writeDump( - var = "**** Error activating (#arguments.name#) TestBox Module: #e.message & e.detail#", - output = "console" - ); + // writeDump( + // var = "**** Error activating (#arguments.name#) TestBox Module: #e.message & e.detail#", + // output = "console" + // ); } return this; diff --git a/system/reports/BaseReporter.cfc b/system/reports/BaseReporter.cfc index e373499..0e61c13 100644 --- a/system/reports/BaseReporter.cfc +++ b/system/reports/BaseReporter.cfc @@ -17,6 +17,15 @@ component { * Helper method to deal with ACF2016's overload of the page context response, come on Adobe, get your act together! */ function getPageContextResponse(){ + // If running in CLI mode, we don't have a page context + if( !getFunctionList().keyExists( "pageContext" ) ){ + return { + "setContentType" : function(){ + // do nothing + } + }; + } + if ( server.keyExists( "coldfusion" ) && server.coldfusion.productName.findNoCase( "ColdFusion" ) ) { return getPageContext().getResponse().getResponse(); } else { @@ -28,6 +37,10 @@ component { * Reset the HTML response */ function resetHTMLResponse(){ + // If running in CLI mode, we don't have a page context + if( !getFunctionList().keyExists( "pageContext" ) ){ + return; + } // reset cfhtmlhead from integration tests if ( structKeyExists( server, "lucee" ) ) { try { From e064560a5a1483ae1bb73de9aa658ef8e42b0631 Mon Sep 17 00:00:00 2001 From: lmajano Date: Wed, 11 Sep 2024 22:02:28 +0000 Subject: [PATCH 54/73] Apply cfformat changes --- system/TestBox.cfc | 12 ++++++------ system/reports/BaseReporter.cfc | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/system/TestBox.cfc b/system/TestBox.cfc index e456bd7..88bfc73 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -33,14 +33,14 @@ component accessors="true" { property name="bundlesPattern"; // Static Variables - variables.TESTBOX_PATH = expandPath( "/testbox" ); - variables.IS_BOXLANG = server.keyExists( "boxlang" ); - variables.IS_CLI = !getFunctionList().keyExists( "getPageContext" ); - variables.DEFAULT_REPORTER = variables.IS_CLI ? "text" : "simple"; + variables.TESTBOX_PATH = expandPath( "/testbox" ); + variables.IS_BOXLANG = server.keyExists( "boxlang" ); + variables.IS_CLI = !getFunctionList().keyExists( "getPageContext" ); + variables.DEFAULT_REPORTER = variables.IS_CLI ? "text" : "simple"; variables.DEFAULT_BUNDLES_PATTERN = "*.bx|*.cfc"; // TestBox Info : Modified by the build process. - variables.VERSION = "@build.version@+@build.number@"; - variables.CODENAME = ""; + variables.VERSION = "@build.version@+@build.number@"; + variables.CODENAME = ""; /** * Constructor diff --git a/system/reports/BaseReporter.cfc b/system/reports/BaseReporter.cfc index 0e61c13..bcd7076 100644 --- a/system/reports/BaseReporter.cfc +++ b/system/reports/BaseReporter.cfc @@ -18,7 +18,7 @@ component { */ function getPageContextResponse(){ // If running in CLI mode, we don't have a page context - if( !getFunctionList().keyExists( "pageContext" ) ){ + if ( !getFunctionList().keyExists( "pageContext" ) ) { return { "setContentType" : function(){ // do nothing @@ -38,7 +38,7 @@ component { */ function resetHTMLResponse(){ // If running in CLI mode, we don't have a page context - if( !getFunctionList().keyExists( "pageContext" ) ){ + if ( !getFunctionList().keyExists( "pageContext" ) ) { return; } // reset cfhtmlhead from integration tests From 1fd426a234823e9af2cc1690d2d5acff70e6c211 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 18:19:25 +0200 Subject: [PATCH 55/73] updated browser code for bx visualization --- bx/browser/index.bxm | 49 ++++++++++++++++++++++++++++++------------ bx/tests/test.bxs | 3 --- cfml/browser/index.cfm | 43 ++++++++++++++++++++++++++---------- 3 files changed, 67 insertions(+), 28 deletions(-) delete mode 100644 bx/tests/test.bxs diff --git a/bx/browser/index.bxm b/bx/browser/index.bxm index 5be2d1f..77d6df2 100644 --- a/bx/browser/index.bxm +++ b/bx/browser/index.bxm @@ -3,7 +3,7 @@ ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); TESTBOX_VERSION = new testBox.system.TestBox().getVersion(); // TEST LOCATIONS -> UPDATE AS YOU SEE FIT - rootMapping = "/tests/specs"; + rootMapping = "/tests/"; // Local Variables rootPath = expandPath( rootMapping ); @@ -85,12 +85,22 @@

    Availble Test Runners:

    - Below is a listing of the runners matching the "runner*.cfm" pattern. + Below is a listing of the runners matching the "runner*.(cfm|bxm)" pattern.

    - + - #runners.name# + + class="btn btn-success btn-sm my-1 mx-1" + + class="btn btn-info btn-sm my-1 mx-1" + + > + #runners.name# +
    @@ -111,7 +121,7 @@ - +
    @@ -119,20 +129,26 @@
    - - + + &##x271A; #qResults.name#
    - +
    - +
    + data-bx="true" + class="btn btn-success btn-sm my-1" + + data-bx="false" + class="btn btn-info btn-sm my-1" +
    href="#executePath & "/" & qResults.name#?method=runRemote" target="_blank" > #qResults.name#
    - - #qResults.name# -
    diff --git a/bx/tests/test.bxs b/bx/tests/test.bxs deleted file mode 100644 index 1eb6e5b..0000000 --- a/bx/tests/test.bxs +++ /dev/null @@ -1,3 +0,0 @@ -// Run all the specs in the tests.specs directory and subdirectories -r = new testbox.system.TestBox( directory="tests.specs" ) -println( r.run() ) diff --git a/cfml/browser/index.cfm b/cfml/browser/index.cfm index 284bd82..485e396 100644 --- a/cfml/browser/index.cfm +++ b/cfml/browser/index.cfm @@ -87,12 +87,22 @@

    Availble Test Runners:

    - Below is a listing of the runners matching the "runner*.cfm" pattern. + Below is a listing of the runners matching the "runner*.(cfm|bxm)" pattern.

    - + - #runners.name# + + class="btn btn-success btn-sm my-1 mx-1" + + class="btn btn-info btn-sm my-1 mx-1" + + > + #runners.name# +
    @@ -121,8 +131,14 @@ - - + + @@ -134,7 +150,7 @@ &##x271A; #qResults.name#
    - +
    - +
    + data-bx="true" + class="btn btn-success btn-sm my-1" + + data-bx="false" + class="btn btn-info btn-sm my-1" +
    href="#executePath & "/" & qResults.name#?method=runRemote" target="_blank" > #qResults.name#
    - - #qResults.name# -
    From 8f23961dc7064b6e246bc68f73000d3355c03394 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 19:09:13 +0200 Subject: [PATCH 56/73] boxlang cli runner getting fancy --- bin/run | 110 ++++++++++++++++++++++++++++++++++++++++----- system/TestBox.cfc | 1 + 2 files changed, 101 insertions(+), 10 deletions(-) diff --git a/bin/run b/bin/run index 5aae741..43b120b 100755 --- a/bin/run +++ b/bin/run @@ -2,19 +2,109 @@ /** * TestBox Runner for BoxLang + * Options: + * --test-bundles: A list of test bundles to run, defaults to `*`, ex: `path.to.bundle1,path.to.bundle2`, . Mutually exclusive with `--test-directory` + * --test-directory : A list of directories to look for tests to execute. Please use dot-notation not absolute notation. + * Mutually exclusive with `--test-bundles`. Ex: `tests.specs`. Defaults to `tests.specs` + * --test-reporter : The reporter to use. + * --test-reporter-options : The reporter options to use as a JSON struct literal. Ex: `{"verbose"=true}` + * --test-labels : A list of labels to run, defaults to `*` + * --test-excludes : A list of labels to exclude, defaults to empty + * --test-recurse : Recurse into subdirectories, defaults to `true` + * --test-filter-bundles : A list of bundles to filter by, defaults to `*` + * --test-filter-suites : A list of suites to filter by, defaults to `*` + * --test-filter-specs : A list of test names or spec names to filter by, defaults to `*` + * --test-eager-failure : Fail fast, defaults to `false` + * --test-runner-options: A JSON struct literal of options to pass into the test runner. Ex: `{"verbose"=true}` + * --test-verbose : Verbose output, defaults to `false`. This will stream the output of the status of the tests as they run. */ -executionPath = server.java.executionPath -testsDirectory = "tests.specs" -executionArgs = jsonDeserialize( server.java.executionArgs ) +// Defaults +DEFAULT_TEST_DIRECTORY = "tests.specs" +DEFAULT_REPORTER = "text" -// No Arguments, execute the entire suite -testArgs = {} -if( executionArgs.isEmpty() ){ - testArgs = { - "directory" : testsDirectory, - "recurse" : true +// CLI variables +rootPath = server.cli.executionPath +options = server.cli.parsed.options; +positional = server.cli.parsed.positionals; + +// Gather the test arguments from the options +initArgs = { + bundles = options[ "test-bundles" ] ?: [], + directory = { + mapping : options[ "test-directory" ] ?: "", + recurse : options[ "test-recurse" ] ?: true + }, + reporter = options[ "test-reporter" ] ?: DEFAULT_REPORTER, + labels = options[ "test-labels" ] ?: "", + excludes = options[ "test-excludes" ] ?: "", + options = options[ "test-runner-options" ] ?: {} +}; + +// Deserialize the JSON options +if( isSimpleValue( initArgs.options ) && initArgs.options.len() ) { + initArgs.options = jsonDeserialize( initArgs.options ); +} + +// Prepare the run arguments +runArgs = { + testBundles = options[ "test-filter-bundles" ] ?: [], + testSuites = options[ "test-filter-suites" ] ?: [], + testSpecs = options[ "test-filter-specs" ] ?: [], + eagerFailure = options[ "test-eager-failure" ] ?: false, + verbose = options[ "test-verbose" ] ?: false +}; + +// Verbose Listeners +if( runArgs.verbose ){ + runArgs.callbacks = { + onBundleStart = ( target, testResults ) => { + println( "> Testing Bundle: #target.$bx.meta.name#" ) + }, + onBundleEnd = ( target, testResults ) => { + println( "> Bundle Completed: [#target.$bx.meta.name#]" ) + println( "" ); + }, + onSuiteStart = ( target, testResults, suite ) => { + println( "+ Starting Suite: #suite.name#" ) + }, + onSuiteEnd = ( target, testResults, suite ) => { + //println( "+ Suite [#suite.name#] completed #suite.toString()#" ) + }, + onSpecStart = ( target, testResults, suite, spec ) => { + println( "+ Starting Spec/Test: #spec.name#" ) + }, + onSpecEnd = ( target, testResults, suite, spec ) => { + // println( "+ Spec [#spec.name#] completed #spec.toString()#" ) + }, } } -println( new testbox.system.TestBox( argumentCollection = testArgs ).run() ) +// If we have a positional argument, then we will assume it is a test bundle: Ex: `run my.bundle` +if( positional.len() ) { + initArgs.bundles = positional[ 1 ]; +} + +// If we don't have test-bundles or test-directory, then default to the DEFAULT_TEST_DIRECTORY +if( !initArgs.bundles.len() && !initArgs.directory.mapping.len() ) { + initArgs.directory = DEFAULT_TEST_DIRECTORY; +} + +if( runArgs.verbose ){ + startTime = getTickCount(); + println( "Starting TestBox Runner with the following init arguments" ); + println( initArgs ); +} + +tb = new testbox.system.TestBox( argumentCollection = initArgs ) + +if( runArgs.verbose ){ + println( "TestBox Runner started in #getTickCount() - startTime# ms" ); + println( "Running your tests with the following run arguments" ); + println( runArgs ); +} else{ + println( "Running your tests..." ) +} + +println( "" ) +println( tb.run( argumentCollection = runArgs ) ) diff --git a/system/TestBox.cfc b/system/TestBox.cfc index e456bd7..b194ae7 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -50,6 +50,7 @@ component accessors="true" { * @directories Same as @directory, but accepts an array or list * @reporter The type of reporter to use for the results, by default is uses our 'simple' report. You can pass in a core reporter string type or an instance of a testbox.system.reports.IReporter * @labels The list or array of labels that a suite or spec must have in order to execute. + * @excludes The list or array of labels that a suite or spec must not have in order to execute. * @options A structure of configuration options that are optionally used to configure a runner. * @bundlesPattern A globbing pattern list to match bundles to test ONLY, matches directoryList() filters! Ex: *Spec|*Test */ From 38dc7fa75472d48ad01fdf7cf08cbd8aa24171b1 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 21:50:28 +0200 Subject: [PATCH 57/73] more work for the boxlang runner --- bin/run | 156 +- bx/tests/results/TEST.properties | 17 +- bx/tests/results/latestrun.log | 2 +- bx/tests/results/report.html | 8623 +++++++++++++++++ bx/tests/results/report.json | 367 + bx/tests/results/report.txt | 8581 ++++++++++++++++ bx/tests/results/visualizer/index.html | 556 ++ bx/tests/results/visualizer/main.css | 7615 +++++++++++++++ bx/tests/results/visualizer/test-results.json | 1781 ++++ system/TestBox.cfc | 2 +- 10 files changed, 27682 insertions(+), 18 deletions(-) create mode 100644 bx/tests/results/report.html create mode 100644 bx/tests/results/report.json create mode 100644 bx/tests/results/report.txt create mode 100644 bx/tests/results/visualizer/index.html create mode 100644 bx/tests/results/visualizer/main.css create mode 100644 bx/tests/results/visualizer/test-results.json diff --git a/bin/run b/bin/run index 43b120b..cf50378 100755 --- a/bin/run +++ b/bin/run @@ -2,12 +2,20 @@ /** * TestBox Runner for BoxLang + * This script will run TestBox tests from the command line using the BoxLang CLI + * + * Examples: + * - `./testbox/bin/run` + * - `./testbox/bin/run my.bundle` + * - `./testbox/bin/run --test-directory=tests.specs` + * - `./testbox/bin/run --test-bundles=my.bundle` + * * Options: * --test-bundles: A list of test bundles to run, defaults to `*`, ex: `path.to.bundle1,path.to.bundle2`, . Mutually exclusive with `--test-directory` + * --test-bundles-pattern: A pattern to match test bundles, defaults to `"*Spec*.cfc|*Test*.cfc|*Spec*.bx|*Test*.bx"` * --test-directory : A list of directories to look for tests to execute. Please use dot-notation not absolute notation. * Mutually exclusive with `--test-bundles`. Ex: `tests.specs`. Defaults to `tests.specs` * --test-reporter : The reporter to use. - * --test-reporter-options : The reporter options to use as a JSON struct literal. Ex: `{"verbose"=true}` * --test-labels : A list of labels to run, defaults to `*` * --test-excludes : A list of labels to exclude, defaults to empty * --test-recurse : Recurse into subdirectories, defaults to `true` @@ -17,17 +25,41 @@ * --test-eager-failure : Fail fast, defaults to `false` * --test-runner-options: A JSON struct literal of options to pass into the test runner. Ex: `{"verbose"=true}` * --test-verbose : Verbose output, defaults to `false`. This will stream the output of the status of the tests as they run. + * --test-properties-summary : Generate a properties file with the summary of the test results, defaults to `true`. + * --test-properties-filename : The name of the properties file to generate, defaults to `TEST.properties` + * If true, it will write them to the report path. + * --test-reportpath : The path to write the report file to, defaults to the `/tests/results` folder by convention + * --test-write-report : Write the report to a file in the report path folder, defaults to `true` + * --test-write-json-report : Write the report as JSON alongside the requested report, defaults to `false` + * --test-write-visualizer : Write the visualizer to a file in the report path folder, defaults to `false` */ -// Defaults -DEFAULT_TEST_DIRECTORY = "tests.specs" -DEFAULT_REPORTER = "text" +function escapePropertyValue( required string value ) { + if ( len( arguments.value ) == 0 ) { + return arguments.value; + } + local.value = replaceNoCase( arguments.value, '\', '\\', 'all' ); + value = replaceNoCase( value, char(13), '\r', 'all' ); + value = replaceNoCase( value, char(10), '\n', 'all' ); + value = replaceNoCase( value, char(9), '\t', 'all' ); + value = replaceNoCase( value, char(60), '\u003c', 'all' ); + value = replaceNoCase( value, char(62), '\u003e', 'all' ); + value = replaceNoCase( value, char(47), '\u002f', 'all' ); + return replaceNoCase( value, char(32), '\u0020', 'all' ); +} // CLI variables rootPath = server.cli.executionPath options = server.cli.parsed.options; positional = server.cli.parsed.positionals; +// Defaults +DEFAULT_TEST_DIRECTORY = "tests.specs" +DEFAULT_REPORTER = "text" +DEFAULT_REPORT_PATH = rootPath & "/tests/results" +DEFAULT_PROPERTIES_FILENAME = "TEST.properties" +DEFAULT_PROPERTIES_SUMMARY = true + // Gather the test arguments from the options initArgs = { bundles = options[ "test-bundles" ] ?: [], @@ -38,7 +70,8 @@ initArgs = { reporter = options[ "test-reporter" ] ?: DEFAULT_REPORTER, labels = options[ "test-labels" ] ?: "", excludes = options[ "test-excludes" ] ?: "", - options = options[ "test-runner-options" ] ?: {} + options = options[ "test-runner-options" ] ?: {}, + bundlesPattern = options[ "test-bundles-pattern" ] ?: "" }; // Deserialize the JSON options @@ -55,6 +88,16 @@ runArgs = { verbose = options[ "test-verbose" ] ?: false }; +// Prepare the after run arguments +afterRunArgs = { + propertiesSummary = options[ "test-properties-summary" ] ?: DEFAULT_PROPERTIES_SUMMARY, + propertiesFilename = options[ "test-properties-filename" ] ?: DEFAULT_PROPERTIES_FILENAME, + reportPath = options[ "test-reportpath" ] ?: DEFAULT_REPORT_PATH, + writeReport = options[ "test-write-report" ] ?: true, + writeVisualizer = options[ "test-write-visualizer" ] ?: false, + writeJsonReport = options[ "test-write-json-report" ] ?: false +}; + // Verbose Listeners if( runArgs.verbose ){ runArgs.callbacks = { @@ -95,9 +138,7 @@ if( runArgs.verbose ){ println( "Starting TestBox Runner with the following init arguments" ); println( initArgs ); } - -tb = new testbox.system.TestBox( argumentCollection = initArgs ) - +testbox = new testbox.system.TestBox( argumentCollection = initArgs ) if( runArgs.verbose ){ println( "TestBox Runner started in #getTickCount() - startTime# ms" ); println( "Running your tests with the following run arguments" ); @@ -106,5 +147,102 @@ if( runArgs.verbose ){ println( "Running your tests..." ) } +// RUN BABY RUN println( "" ) -println( tb.run( argumentCollection = runArgs ) ) +report = testbox.run( argumentCollection = runArgs ) +testResults = testbox.getResult() +testResultsAsJson = jsonSerialize( testResults.getMemento( includeDebugBuffer = true ) ) +println( report ) + +// PREPARE RESULTS FOR REPORTING +if( !directoryExists( afterRunArgs.reportPath ) ){ + directoryCreate( afterRunArgs.reportPath ); +} else { + directoryDelete( afterRunArgs.reportPath, true ); + directoryCreate( afterRunArgs.reportPath ); +} + +// REPORTING TIME +fileWrite( + afterRunArgs.reportPath & "/latestrun.log", + "Tests ran at #dateTimeFormat( now(), 'medium' )#" +) + +// WRITE THE REPORT +if( afterRunArgs.writeReport ){ + reportFile = afterRunArgs.reportPath & "/report." + switch( initArgs.reporter ){ + case "min": case "simple" : + reportFile &= "html"; + break; + case "json": + reportFile &= "json"; + break; + case "xml": case "ANTJunit": + reportFile &= "xml"; + break; + default: + reportFile &= "txt"; + } + fileWrite( + reportFile, + report + ) +} + +// WRITE THE JSON REPORT +if( afterRunArgs.writeJsonReport ){ + fileWrite( + afterRunArgs.reportPath & "/report.json", + testResultsAsJson + ) +} + +// WRITE THE VISUALIZER +if( afterRunArgs.writeVisualizer ){ + directoryCopy( + expandPath( "/testbox/test-visualizer" ), + afterRunArgs.reportPath & "/visualizer" + ) + fileWrite( + afterRunArgs.reportPath & "/visualizer/test-results.json", + testResultsAsJson + ) +} + +// WRITE THE SUMMARIES +if( afterRunArgs.propertiesSummary ) { + errors = testResults.getTotalFail() + testResults.getTotalError(); + propertiesReport = "## TestBox Summary Report +test.datetime=#now().toISOString()# +test.#errors ? 'failed' : 'passed'#=true +test.labels=#escapePropertyValue( arrayToList( testResults.getLabels() ) )# +test.excludes=#escapePropertyValue( arrayToList( testResults.getExcludes() ) )# +test.bundles=#escapePropertyValue( initArgs.bundles )# +test.directory=#escapePropertyValue( initArgs.directory.mapping )# +total.bundles=#escapePropertyValue( testResults.getTotalBundles() )# +total.suites=#escapePropertyValue( testResults.getTotalSuites() )# +total.specs=#escapePropertyValue( testResults.getTotalSpecs() )# +total.pass=#escapePropertyValue( testResults.getTotalPass() )# +total.fail=#escapePropertyValue( testResults.getTotalFail() )# +total.error=#escapePropertyValue( testResults.getTotalError() )# +total.skipped=#escapePropertyValue( testResults.getTotalSkipped() )#"; + + if( !trim( lcase( afterRunArgs.propertiesfilename ) ).endsWith( '.properties' ) ) { + afterRunArgs.propertiesfilename &= '.properties'; + } + + fileWrite( + afterRunArgs.reportPath & "/" & afterRunArgs.propertiesFilename, + propertiesReport + ) +} + +// do stupid JUnitReport task processing, if the report is ANTJunit +if( initArgs.reporter eq "ANTJunit" ){ + // Produce individual test files due to how ANT JUnit report parses these. + xmlReport = xmlParse( report ); + for( thisSuite in xmlReport.testsuites.XMLChildren ){ + fileWrite( afterRunArgs.reportpath & "/TEST-" & thisSuite.XMLAttributes.package & ".xml", toString( thisSuite ) ); + } +} diff --git a/bx/tests/results/TEST.properties b/bx/tests/results/TEST.properties index 3bb4488..655619b 100644 --- a/bx/tests/results/TEST.properties +++ b/bx/tests/results/TEST.properties @@ -1,11 +1,14 @@ +# TestBox Summary Report +test.datetime=2024-09-12T21:46:02.727973+02:00 test.passed=true test.labels= -test.bundles= -test.directory=test.specs -total.bundles=1 -total.suites=1 -total.specs=7 -total.pass=4 +test.excludes= +test.bundles=tests.specs.BDDTest +test.directory= +total.bundles=3 +total.suites=3 +total.specs=13 +total.pass=9 total.fail=0 total.error=0 -total.skipped=3 \ No newline at end of file +total.skipped=4 \ No newline at end of file diff --git a/bx/tests/results/latestrun.log b/bx/tests/results/latestrun.log index 29ee286..8882b04 100644 --- a/bx/tests/results/latestrun.log +++ b/bx/tests/results/latestrun.log @@ -1 +1 @@ -Tests ran at 12-23-2013 04:21:49 PM \ No newline at end of file +Tests ran at Sep 12, 2024, 9:46:02 PM \ No newline at end of file diff --git a/bx/tests/results/report.html b/bx/tests/results/report.html new file mode 100644 index 0000000..8e7f5b1 --- /dev/null +++ b/bx/tests/results/report.html @@ -0,0 +1,8623 @@ + + + + + + + + + + Pass: 9 Fail: 0 Errors: 0 + + + + + + + + + +
    + + +
    + +
    + +
    + + v@build.version@+@build.number@ +
    +
    + +
    + +
    + + Run All Tests + + + +
    +
    +
    + + + + + +
    + + +
    +
    +

    Test Results Stats (1,164 ms)

    +
    +
    + Bundles:3 + Suites:3 + Specs:13 +
    + + +
    + + BoxLang + 1.0.0-snapshot+2143 + +
    +
    +
    + +
    + + Pass: 9 + + + Failures: 0 + + + Errors: 0 + + + Skipped: 4 + + + Reset + +
    +
    + + +
    + + + + + + + +
    + + + +
    + + + + + + +
    + + + +
    + + + + + + +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/bx/tests/results/report.json b/bx/tests/results/report.json new file mode 100644 index 0000000..07dc889 --- /dev/null +++ b/bx/tests/results/report.json @@ -0,0 +1,367 @@ +{ + "totalDuration" : 1392, + "endTime" : 1726170362550, + "coverage" : { + "data" : { }, + "enabled" : false + }, + "totalPass" : 9, + "totalSkipped" : 4, + "excludes" : [ ], + "resultID" : "", + "labels" : [ ], + "totalSpecs" : 13, + "CFMLEngine" : "BoxLang", + "bundleStats" : [ { + "path" : "tests.specs.BDDTest", + "totalDuration" : 665, + "endTime" : 1726170362320, + "totalPass" : 4, + "debugBuffer" : [ ], + "totalSkipped" : 2, + "globalException" : "", + "id" : "53cd5a1b6250181e24237c11368f34bd", + "totalSpecs" : 6, + "suiteStats" : [ { + "totalDuration" : 638, + "endTime" : 1726170362312, + "totalPass" : 4, + "specStats" : [ { + "totalDuration" : 146, + "endTime" : 1726170361831, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "c4604d3b7e2f512c5c9ac1a03144223a", + "labels" : [ ], + "displayName" : "can test for equality", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can test for equality", + "failStacktrace" : "", + "startTime" : 1726170361685, + "failOrigin" : { } + }, { + "totalDuration" : 54, + "endTime" : 1726170361891, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "02cec20c140811c9e93c78bdf65928d5", + "labels" : [ ], + "displayName" : "can have more than one expectation to test", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have more than one expectation to test", + "failStacktrace" : "", + "startTime" : 1726170361837, + "failOrigin" : { } + }, { + "totalDuration" : 307, + "endTime" : 1726170362199, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "5415016e3254f610b333428c94708af0", + "labels" : [ ], + "displayName" : "can have negative expectations", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have negative expectations", + "failStacktrace" : "", + "startTime" : 1726170361892, + "failOrigin" : { } + }, { + "totalDuration" : 9, + "endTime" : 1726170362212, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "867c21692e98bfb08dd1265c0d89f50e", + "labels" : [ ], + "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failStacktrace" : "", + "startTime" : 1726170362203, + "failOrigin" : { } + }, { + "totalDuration" : 5, + "endTime" : 1726170362219, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "4f30c954a9638b92118103d04facaaed", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Windows Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Windows Only)", + "failStacktrace" : "", + "startTime" : 1726170362214, + "failOrigin" : { } + }, { + "totalDuration" : 83, + "endTime" : 1726170362310, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Mac Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Mac Only)", + "failStacktrace" : "", + "startTime" : 1726170362227, + "failOrigin" : { } + } ], + "status" : "Passed", + "totalSkipped" : 2, + "id" : "601a1895b68b67f4d9a549cd363dcd29", + "totalSpecs" : 6, + "bundleID" : "53cd5a1b6250181e24237c11368f34bd", + "suiteStats" : [ ], + "name" : "A spec", + "startTime" : 1726170361674, + "parentID" : "", + "totalFail" : 0, + "totalError" : 0 + } ], + "name" : "tests.specs.BDDTest", + "startTime" : 1726170361655, + "totalFail" : 0, + "totalError" : 0, + "totalSuites" : 1 + }, { + "path" : "tests.specs.BDDTest", + "totalDuration" : 77, + "endTime" : 1726170362465, + "totalPass" : 4, + "debugBuffer" : [ ], + "totalSkipped" : 2, + "globalException" : "", + "id" : "c9f321129970f11c598a6ed3549dd794", + "totalSpecs" : 6, + "suiteStats" : [ { + "totalDuration" : 70, + "endTime" : 1726170362463, + "totalPass" : 4, + "specStats" : [ { + "totalDuration" : 12, + "endTime" : 1726170362406, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "c4604d3b7e2f512c5c9ac1a03144223a", + "labels" : [ ], + "displayName" : "can test for equality", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can test for equality", + "failStacktrace" : "", + "startTime" : 1726170362394, + "failOrigin" : { } + }, { + "totalDuration" : 14, + "endTime" : 1726170362423, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "02cec20c140811c9e93c78bdf65928d5", + "labels" : [ ], + "displayName" : "can have more than one expectation to test", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have more than one expectation to test", + "failStacktrace" : "", + "startTime" : 1726170362409, + "failOrigin" : { } + }, { + "totalDuration" : 23, + "endTime" : 1726170362449, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "5415016e3254f610b333428c94708af0", + "labels" : [ ], + "displayName" : "can have negative expectations", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have negative expectations", + "failStacktrace" : "", + "startTime" : 1726170362426, + "failOrigin" : { } + }, { + "totalDuration" : 1, + "endTime" : 1726170362452, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "867c21692e98bfb08dd1265c0d89f50e", + "labels" : [ ], + "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failStacktrace" : "", + "startTime" : 1726170362451, + "failOrigin" : { } + }, { + "totalDuration" : 1, + "endTime" : 1726170362454, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "4f30c954a9638b92118103d04facaaed", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Windows Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Windows Only)", + "failStacktrace" : "", + "startTime" : 1726170362453, + "failOrigin" : { } + }, { + "totalDuration" : 7, + "endTime" : 1726170362461, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Mac Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Mac Only)", + "failStacktrace" : "", + "startTime" : 1726170362454, + "failOrigin" : { } + } ], + "status" : "Passed", + "totalSkipped" : 2, + "id" : "601a1895b68b67f4d9a549cd363dcd29", + "totalSpecs" : 6, + "bundleID" : "c9f321129970f11c598a6ed3549dd794", + "suiteStats" : [ ], + "name" : "A spec", + "startTime" : 1726170362393, + "parentID" : "", + "totalFail" : 0, + "totalError" : 0 + } ], + "name" : "tests.specs.BDDTest", + "startTime" : 1726170362388, + "totalFail" : 0, + "totalError" : 0, + "totalSuites" : 1 + }, { + "path" : "tests.specs.MyFirstSpec", + "totalDuration" : 19, + "endTime" : 1726170362548, + "totalPass" : 1, + "debugBuffer" : [ ], + "totalSkipped" : 0, + "globalException" : "", + "id" : "ccbba9fede132cb2e9989b5f01873fde", + "totalSpecs" : 1, + "suiteStats" : [ { + "totalDuration" : 11, + "endTime" : 1726170362547, + "totalPass" : 1, + "specStats" : [ { + "totalDuration" : 9, + "endTime" : 1726170362546, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "7d7576ae118b6259767aab7a2485831c", + "labels" : [ ], + "displayName" : "it can add", + "failExtendedInfo" : "", + "suiteID" : "05b76e295da5568e4679dd79bbea52db", + "failDetail" : "", + "name" : "it can add", + "failStacktrace" : "", + "startTime" : 1726170362537, + "failOrigin" : { } + } ], + "status" : "Passed", + "totalSkipped" : 0, + "id" : "05b76e295da5568e4679dd79bbea52db", + "totalSpecs" : 1, + "bundleID" : "ccbba9fede132cb2e9989b5f01873fde", + "suiteStats" : [ ], + "name" : "My First Test", + "startTime" : 1726170362536, + "parentID" : "", + "totalFail" : 0, + "totalError" : 0 + } ], + "name" : "tests.specs.MyFirstSpec", + "startTime" : 1726170362529, + "totalFail" : 0, + "totalError" : 0, + "totalSuites" : 1 + } ], + "totalBundles" : 3, + "startTime" : 1726170361158, + "totalFail" : 0, + "totalError" : 0, + "version" : "@build.version@", + "totalSuites" : 3, + "CFMLEngineVersion" : "1.0.0-snapshot+2143" +}" +} \ No newline at end of file diff --git a/bx/tests/results/report.txt b/bx/tests/results/report.txt new file mode 100644 index 0000000..e41964e --- /dev/null +++ b/bx/tests/results/report.txt @@ -0,0 +1,8581 @@ +█▓▒▒░░░ TestBox v@build.version@+@build.number@ ░░░▒▒▓█ +_____________________________________________________________ +  +√tests.specs.BDDTest (665 ms) +[Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6] +  +( √ ) A spec +    ( √ ) can test for equality (146 ms) +    ( √ ) can have more than one expectation to test (54 ms) +    ( √ ) can have negative expectations (307 ms) +    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (9 ms) +    ( - ) can have tests that execute if the right environment exists (Windows Only) (5 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (83 ms) +_____________________________________________________________ +  +√tests.specs.BDDTest (77 ms) +[Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6] +  +( √ ) A spec +    ( √ ) can test for equality (12 ms) +    ( √ ) can have more than one expectation to test (14 ms) +    ( √ ) can have negative expectations (23 ms) +    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (1 ms) +    ( - ) can have tests that execute if the right environment exists (Windows Only) (1 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (7 ms) +_____________________________________________________________ +  +√tests.specs.MyFirstSpec (19 ms) +[Passed: 1] [Failed: 0] [Errors: 0] [Skipped: 0] [Suites/Specs: 1/1] +  +( √ ) My First Test +    ( √ ) it can add (9 ms) +  +  +================================================================================= +Final Stats +================================================================================= +  +[Passed: 9] [Failed: 0] [Errors: 0] [Skipped: 4] [Bundles/Suites/Specs: 3/3/13] +  +TestBox:        v@build.version@+@build.number@ +Duration:       1392 ms +CFML Engine:    BoxLang 1.0.0-snapshot+2143 +Labels:         None +  +√ Passed    - Skipped    !! Exception/Error    X Failureure, h5, h6 { + margin-top: 0; + margin-bottom: 0; } + +p { + margin-top: 0; + margin-bottom: 1rem; } + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + text-decoration-skip-ink: none; } + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; } + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; } + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; } + +dt { + font-weight: 700; } + +dd { + margin-bottom: .5rem; + margin-left: 0; } + +blockquote { + margin: 0 0 1rem; } + +b, +strong { + font-weight: bolder; } + +small { + font-size: 80%; } + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sub { + bottom: -.25em; } + +sup { + top: -.5em; } + +a { + color: #3A9ABF; + text-decoration: none; + background-color: transparent; } + a:hover { + color: #286b84; + text-decoration: underline; } + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):focus { + outline: 0; } + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; } + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; } + +figure { + margin: 0 0 1rem; } + +img { + vertical-align: middle; + border-style: none; } + +svg { + overflow: hidden; + vertical-align: middle; } + +table { + border-collapse: collapse; } + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; } + +th { + text-align: inherit; } + +label { + display: inline-block; + margin-bottom: 0.5rem; } + +button { + border-radius: 0; } + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; } + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +button, +input { + overflow: visible; } + +button, +select { + text-transform: none; } + +select { + word-wrap: normal; } + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; } + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; } + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; } + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; } + +textarea { + overflow: auto; + resize: vertical; } + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; } + +progress { + vertical-align: baseline; } + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; } + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; } + +output { + display: inline-block; } + +summary { + display: list-item; + cursor: pointer; } + +template { + display: none; } + +[hidden] { + display: none !important; } + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0; + font-weight: 500; + line-height: 1.2; } + +h1, .h1 { + font-size: 2rem; } + +h2, .h2 { + font-size: 1.5rem; } + +h3, .h3 { + font-size: 1.25rem; } + +h4, .h4 { + font-size: 1rem; } + +h5, .h5 { + font-size: .85rem; } + +h6, .h6 { + font-size: .5rem; } + +.lead { + font-size: 1.25rem; + font-weight: 300; } + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; } + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; } + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; } + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; } + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); } + +small, +.small { + font-size: 80%; + font-weight: 400; } + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; } + +.list-unstyled { + padding-left: 0; + list-style: none; } + +.list-inline { + padding-left: 0; + list-style: none; } + +.list-inline-item { + display: inline-block; } + .list-inline-item:not(:last-child) { + margin-right: 0.5rem; } + +.initialism { + font-size: 90%; + text-transform: uppercase; } + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; } + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; } + .blockquote-footer::before { + content: "\2014\00A0"; } + +.img-fluid { + max-width: 100%; + height: auto; } + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; } + +.figure { + display: inline-block; } + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; } + +.figure-caption { + font-size: 90%; + color: #6c757d; } + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; } + a > code { + color: inherit; } + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; } + +pre { + display: block; + font-size: 87.5%; + color: #212529; } + pre code { + font-size: inherit; + color: inherit; + word-break: normal; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; } + @media (min-width: 576px) { + .container { + max-width: 540px; } } + @media (min-width: 768px) { + .container { + max-width: 720px; } } + @media (min-width: 992px) { + .container { + max-width: 960px; } } + @media (min-width: 1200px) { + .container { + max-width: 1140px; } } + +.container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; } + +.row { + display: flex; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; } + +.no-gutters { + margin-right: 0; + margin-left: 0; } + .no-gutters > .col, + .no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; } + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; } + +.col { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + +.col-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + +.col-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + +.col-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + +.col-3 { + flex: 0 0 25%; + max-width: 25%; } + +.col-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + +.col-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + +.col-6 { + flex: 0 0 50%; + max-width: 50%; } + +.col-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + +.col-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + +.col-9 { + flex: 0 0 75%; + max-width: 75%; } + +.col-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + +.col-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + +.col-12 { + flex: 0 0 100%; + max-width: 100%; } + +.order-first { + order: -1; } + +.order-last { + order: 13; } + +.order-0 { + order: 0; } + +.order-1 { + order: 1; } + +.order-2 { + order: 2; } + +.order-3 { + order: 3; } + +.order-4 { + order: 4; } + +.order-5 { + order: 5; } + +.order-6 { + order: 6; } + +.order-7 { + order: 7; } + +.order-8 { + order: 8; } + +.order-9 { + order: 9; } + +.order-10 { + order: 10; } + +.order-11 { + order: 11; } + +.order-12 { + order: 12; } + +.offset-1 { + margin-left: 8.3333333333%; } + +.offset-2 { + margin-left: 16.6666666667%; } + +.offset-3 { + margin-left: 25%; } + +.offset-4 { + margin-left: 33.3333333333%; } + +.offset-5 { + margin-left: 41.6666666667%; } + +.offset-6 { + margin-left: 50%; } + +.offset-7 { + margin-left: 58.3333333333%; } + +.offset-8 { + margin-left: 66.6666666667%; } + +.offset-9 { + margin-left: 75%; } + +.offset-10 { + margin-left: 83.3333333333%; } + +.offset-11 { + margin-left: 91.6666666667%; } + +@media (min-width: 576px) { + .col-sm { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-sm-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-sm-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-sm-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-sm-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-sm-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-sm-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-sm-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-sm-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-sm-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-sm-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-sm-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-sm-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-sm-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-sm-first { + order: -1; } + + .order-sm-last { + order: 13; } + + .order-sm-0 { + order: 0; } + + .order-sm-1 { + order: 1; } + + .order-sm-2 { + order: 2; } + + .order-sm-3 { + order: 3; } + + .order-sm-4 { + order: 4; } + + .order-sm-5 { + order: 5; } + + .order-sm-6 { + order: 6; } + + .order-sm-7 { + order: 7; } + + .order-sm-8 { + order: 8; } + + .order-sm-9 { + order: 9; } + + .order-sm-10 { + order: 10; } + + .order-sm-11 { + order: 11; } + + .order-sm-12 { + order: 12; } + + .offset-sm-0 { + margin-left: 0; } + + .offset-sm-1 { + margin-left: 8.3333333333%; } + + .offset-sm-2 { + margin-left: 16.6666666667%; } + + .offset-sm-3 { + margin-left: 25%; } + + .offset-sm-4 { + margin-left: 33.3333333333%; } + + .offset-sm-5 { + margin-left: 41.6666666667%; } + + .offset-sm-6 { + margin-left: 50%; } + + .offset-sm-7 { + margin-left: 58.3333333333%; } + + .offset-sm-8 { + margin-left: 66.6666666667%; } + + .offset-sm-9 { + margin-left: 75%; } + + .offset-sm-10 { + margin-left: 83.3333333333%; } + + .offset-sm-11 { + margin-left: 91.6666666667%; } } +@media (min-width: 768px) { + .col-md { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-md-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-md-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-md-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-md-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-md-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-md-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-md-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-md-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-md-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-md-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-md-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-md-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-md-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-md-first { + order: -1; } + + .order-md-last { + order: 13; } + + .order-md-0 { + order: 0; } + + .order-md-1 { + order: 1; } + + .order-md-2 { + order: 2; } + + .order-md-3 { + order: 3; } + + .order-md-4 { + order: 4; } + + .order-md-5 { + order: 5; } + + .order-md-6 { + order: 6; } + + .order-md-7 { + order: 7; } + + .order-md-8 { + order: 8; } + + .order-md-9 { + order: 9; } + + .order-md-10 { + order: 10; } + + .order-md-11 { + order: 11; } + + .order-md-12 { + order: 12; } + + .offset-md-0 { + margin-left: 0; } + + .offset-md-1 { + margin-left: 8.3333333333%; } + + .offset-md-2 { + margin-left: 16.6666666667%; } + + .offset-md-3 { + margin-left: 25%; } + + .offset-md-4 { + margin-left: 33.3333333333%; } + + .offset-md-5 { + margin-left: 41.6666666667%; } + + .offset-md-6 { + margin-left: 50%; } + + .offset-md-7 { + margin-left: 58.3333333333%; } + + .offset-md-8 { + margin-left: 66.6666666667%; } + + .offset-md-9 { + margin-left: 75%; } + + .offset-md-10 { + margin-left: 83.3333333333%; } + + .offset-md-11 { + margin-left: 91.6666666667%; } } +@media (min-width: 992px) { + .col-lg { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-lg-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-lg-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-lg-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-lg-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-lg-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-lg-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-lg-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-lg-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-lg-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-lg-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-lg-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-lg-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-lg-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-lg-first { + order: -1; } + + .order-lg-last { + order: 13; } + + .order-lg-0 { + order: 0; } + + .order-lg-1 { + order: 1; } + + .order-lg-2 { + order: 2; } + + .order-lg-3 { + order: 3; } + + .order-lg-4 { + order: 4; } + + .order-lg-5 { + order: 5; } + + .order-lg-6 { + order: 6; } + + .order-lg-7 { + order: 7; } + + .order-lg-8 { + order: 8; } + + .order-lg-9 { + order: 9; } + + .order-lg-10 { + order: 10; } + + .order-lg-11 { + order: 11; } + + .order-lg-12 { + order: 12; } + + .offset-lg-0 { + margin-left: 0; } + + .offset-lg-1 { + margin-left: 8.3333333333%; } + + .offset-lg-2 { + margin-left: 16.6666666667%; } + + .offset-lg-3 { + margin-left: 25%; } + + .offset-lg-4 { + margin-left: 33.3333333333%; } + + .offset-lg-5 { + margin-left: 41.6666666667%; } + + .offset-lg-6 { + margin-left: 50%; } + + .offset-lg-7 { + margin-left: 58.3333333333%; } + + .offset-lg-8 { + margin-left: 66.6666666667%; } + + .offset-lg-9 { + margin-left: 75%; } + + .offset-lg-10 { + margin-left: 83.3333333333%; } + + .offset-lg-11 { + margin-left: 91.6666666667%; } } +@media (min-width: 1200px) { + .col-xl { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-xl-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-xl-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-xl-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-xl-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-xl-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-xl-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-xl-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-xl-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-xl-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-xl-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-xl-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-xl-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-xl-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-xl-first { + order: -1; } + + .order-xl-last { + order: 13; } + + .order-xl-0 { + order: 0; } + + .order-xl-1 { + order: 1; } + + .order-xl-2 { + order: 2; } + + .order-xl-3 { + order: 3; } + + .order-xl-4 { + order: 4; } + + .order-xl-5 { + order: 5; } + + .order-xl-6 { + order: 6; } + + .order-xl-7 { + order: 7; } + + .order-xl-8 { + order: 8; } + + .order-xl-9 { + order: 9; } + + .order-xl-10 { + order: 10; } + + .order-xl-11 { + order: 11; } + + .order-xl-12 { + order: 12; } + + .offset-xl-0 { + margin-left: 0; } + + .offset-xl-1 { + margin-left: 8.3333333333%; } + + .offset-xl-2 { + margin-left: 16.6666666667%; } + + .offset-xl-3 { + margin-left: 25%; } + + .offset-xl-4 { + margin-left: 33.3333333333%; } + + .offset-xl-5 { + margin-left: 41.6666666667%; } + + .offset-xl-6 { + margin-left: 50%; } + + .offset-xl-7 { + margin-left: 58.3333333333%; } + + .offset-xl-8 { + margin-left: 66.6666666667%; } + + .offset-xl-9 { + margin-left: 75%; } + + .offset-xl-10 { + margin-left: 83.3333333333%; } + + .offset-xl-11 { + margin-left: 91.6666666667%; } } +.table { + width: 100%; + margin-bottom: 1rem; + color: #212529; } + .table th, + .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; } + .table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; } + .table tbody + tbody { + border-top: 2px solid #dee2e6; } + +.table-sm th, +.table-sm td { + padding: 0.3rem; } + +.table-bordered { + border: 1px solid #dee2e6; } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6; } + .table-bordered thead th, + .table-bordered thead td { + border-bottom-width: 2px; } + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; } + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); } + +.table-hover tbody tr:hover { + color: #212529; + background-color: rgba(0, 0, 0, 0.075); } + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #c8e3ed; } +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #99cade; } + +.table-hover .table-primary:hover { + background-color: #b5d9e7; } + .table-hover .table-primary:hover > td, + .table-hover .table-primary:hover > th { + background-color: #b5d9e7; } + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d6d8db; } +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #b3b7bb; } + +.table-hover .table-secondary:hover { + background-color: #c8cbcf; } + .table-hover .table-secondary:hover > td, + .table-hover .table-secondary:hover > th { + background-color: #c8cbcf; } + +.table-success, +.table-success > th, +.table-success > td { + background-color: #d8f1c8; } +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #b7e498; } + +.table-hover .table-success:hover { + background-color: #caecb4; } + .table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { + background-color: #caecb4; } + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; } +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #86cfda; } + +.table-hover .table-info:hover { + background-color: #abdde5; } + .table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { + background-color: #abdde5; } + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #feedc4; } +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #fede92; } + +.table-hover .table-warning:hover { + background-color: #fee5ab; } + .table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { + background-color: #fee5ab; } + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f4c7cc; } +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #eb97a0; } + +.table-hover .table-danger:hover { + background-color: #f0b2b9; } + .table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { + background-color: #f0b2b9; } + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; } +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; } + +.table-hover .table-light:hover { + background-color: #ececf6; } + .table-hover .table-light:hover > td, + .table-hover .table-light:hover > th { + background-color: #ececf6; } + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; } +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; } + +.table-hover .table-dark:hover { + background-color: #b9bbbe; } + .table-hover .table-dark:hover > td, + .table-hover .table-dark:hover > th { + background-color: #b9bbbe; } + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); } + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); } + .table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); } + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; } +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; } + +.table-dark { + color: #fff; + background-color: #343a40; } + .table-dark th, + .table-dark td, + .table-dark thead th { + border-color: #454d55; } + .table-dark.table-bordered { + border: 0; } + .table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); } + .table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); } + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-sm > .table-bordered { + border: 0; } } +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-md > .table-bordered { + border: 0; } } +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-lg > .table-bordered { + border: 0; } } +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-xl > .table-bordered { + border: 0; } } +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive > .table-bordered { + border: 0; } + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; } } + .form-control::-ms-expand { + background-color: transparent; + border: 0; } + .form-control:focus { + color: #495057; + background-color: #fff; + border-color: #99cce0; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .form-control::placeholder { + color: #6c757d; + opacity: 1; } + .form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; } + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; } + +.form-control-file, +.form-control-range { + display: block; + width: 100%; } + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; } + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; } + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; } + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; } + .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; } + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +select.form-control[size], select.form-control[multiple] { + height: auto; } + +textarea.form-control { + height: auto; } + +.form-group { + margin-bottom: 1rem; } + +.form-text { + display: block; + margin-top: 0.25rem; } + +.form-row { + display: flex; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; } + .form-row > .col, + .form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; } + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; } + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; } + .form-check-input:disabled ~ .form-check-label { + color: #6c757d; } + +.form-check-label { + margin-bottom: 0; } + +.form-check-inline { + display: inline-flex; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; } + .form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; } + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #75CC39; } + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #212529; + background-color: rgba(117, 204, 57, 0.9); + border-radius: 0.25rem; } + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #75CC39; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #75CC39; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } + .was-validated .form-control:valid ~ .valid-feedback, + .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, + .form-control.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } + +.was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #75CC39; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #75CC39; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } + .was-validated .custom-select:valid ~ .valid-feedback, + .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, + .custom-select.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #75CC39; } +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #75CC39; } + .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #75CC39; } +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; } +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #91d662; + background-color: #91d662; } +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #75CC39; } + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #75CC39; } +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; } +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #75CC39; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #D93749; } + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(217, 55, 73, 0.9); + border-radius: 0.25rem; } + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #D93749; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #D93749; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } + .was-validated .form-control:invalid ~ .invalid-feedback, + .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, + .form-control.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } + +.was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #D93749; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #D93749; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } + .was-validated .custom-select:invalid ~ .invalid-feedback, + .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, + .custom-select.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #D93749; } +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #D93749; } + .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #D93749; } +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; } +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e16270; + background-color: #e16270; } +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #D93749; } + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #D93749; } +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; } +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #D93749; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } + +.form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; } + .form-inline .form-check { + width: 100%; } + @media (min-width: 576px) { + .form-inline label { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 0; } + .form-inline .form-group { + display: flex; + flex: 0 0 auto; + flex-flow: row wrap; + align-items: center; + margin-bottom: 0; } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .form-inline .form-control-plaintext { + display: inline-block; } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; } + .form-inline .form-check { + display: flex; + align-items: center; + justify-content: center; + width: auto; + padding-left: 0; } + .form-inline .form-check-input { + position: relative; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; } + .form-inline .custom-control { + align-items: center; + justify-content: center; } + .form-inline .custom-control-label { + margin-bottom: 0; } } + +.btn { + cursor: pointer; + display: inline-block; + font-weight: 400; + color: #212529; + text-align: center; + vertical-align: middle; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .btn { + transition: none; } } + .btn:hover { + color: #212529; + text-decoration: none; } + .btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .btn.disabled, .btn:disabled { + opacity: 0.65; } + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; } + +.btn-primary { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-primary:hover { + color: #fff; + background-color: #3182a2; + border-color: #2e7a98; } + .btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } + .btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #2e7a98; + border-color: #2b738e; } + .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } + +.btn-secondary { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62; } + .btn-secondary:focus, .btn-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } + .btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b; } + .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } + +.btn-success { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-success:hover { + color: #fff; + background-color: #63b12e; + border-color: #5ea72b; } + .btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } + .btn-success.disabled, .btn-success:disabled { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #5ea72b; + border-color: #589d28; } + .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; } + .btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + .btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; } + .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + +.btn-warning { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-warning:hover { + color: #212529; + background-color: #fdb508; + border-color: #f6ae02; } + .btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } + .btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #f6ae02; + border-color: #e9a502; } + .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } + +.btn-danger { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-danger:hover { + color: #fff; + background-color: #c42537; + border-color: #ba2334; } + .btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } + .btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #ba2334; + border-color: #af2131; } + .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; } + .btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + .btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; } + .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; } + .btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + .btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; } + .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + +.btn-outline-primary { + color: #3A9ABF; + border-color: #3A9ABF; } + .btn-outline-primary:hover { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } + .btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #3A9ABF; + background-color: transparent; } + .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } + +.btn-outline-secondary { + color: #6C757D; + border-color: #6C757D; } + .btn-outline-secondary:hover { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #6C757D; + background-color: transparent; } + .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + +.btn-outline-success { + color: #75CC39; + border-color: #75CC39; } + .btn-outline-success:hover { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } + .btn-outline-success.disabled, .btn-outline-success:disabled { + color: #75CC39; + background-color: transparent; } + .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } + +.btn-outline-info { + color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + .btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; } + .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-warning { + color: #FDC02E; + border-color: #FDC02E; } + .btn-outline-warning:hover { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } + .btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #FDC02E; + background-color: transparent; } + .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } + +.btn-outline-danger { + color: #D93749; + border-color: #D93749; } + .btn-outline-danger:hover { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } + .btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #D93749; + background-color: transparent; } + .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + .btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; } + .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; } + .btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + .btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; } + .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.btn-link { + font-weight: 400; + color: #3A9ABF; + text-decoration: none; } + .btn-link:hover { + color: #286b84; + text-decoration: underline; } + .btn-link:focus, .btn-link.focus { + text-decoration: underline; + box-shadow: none; } + .btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; } + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.btn-block { + display: block; + width: 100%; } + .btn-block + .btn-block { + margin-top: 0.5rem; } + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; } + +.fade { + transition: opacity 0.15s linear; } + @media (prefers-reduced-motion: reduce) { + .fade { + transition: none; } } + .fade:not(.show) { + opacity: 0; } + +.collapse:not(.show) { + display: none; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; } + @media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; } } + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; } + +.dropdown-toggle { + white-space: nowrap; } + .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; } + .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; } + +.dropdown-menu-left { + right: auto; + left: 0; } + +.dropdown-menu-right { + right: 0; + left: auto; } + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; } + + .dropdown-menu-sm-right { + right: 0; + left: auto; } } +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; } + + .dropdown-menu-md-right { + right: 0; + left: auto; } } +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; } + + .dropdown-menu-lg-right { + right: 0; + left: auto; } } +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; } + + .dropdown-menu-xl-right { + right: 0; + left: auto; } } +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; } +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; } +.dropup .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; } +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; } +.dropright .dropdown-toggle:empty::after { + margin-left: 0; } +.dropright .dropdown-toggle::after { + vertical-align: 0; } + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; } +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; } +.dropleft .dropdown-toggle::after { + display: none; } +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; } +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; } +.dropleft .dropdown-toggle::before { + vertical-align: 0; } + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; } + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; } + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; } + .dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; } + .dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #3A9ABF; } + .dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; } + +.dropdown-menu.show { + display: block; } + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; } + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; } + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { + z-index: 1; } + .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 1; } + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .btn-toolbar .input-group { + width: auto; } + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; } +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; } + .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { + margin-left: 0; } + .dropleft .dropdown-toggle-split::before { + margin-right: 0; } + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; } + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; } + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; } + .btn-group-vertical > .btn, + .btn-group-vertical > .btn-group { + width: 100%; } + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; } + .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), + .btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; } + .btn-group-toggle > .btn input[type="radio"], + .btn-group-toggle > .btn input[type="checkbox"], + .btn-group-toggle > .btn-group > .btn input[type="radio"], + .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; } + .input-group > .form-control, + .input-group > .form-control-plaintext, + .input-group > .custom-select, + .input-group > .custom-file { + position: relative; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; } + .input-group > .form-control + .form-control, + .input-group > .form-control + .custom-select, + .input-group > .form-control + .custom-file, + .input-group > .form-control-plaintext + .form-control, + .input-group > .form-control-plaintext + .custom-select, + .input-group > .form-control-plaintext + .custom-file, + .input-group > .custom-select + .form-control, + .input-group > .custom-select + .custom-select, + .input-group > .custom-select + .custom-file, + .input-group > .custom-file + .form-control, + .input-group > .custom-file + .custom-select, + .input-group > .custom-file + .custom-file { + margin-left: -1px; } + .input-group > .form-control:focus, + .input-group > .custom-select:focus, + .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; } + .input-group > .custom-file .custom-file-input:focus { + z-index: 4; } + .input-group > .form-control:not(:last-child), + .input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .input-group > .form-control:not(:first-child), + .input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .input-group > .custom-file { + display: flex; + align-items: center; } + .input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.input-group-prepend, +.input-group-append { + display: flex; } + .input-group-prepend .btn, + .input-group-append .btn { + position: relative; + z-index: 2; } + .input-group-prepend .btn:focus, + .input-group-append .btn:focus { + z-index: 3; } + .input-group-prepend .btn + .btn, + .input-group-prepend .btn + .input-group-text, + .input-group-prepend .input-group-text + .input-group-text, + .input-group-prepend .input-group-text + .btn, + .input-group-append .btn + .btn, + .input-group-append .btn + .input-group-text, + .input-group-append .input-group-text + .input-group-text, + .input-group-append .input-group-text + .btn { + margin-left: -1px; } + +.input-group-prepend { + margin-right: -1px; } + +.input-group-append { + margin-left: -1px; } + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; } + .input-group-text input[type="radio"], + .input-group-text input[type="checkbox"] { + margin-top: 0; } + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); } + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); } + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; } + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; } + +.custom-control-inline { + display: inline-flex; + margin-right: 1rem; } + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; } + .custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #3A9ABF; + background-color: #3A9ABF; } + .custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #99cce0; } + .custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #c0e0ec; + border-color: #c0e0ec; } + .custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; } + .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; } + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; } + .custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; } + .custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; } + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; } +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #3A9ABF; + background-color: #3A9ABF; } +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } + +.custom-radio .custom-control-label::before { + border-radius: 50%; } +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } + +.custom-switch { + padding-left: 2.25rem; } + .custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; } + .custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; } } + .custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + transform: translateX(0.75rem); } + .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; + appearance: none; } + .custom-select:focus { + border-color: #99cce0; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; } + .custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; } + .custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; } + .custom-select::-ms-expand { + display: none; } + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; } + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; } + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; } + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; } + .custom-file-input:focus ~ .custom-file-label { + border-color: #99cce0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-file-input:disabled ~ .custom-file-label { + background-color: #e9ecef; } + .custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; } + .custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); } + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; } + .custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0.25rem 0.25rem 0; } + +.custom-range { + width: 100%; + height: calc(1rem + 0.4rem); + padding: 0; + background-color: transparent; + appearance: none; } + .custom-range:focus { + outline: none; } + .custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-range::-moz-focus-outer { + border: 0; } + .custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #3A9ABF; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; } + @media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + transition: none; } } + .custom-range::-webkit-slider-thumb:active { + background-color: #c0e0ec; } + .custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; } + .custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #3A9ABF; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; } + @media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + transition: none; } } + .custom-range::-moz-range-thumb:active { + background-color: #c0e0ec; } + .custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; } + .custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #3A9ABF; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; } + @media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + transition: none; } } + .custom-range::-ms-thumb:active { + background-color: #c0e0ec; } + .custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; } + .custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; } + .custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; } + .custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; } + .custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; } + .custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd; } + .custom-range:disabled::-moz-range-track { + cursor: default; } + .custom-range:disabled::-ms-thumb { + background-color: #adb5bd; } + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none; } } + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + +.nav-link { + display: block; + padding: 0.5rem 1rem; } + .nav-link:hover, .nav-link:focus { + text-decoration: none; } + .nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; } + +.nav-tabs { + border-bottom: 1px solid #dee2e6; } + .nav-tabs .nav-item { + margin-bottom: -1px; } + .nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; } + .nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; } + .nav-tabs .nav-link.active, + .nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.nav-pills .nav-link { + border-radius: 0.25rem; } +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #3A9ABF; } + +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; } + +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; } + +.tab-content > .tab-pane { + display: none; } +.tab-content > .active { + display: block; } + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: 0.5rem 1rem; } + .navbar > .container, + .navbar > .container-fluid { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; } + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; } + .navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; } + +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + .navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; } + .navbar-nav .dropdown-menu { + position: static; + float: none; } + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; } + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; } + .navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; } + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; } + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 576px) { + .navbar-expand-sm { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-sm .navbar-nav { + flex-direction: row; } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-sm .navbar-toggler { + display: none; } } +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 768px) { + .navbar-expand-md { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-md .navbar-nav { + flex-direction: row; } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-md .navbar-toggler { + display: none; } } +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-lg .navbar-nav { + flex-direction: row; } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-lg .navbar-toggler { + display: none; } } +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-xl .navbar-nav { + flex-direction: row; } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-xl .navbar-toggler { + display: none; } } +.navbar-expand { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; } + .navbar-expand .navbar-nav { + flex-direction: row; } + .navbar-expand .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand .navbar-toggler { + display: none; } + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); } +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); } + .navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); } +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); } +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); } +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='https://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); } + +.navbar-dark .navbar-brand { + color: #fff; } + .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; } +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); } + .navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); } +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; } +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); } +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='https://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-text a { + color: #fff; } + .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; } + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; } + .card > hr { + margin-right: 0; + margin-left: 0; } + .card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + +.card-body { + flex: 1 1 auto; + padding: 1.25rem; } + +.card-title { + margin-bottom: 0.75rem; } + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; } + +.card-text:last-child { + margin-bottom: 0; } + +.card-link:hover { + text-decoration: none; } +.card-link + .card-link { + margin-left: 1.25rem; } + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); } + .card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } + .card-header + .list-group .list-group-item:first-child { + border-top: 0; } + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); } + .card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; } + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; } + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; } + +.card-img { + width: 100%; + border-radius: calc(0.25rem - 1px); } + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); } + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); } + +.card-deck { + display: flex; + flex-direction: column; } + .card-deck .card { + margin-bottom: 15px; } + @media (min-width: 576px) { + .card-deck { + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; } + .card-deck .card { + display: flex; + flex: 1 0 0%; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; } } + +.card-group { + display: flex; + flex-direction: column; } + .card-group > .card { + margin-bottom: 15px; } + @media (min-width: 576px) { + .card-group { + flex-flow: row wrap; } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; } } + +.card-columns .card { + margin-bottom: 0.75rem; } +@media (min-width: 576px) { + .card-columns { + column-count: 3; + column-gap: 1.25rem; + orphans: 1; + widows: 1; } + .card-columns .card { + display: inline-block; + width: 100%; } } + +.accordion > .card { + overflow: hidden; } + .accordion > .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; } + .accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; } + .accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + .accordion > .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; } + .accordion > .card .card-header { + margin-bottom: -1px; } + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; } + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; } + .breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; } +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; } +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; } +.breadcrumb-item.active { + color: #6c757d; } + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; } + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #3A9ABF; + background-color: #fff; + border: 1px solid #dee2e6; } + .page-link:hover { + z-index: 2; + color: #286b84; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; } + .page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; } +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; } + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; } +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; } +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; } + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; } +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; } +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; } + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .badge { + transition: none; } } + a.badge:hover, a.badge:focus { + text-decoration: none; } + .badge:empty { + display: none; } + +.btn .badge { + position: relative; + top: -1px; } + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; } + +.badge-primary { + color: #fff; + background-color: #3A9ABF; } + a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #2e7a98; } + a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } + +.badge-secondary { + color: #fff; + background-color: #6C757D; } + a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #545b62; } + a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + +.badge-success { + color: #212529; + background-color: #75CC39; } + a.badge-success:hover, a.badge-success:focus { + color: #212529; + background-color: #5ea72b; } + a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } + +.badge-info { + color: #fff; + background-color: #17a2b8; } + a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #117a8b; } + a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.badge-warning { + color: #212529; + background-color: #FDC02E; } + a.badge-warning:hover, a.badge-warning:focus { + color: #212529; + background-color: #f6ae02; } + a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } + +.badge-danger { + color: #fff; + background-color: #D93749; } + a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #ba2334; } + a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } + +.badge-light { + color: #212529; + background-color: #f8f9fa; } + a.badge-light:hover, a.badge-light:focus { + color: #212529; + background-color: #dae0e5; } + a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.badge-dark { + color: #fff; + background-color: #343a40; } + a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; } + a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; } + @media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; } } + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; } + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; } + +.alert-heading { + color: inherit; } + +.alert-link { + font-weight: 700; } + +.alert-dismissible { + padding-right: 4rem; } + .alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; } + +.alert-primary { + color: #1e5063; + background-color: #d8ebf2; + border-color: #c8e3ed; } + .alert-primary hr { + border-top-color: #b5d9e7; } + .alert-primary .alert-link { + color: #12303c; } + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db; } + .alert-secondary hr { + border-top-color: #c8cbcf; } + .alert-secondary .alert-link { + color: #202326; } + +.alert-success { + color: #3d6a1e; + background-color: #e3f5d7; + border-color: #d8f1c8; } + .alert-success hr { + border-top-color: #caecb4; } + .alert-success .alert-link { + color: #264213; } + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; } + .alert-info hr { + border-top-color: #abdde5; } + .alert-info .alert-link { + color: #062c33; } + +.alert-warning { + color: #846418; + background-color: #fff2d5; + border-color: #feedc4; } + .alert-warning hr { + border-top-color: #fee5ab; } + .alert-warning .alert-link { + color: #594310; } + +.alert-danger { + color: #711d26; + background-color: #f7d7db; + border-color: #f4c7cc; } + .alert-danger hr { + border-top-color: #f0b2b9; } + .alert-danger .alert-link { + color: #481318; } + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; } + .alert-light hr { + border-top-color: #ececf6; } + .alert-light .alert-link { + color: #686868; } + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; } + .alert-dark hr { + border-top-color: #b9bbbe; } + .alert-dark .alert-link { + color: #040505; } + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; } + to { + background-position: 0 0; } } +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; } + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #3A9ABF; + transition: width 0.6s ease; } + @media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; } } + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; } + +.progress-bar-animated { + animation: progress-bar-stripes 1s linear infinite; } + @media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; } } + +.media { + display: flex; + align-items: flex-start; } + +.media-body { + flex: 1; } + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; } + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; } + .list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; } + .list-group-item-action:active { + color: #212529; + background-color: #e9ecef; } + +.list-group-item { + position: relative; + display: block; + padding: 0.25rem 0.5rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); } + .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + .list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; } + .list-group-item.active { + z-index: 2; + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + +.list-group-horizontal { + flex-direction: row; } + .list-group-horizontal .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; } + .list-group-horizontal-sm .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-sm .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; } + .list-group-horizontal-md .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-md .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-md .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; } + .list-group-horizontal-lg .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-lg .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; } + .list-group-horizontal-xl .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-xl .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; } + .list-group-flush .list-group-item:last-child { + margin-bottom: -1px; } +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; } +.list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; } + +.list-group-item-primary { + color: #1e5063; + background-color: #c8e3ed; } + .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #1e5063; + background-color: #b5d9e7; } + .list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #1e5063; + border-color: #1e5063; } + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db; } + .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #383d41; + background-color: #c8cbcf; } + .list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41; } + +.list-group-item-success { + color: #3d6a1e; + background-color: #d8f1c8; } + .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #3d6a1e; + background-color: #caecb4; } + .list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #3d6a1e; + border-color: #3d6a1e; } + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; } + .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; } + .list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; } + +.list-group-item-warning { + color: #846418; + background-color: #feedc4; } + .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #846418; + background-color: #fee5ab; } + .list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #846418; + border-color: #846418; } + +.list-group-item-danger { + color: #711d26; + background-color: #f4c7cc; } + .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #711d26; + background-color: #f0b2b9; } + .list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #711d26; + border-color: #711d26; } + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; } + .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; } + .list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; } + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; } + .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; } + .list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; } + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; } + .close:hover { + color: #000; + text-decoration: none; } + .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; } + +button.close { + padding: 0; + background-color: transparent; + border: 0; + appearance: none; } + +a.close.disabled { + pointer-events: none; } + +.toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; } + .toast:not(:last-child) { + margin-bottom: 0.75rem; } + .toast.showing { + opacity: 1; } + .toast.show { + display: block; + opacity: 1; } + .toast.hide { + display: none; } + +.toast-header { + display: flex; + align-items: center; + padding: 0.25rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); } + +.toast-body { + padding: 0.75rem; } + +.modal-open { + overflow: hidden; } + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; } + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; } + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; } + .modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); } + @media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; } } + .modal.show .modal-dialog { + transform: none; } + +.modal-dialog-scrollable { + display: flex; + max-height: calc(100% - 1rem); } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; } + .modal-dialog-scrollable .modal-header, + .modal-dialog-scrollable .modal-footer { + flex-shrink: 0; } + .modal-dialog-scrollable .modal-body { + overflow-y: auto; } + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); } + .modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: ""; } + .modal-dialog-centered.modal-dialog-scrollable { + flex-direction: column; + justify-content: center; + height: 100%; } + .modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; } + .modal-dialog-centered.modal-dialog-scrollable::before { + content: none; } + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; } + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; } + .modal-backdrop.fade { + opacity: 0; } + .modal-backdrop.show { + opacity: 0.5; } + +.modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; } + .modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; } + +.modal-title { + margin-bottom: 0; + line-height: 1.5; } + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; } + +.modal-footer { + display: flex; + align-items: center; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; } + .modal-footer > :not(:first-child) { + margin-left: .25rem; } + .modal-footer > :not(:last-child) { + margin-right: .25rem; } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; } + + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); } + + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); } + + .modal-sm { + max-width: 300px; } } +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; } } +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; } } +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; } + .tooltip.show { + opacity: 0.9; } + .tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; } + .tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; } + .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; } + .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; } + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; } + .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; } + .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; } + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; } + .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; } + .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; } + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; } + .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; } + .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; } + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; } + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; } + .popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; } + .popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; } + .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); } + .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); } + .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; } + .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; } + .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); } + .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; } + .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); } + .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); } + .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; } + .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; } + .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; } + .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); } + .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; } + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); } + .popover-header:empty { + display: none; } + +.popover-body { + padding: 0.5rem 0.75rem; + color: #212529; } + +.carousel { + position: relative; } + +.carousel.pointer-event { + touch-action: pan-y; } + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; } + .carousel-inner::after { + display: block; + clear: both; + content: ""; } + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; } } + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; } + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + transform: translateX(100%); } + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + transform: translateX(-100%); } + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; } +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; } +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: 0s 0.6s opacity; } + @media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; } } + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; } + @media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; } } + .carousel-control-prev:hover, .carousel-control-prev:focus, + .carousel-control-next:hover, + .carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; } + +.carousel-control-prev { + left: 0; } + +.carousel-control-next { + right: 0; } + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; } + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: flex; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; } + .carousel-indicators li { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; } + @media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; } } + .carousel-indicators .active { + opacity: 1; } + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; } + +@keyframes spinner-border { + to { + transform: rotate(360deg); } } +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + animation: spinner-border .75s linear infinite; } + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; } + +@keyframes spinner-grow { + 0% { + transform: scale(0); } + 50% { + opacity: 1; } } +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + animation: spinner-grow .75s linear infinite; } + +.spinner-grow-sm { + width: 1rem; + height: 1rem; } + +.align-baseline { + vertical-align: baseline !important; } + +.align-top { + vertical-align: top !important; } + +.align-middle { + vertical-align: middle !important; } + +.align-bottom { + vertical-align: bottom !important; } + +.align-text-bottom { + vertical-align: text-bottom !important; } + +.align-text-top { + vertical-align: text-top !important; } + +.bg-primary { + background-color: #3A9ABF !important; } + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #2e7a98 !important; } + +.bg-secondary { + background-color: #6C757D !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #545b62 !important; } + +.bg-success { + background-color: #75CC39 !important; } + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #5ea72b !important; } + +.bg-info { + background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; } + +.bg-warning { + background-color: #FDC02E !important; } + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #f6ae02 !important; } + +.bg-danger { + background-color: #D93749 !important; } + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #ba2334 !important; } + +.bg-light { + background-color: #f8f9fa !important; } + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; } + +.bg-dark { + background-color: #343a40 !important; } + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; } + +.bg-white { + background-color: #fff !important; } + +.bg-transparent { + background-color: transparent !important; } + +.border { + border: 1px solid #dee2e6 !important; } + +.border-top { + border-top: 1px solid #dee2e6 !important; } + +.border-right { + border-right: 1px solid #dee2e6 !important; } + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; } + +.border-left { + border-left: 1px solid #dee2e6 !important; } + +.border-0 { + border: 0 !important; } + +.border-top-0 { + border-top: 0 !important; } + +.border-right-0 { + border-right: 0 !important; } + +.border-bottom-0 { + border-bottom: 0 !important; } + +.border-left-0 { + border-left: 0 !important; } + +.border-primary { + border-color: #3A9ABF !important; } + +.border-secondary { + border-color: #6C757D !important; } + +.border-success { + border-color: #75CC39 !important; } + +.border-info { + border-color: #17a2b8 !important; } + +.border-warning { + border-color: #FDC02E !important; } + +.border-danger { + border-color: #D93749 !important; } + +.border-light { + border-color: #f8f9fa !important; } + +.border-dark { + border-color: #343a40 !important; } + +.border-white { + border-color: #fff !important; } + +.rounded-sm { + border-radius: 0.2rem !important; } + +.rounded { + border-radius: 0.25rem !important; } + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; } + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; } + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-lg { + border-radius: 0.3rem !important; } + +.rounded-circle { + border-radius: 50% !important; } + +.rounded-pill { + border-radius: 50rem !important; } + +.rounded-0 { + border-radius: 0 !important; } + +.clearfix::after { + display: block; + clear: both; + content: ""; } + +.d-none { + display: none !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block !important; } + +.d-table { + display: table !important; } + +.d-table-row { + display: table-row !important; } + +.d-table-cell { + display: table-cell !important; } + +.d-flex { + display: flex !important; } + +.d-inline-flex { + display: inline-flex !important; } + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; } + + .d-sm-inline { + display: inline !important; } + + .d-sm-inline-block { + display: inline-block !important; } + + .d-sm-block { + display: block !important; } + + .d-sm-table { + display: table !important; } + + .d-sm-table-row { + display: table-row !important; } + + .d-sm-table-cell { + display: table-cell !important; } + + .d-sm-flex { + display: flex !important; } + + .d-sm-inline-flex { + display: inline-flex !important; } } +@media (min-width: 768px) { + .d-md-none { + display: none !important; } + + .d-md-inline { + display: inline !important; } + + .d-md-inline-block { + display: inline-block !important; } + + .d-md-block { + display: block !important; } + + .d-md-table { + display: table !important; } + + .d-md-table-row { + display: table-row !important; } + + .d-md-table-cell { + display: table-cell !important; } + + .d-md-flex { + display: flex !important; } + + .d-md-inline-flex { + display: inline-flex !important; } } +@media (min-width: 992px) { + .d-lg-none { + display: none !important; } + + .d-lg-inline { + display: inline !important; } + + .d-lg-inline-block { + display: inline-block !important; } + + .d-lg-block { + display: block !important; } + + .d-lg-table { + display: table !important; } + + .d-lg-table-row { + display: table-row !important; } + + .d-lg-table-cell { + display: table-cell !important; } + + .d-lg-flex { + display: flex !important; } + + .d-lg-inline-flex { + display: inline-flex !important; } } +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; } + + .d-xl-inline { + display: inline !important; } + + .d-xl-inline-block { + display: inline-block !important; } + + .d-xl-block { + display: block !important; } + + .d-xl-table { + display: table !important; } + + .d-xl-table-row { + display: table-row !important; } + + .d-xl-table-cell { + display: table-cell !important; } + + .d-xl-flex { + display: flex !important; } + + .d-xl-inline-flex { + display: inline-flex !important; } } +@media print { + .d-print-none { + display: none !important; } + + .d-print-inline { + display: inline !important; } + + .d-print-inline-block { + display: inline-block !important; } + + .d-print-block { + display: block !important; } + + .d-print-table { + display: table !important; } + + .d-print-table-row { + display: table-row !important; } + + .d-print-table-cell { + display: table-cell !important; } + + .d-print-flex { + display: flex !important; } + + .d-print-inline-flex { + display: inline-flex !important; } } +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; } + .embed-responsive::before { + display: block; + content: ""; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; } + +.embed-responsive-21by9::before { + padding-top: 42.8571428571%; } + +.embed-responsive-16by9::before { + padding-top: 56.25%; } + +.embed-responsive-4by3::before { + padding-top: 75%; } + +.embed-responsive-1by1::before { + padding-top: 100%; } + +.flex-row { + flex-direction: row !important; } + +.flex-column { + flex-direction: column !important; } + +.flex-row-reverse { + flex-direction: row-reverse !important; } + +.flex-column-reverse { + flex-direction: column-reverse !important; } + +.flex-wrap { + flex-wrap: wrap !important; } + +.flex-nowrap { + flex-wrap: nowrap !important; } + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; } + +.flex-fill { + flex: 1 1 auto !important; } + +.flex-grow-0 { + flex-grow: 0 !important; } + +.flex-grow-1 { + flex-grow: 1 !important; } + +.flex-shrink-0 { + flex-shrink: 0 !important; } + +.flex-shrink-1 { + flex-shrink: 1 !important; } + +.justify-content-start { + justify-content: flex-start !important; } + +.justify-content-end { + justify-content: flex-end !important; } + +.justify-content-center { + justify-content: center !important; } + +.justify-content-between { + justify-content: space-between !important; } + +.justify-content-around { + justify-content: space-around !important; } + +.align-items-start { + align-items: flex-start !important; } + +.align-items-end { + align-items: flex-end !important; } + +.align-items-center { + align-items: center !important; } + +.align-items-baseline { + align-items: baseline !important; } + +.align-items-stretch { + align-items: stretch !important; } + +.align-content-start { + align-content: flex-start !important; } + +.align-content-end { + align-content: flex-end !important; } + +.align-content-center { + align-content: center !important; } + +.align-content-between { + align-content: space-between !important; } + +.align-content-around { + align-content: space-around !important; } + +.align-content-stretch { + align-content: stretch !important; } + +.align-self-auto { + align-self: auto !important; } + +.align-self-start { + align-self: flex-start !important; } + +.align-self-end { + align-self: flex-end !important; } + +.align-self-center { + align-self: center !important; } + +.align-self-baseline { + align-self: baseline !important; } + +.align-self-stretch { + align-self: stretch !important; } + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; } + + .flex-sm-column { + flex-direction: column !important; } + + .flex-sm-row-reverse { + flex-direction: row-reverse !important; } + + .flex-sm-column-reverse { + flex-direction: column-reverse !important; } + + .flex-sm-wrap { + flex-wrap: wrap !important; } + + .flex-sm-nowrap { + flex-wrap: nowrap !important; } + + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-sm-fill { + flex: 1 1 auto !important; } + + .flex-sm-grow-0 { + flex-grow: 0 !important; } + + .flex-sm-grow-1 { + flex-grow: 1 !important; } + + .flex-sm-shrink-0 { + flex-shrink: 0 !important; } + + .flex-sm-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-sm-start { + justify-content: flex-start !important; } + + .justify-content-sm-end { + justify-content: flex-end !important; } + + .justify-content-sm-center { + justify-content: center !important; } + + .justify-content-sm-between { + justify-content: space-between !important; } + + .justify-content-sm-around { + justify-content: space-around !important; } + + .align-items-sm-start { + align-items: flex-start !important; } + + .align-items-sm-end { + align-items: flex-end !important; } + + .align-items-sm-center { + align-items: center !important; } + + .align-items-sm-baseline { + align-items: baseline !important; } + + .align-items-sm-stretch { + align-items: stretch !important; } + + .align-content-sm-start { + align-content: flex-start !important; } + + .align-content-sm-end { + align-content: flex-end !important; } + + .align-content-sm-center { + align-content: center !important; } + + .align-content-sm-between { + align-content: space-between !important; } + + .align-content-sm-around { + align-content: space-around !important; } + + .align-content-sm-stretch { + align-content: stretch !important; } + + .align-self-sm-auto { + align-self: auto !important; } + + .align-self-sm-start { + align-self: flex-start !important; } + + .align-self-sm-end { + align-self: flex-end !important; } + + .align-self-sm-center { + align-self: center !important; } + + .align-self-sm-baseline { + align-self: baseline !important; } + + .align-self-sm-stretch { + align-self: stretch !important; } } +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; } + + .flex-md-column { + flex-direction: column !important; } + + .flex-md-row-reverse { + flex-direction: row-reverse !important; } + + .flex-md-column-reverse { + flex-direction: column-reverse !important; } + + .flex-md-wrap { + flex-wrap: wrap !important; } + + .flex-md-nowrap { + flex-wrap: nowrap !important; } + + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-md-fill { + flex: 1 1 auto !important; } + + .flex-md-grow-0 { + flex-grow: 0 !important; } + + .flex-md-grow-1 { + flex-grow: 1 !important; } + + .flex-md-shrink-0 { + flex-shrink: 0 !important; } + + .flex-md-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-md-start { + justify-content: flex-start !important; } + + .justify-content-md-end { + justify-content: flex-end !important; } + + .justify-content-md-center { + justify-content: center !important; } + + .justify-content-md-between { + justify-content: space-between !important; } + + .justify-content-md-around { + justify-content: space-around !important; } + + .align-items-md-start { + align-items: flex-start !important; } + + .align-items-md-end { + align-items: flex-end !important; } + + .align-items-md-center { + align-items: center !important; } + + .align-items-md-baseline { + align-items: baseline !important; } + + .align-items-md-stretch { + align-items: stretch !important; } + + .align-content-md-start { + align-content: flex-start !important; } + + .align-content-md-end { + align-content: flex-end !important; } + + .align-content-md-center { + align-content: center !important; } + + .align-content-md-between { + align-content: space-between !important; } + + .align-content-md-around { + align-content: space-around !important; } + + .align-content-md-stretch { + align-content: stretch !important; } + + .align-self-md-auto { + align-self: auto !important; } + + .align-self-md-start { + align-self: flex-start !important; } + + .align-self-md-end { + align-self: flex-end !important; } + + .align-self-md-center { + align-self: center !important; } + + .align-self-md-baseline { + align-self: baseline !important; } + + .align-self-md-stretch { + align-self: stretch !important; } } +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; } + + .flex-lg-column { + flex-direction: column !important; } + + .flex-lg-row-reverse { + flex-direction: row-reverse !important; } + + .flex-lg-column-reverse { + flex-direction: column-reverse !important; } + + .flex-lg-wrap { + flex-wrap: wrap !important; } + + .flex-lg-nowrap { + flex-wrap: nowrap !important; } + + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-lg-fill { + flex: 1 1 auto !important; } + + .flex-lg-grow-0 { + flex-grow: 0 !important; } + + .flex-lg-grow-1 { + flex-grow: 1 !important; } + + .flex-lg-shrink-0 { + flex-shrink: 0 !important; } + + .flex-lg-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-lg-start { + justify-content: flex-start !important; } + + .justify-content-lg-end { + justify-content: flex-end !important; } + + .justify-content-lg-center { + justify-content: center !important; } + + .justify-content-lg-between { + justify-content: space-between !important; } + + .justify-content-lg-around { + justify-content: space-around !important; } + + .align-items-lg-start { + align-items: flex-start !important; } + + .align-items-lg-end { + align-items: flex-end !important; } + + .align-items-lg-center { + align-items: center !important; } + + .align-items-lg-baseline { + align-items: baseline !important; } + + .align-items-lg-stretch { + align-items: stretch !important; } + + .align-content-lg-start { + align-content: flex-start !important; } + + .align-content-lg-end { + align-content: flex-end !important; } + + .align-content-lg-center { + align-content: center !important; } + + .align-content-lg-between { + align-content: space-between !important; } + + .align-content-lg-around { + align-content: space-around !important; } + + .align-content-lg-stretch { + align-content: stretch !important; } + + .align-self-lg-auto { + align-self: auto !important; } + + .align-self-lg-start { + align-self: flex-start !important; } + + .align-self-lg-end { + align-self: flex-end !important; } + + .align-self-lg-center { + align-self: center !important; } + + .align-self-lg-baseline { + align-self: baseline !important; } + + .align-self-lg-stretch { + align-self: stretch !important; } } +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; } + + .flex-xl-column { + flex-direction: column !important; } + + .flex-xl-row-reverse { + flex-direction: row-reverse !important; } + + .flex-xl-column-reverse { + flex-direction: column-reverse !important; } + + .flex-xl-wrap { + flex-wrap: wrap !important; } + + .flex-xl-nowrap { + flex-wrap: nowrap !important; } + + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-xl-fill { + flex: 1 1 auto !important; } + + .flex-xl-grow-0 { + flex-grow: 0 !important; } + + .flex-xl-grow-1 { + flex-grow: 1 !important; } + + .flex-xl-shrink-0 { + flex-shrink: 0 !important; } + + .flex-xl-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-xl-start { + justify-content: flex-start !important; } + + .justify-content-xl-end { + justify-content: flex-end !important; } + + .justify-content-xl-center { + justify-content: center !important; } + + .justify-content-xl-between { + justify-content: space-between !important; } + + .justify-content-xl-around { + justify-content: space-around !important; } + + .align-items-xl-start { + align-items: flex-start !important; } + + .align-items-xl-end { + align-items: flex-end !important; } + + .align-items-xl-center { + align-items: center !important; } + + .align-items-xl-baseline { + align-items: baseline !important; } + + .align-items-xl-stretch { + align-items: stretch !important; } + + .align-content-xl-start { + align-content: flex-start !important; } + + .align-content-xl-end { + align-content: flex-end !important; } + + .align-content-xl-center { + align-content: center !important; } + + .align-content-xl-between { + align-content: space-between !important; } + + .align-content-xl-around { + align-content: space-around !important; } + + .align-content-xl-stretch { + align-content: stretch !important; } + + .align-self-xl-auto { + align-self: auto !important; } + + .align-self-xl-start { + align-self: flex-start !important; } + + .align-self-xl-end { + align-self: flex-end !important; } + + .align-self-xl-center { + align-self: center !important; } + + .align-self-xl-baseline { + align-self: baseline !important; } + + .align-self-xl-stretch { + align-self: stretch !important; } } +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-none { + float: none !important; } + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; } + + .float-sm-right { + float: right !important; } + + .float-sm-none { + float: none !important; } } +@media (min-width: 768px) { + .float-md-left { + float: left !important; } + + .float-md-right { + float: right !important; } + + .float-md-none { + float: none !important; } } +@media (min-width: 992px) { + .float-lg-left { + float: left !important; } + + .float-lg-right { + float: right !important; } + + .float-lg-none { + float: none !important; } } +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; } + + .float-xl-right { + float: right !important; } + + .float-xl-none { + float: none !important; } } +.overflow-auto { + overflow: auto !important; } + +.overflow-hidden { + overflow: hidden !important; } + +.position-static { + position: static !important; } + +.position-relative { + position: relative !important; } + +.position-absolute { + position: absolute !important; } + +.position-fixed { + position: fixed !important; } + +.position-sticky { + position: sticky !important; } + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; } + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; } + +@supports (position: sticky) { + .sticky-top { + position: sticky; + top: 0; + z-index: 1020; } } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; } + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } + +.shadow-none { + box-shadow: none !important; } + +.w-25 { + width: 25% !important; } + +.w-50 { + width: 50% !important; } + +.w-75 { + width: 75% !important; } + +.w-100 { + width: 100% !important; } + +.w-auto { + width: auto !important; } + +.h-25 { + height: 25% !important; } + +.h-50 { + height: 50% !important; } + +.h-75 { + height: 75% !important; } + +.h-100 { + height: 100% !important; } + +.h-auto { + height: auto !important; } + +.mw-100 { + max-width: 100% !important; } + +.mh-100 { + max-height: 100% !important; } + +.min-vw-100 { + min-width: 100vw !important; } + +.min-vh-100 { + min-height: 100vh !important; } + +.vw-100 { + width: 100vw !important; } + +.vh-100 { + height: 100vh !important; } + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); } + +.m-0 { + margin: 0 !important; } + +.mt-0, +.my-0 { + margin-top: 0 !important; } + +.mr-0, +.mx-0 { + margin-right: 0 !important; } + +.mb-0, +.my-0 { + margin-bottom: 0 !important; } + +.ml-0, +.mx-0 { + margin-left: 0 !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; } + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; } + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; } + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; } + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; } + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; } + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; } + +.m-3 { + margin: 1rem !important; } + +.mt-3, +.my-3 { + margin-top: 1rem !important; } + +.mr-3, +.mx-3 { + margin-right: 1rem !important; } + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; } + +.ml-3, +.mx-3 { + margin-left: 1rem !important; } + +.m-4 { + margin: 1.5rem !important; } + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; } + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; } + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; } + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; } + +.m-5 { + margin: 3rem !important; } + +.mt-5, +.my-5 { + margin-top: 3rem !important; } + +.mr-5, +.mx-5 { + margin-right: 3rem !important; } + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; } + +.ml-5, +.mx-5 { + margin-left: 3rem !important; } + +.p-0 { + padding: 0 !important; } + +.pt-0, +.py-0 { + padding-top: 0 !important; } + +.pr-0, +.px-0 { + padding-right: 0 !important; } + +.pb-0, +.py-0 { + padding-bottom: 0 !important; } + +.pl-0, +.px-0 { + padding-left: 0 !important; } + +.p-1 { + padding: 0.25rem !important; } + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; } + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; } + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; } + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; } + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; } + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; } + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; } + +.p-3 { + padding: 1rem !important; } + +.pt-3, +.py-3 { + padding-top: 1rem !important; } + +.pr-3, +.px-3 { + padding-right: 1rem !important; } + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; } + +.pl-3, +.px-3 { + padding-left: 1rem !important; } + +.p-4 { + padding: 1.5rem !important; } + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; } + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; } + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; } + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; } + +.p-5 { + padding: 3rem !important; } + +.pt-5, +.py-5 { + padding-top: 3rem !important; } + +.pr-5, +.px-5 { + padding-right: 3rem !important; } + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; } + +.pl-5, +.px-5 { + padding-left: 3rem !important; } + +.m-n1 { + margin: -0.25rem !important; } + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; } + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; } + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; } + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; } + +.m-n2 { + margin: -0.5rem !important; } + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; } + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; } + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; } + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; } + +.m-n3 { + margin: -1rem !important; } + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; } + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; } + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; } + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; } + +.m-n4 { + margin: -1.5rem !important; } + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; } + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; } + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; } + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; } + +.m-n5 { + margin: -3rem !important; } + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; } + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; } + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; } + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; } + +.m-auto { + margin: auto !important; } + +.mt-auto, +.my-auto { + margin-top: auto !important; } + +.mr-auto, +.mx-auto { + margin-right: auto !important; } + +.mb-auto, +.my-auto { + margin-bottom: auto !important; } + +.ml-auto, +.mx-auto { + margin-left: auto !important; } + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; } + + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; } + + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; } + + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; } + + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; } + + .m-sm-1 { + margin: 0.25rem !important; } + + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; } + + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; } + + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; } + + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; } + + .m-sm-2 { + margin: 0.5rem !important; } + + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; } + + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; } + + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; } + + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; } + + .m-sm-3 { + margin: 1rem !important; } + + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; } + + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; } + + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; } + + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; } + + .m-sm-4 { + margin: 1.5rem !important; } + + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; } + + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; } + + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; } + + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; } + + .m-sm-5 { + margin: 3rem !important; } + + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; } + + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; } + + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; } + + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; } + + .p-sm-0 { + padding: 0 !important; } + + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; } + + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; } + + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; } + + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; } + + .p-sm-1 { + padding: 0.25rem !important; } + + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; } + + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; } + + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; } + + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; } + + .p-sm-2 { + padding: 0.5rem !important; } + + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; } + + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; } + + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; } + + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; } + + .p-sm-3 { + padding: 1rem !important; } + + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; } + + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; } + + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; } + + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; } + + .p-sm-4 { + padding: 1.5rem !important; } + + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; } + + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; } + + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; } + + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; } + + .p-sm-5 { + padding: 3rem !important; } + + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; } + + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; } + + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; } + + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; } + + .m-sm-n1 { + margin: -0.25rem !important; } + + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; } + + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; } + + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; } + + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; } + + .m-sm-n2 { + margin: -0.5rem !important; } + + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; } + + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; } + + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; } + + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; } + + .m-sm-n3 { + margin: -1rem !important; } + + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; } + + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; } + + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; } + + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; } + + .m-sm-n4 { + margin: -1.5rem !important; } + + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; } + + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; } + + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; } + + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; } + + .m-sm-n5 { + margin: -3rem !important; } + + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; } + + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; } + + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; } + + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; } + + .m-sm-auto { + margin: auto !important; } + + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; } + + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; } + + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; } + + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; } } +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; } + + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; } + + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; } + + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; } + + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; } + + .m-md-1 { + margin: 0.25rem !important; } + + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; } + + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; } + + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; } + + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; } + + .m-md-2 { + margin: 0.5rem !important; } + + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; } + + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; } + + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; } + + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; } + + .m-md-3 { + margin: 1rem !important; } + + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; } + + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; } + + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; } + + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; } + + .m-md-4 { + margin: 1.5rem !important; } + + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; } + + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; } + + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; } + + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; } + + .m-md-5 { + margin: 3rem !important; } + + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; } + + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; } + + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; } + + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; } + + .p-md-0 { + padding: 0 !important; } + + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; } + + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; } + + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; } + + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; } + + .p-md-1 { + padding: 0.25rem !important; } + + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; } + + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; } + + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; } + + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; } + + .p-md-2 { + padding: 0.5rem !important; } + + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; } + + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; } + + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; } + + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; } + + .p-md-3 { + padding: 1rem !important; } + + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; } + + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; } + + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; } + + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; } + + .p-md-4 { + padding: 1.5rem !important; } + + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; } + + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; } + + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; } + + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; } + + .p-md-5 { + padding: 3rem !important; } + + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; } + + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; } + + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; } + + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; } + + .m-md-n1 { + margin: -0.25rem !important; } + + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; } + + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; } + + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; } + + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; } + + .m-md-n2 { + margin: -0.5rem !important; } + + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; } + + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; } + + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; } + + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; } + + .m-md-n3 { + margin: -1rem !important; } + + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; } + + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; } + + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; } + + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; } + + .m-md-n4 { + margin: -1.5rem !important; } + + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; } + + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; } + + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; } + + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; } + + .m-md-n5 { + margin: -3rem !important; } + + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; } + + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; } + + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; } + + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; } + + .m-md-auto { + margin: auto !important; } + + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; } + + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; } + + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; } + + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; } } +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; } + + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; } + + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; } + + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; } + + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; } + + .m-lg-1 { + margin: 0.25rem !important; } + + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; } + + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; } + + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; } + + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; } + + .m-lg-2 { + margin: 0.5rem !important; } + + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; } + + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; } + + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; } + + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; } + + .m-lg-3 { + margin: 1rem !important; } + + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; } + + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; } + + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; } + + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; } + + .m-lg-4 { + margin: 1.5rem !important; } + + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; } + + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; } + + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; } + + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; } + + .m-lg-5 { + margin: 3rem !important; } + + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; } + + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; } + + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; } + + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; } + + .p-lg-0 { + padding: 0 !important; } + + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; } + + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; } + + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; } + + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; } + + .p-lg-1 { + padding: 0.25rem !important; } + + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; } + + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; } + + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; } + + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; } + + .p-lg-2 { + padding: 0.5rem !important; } + + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; } + + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; } + + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; } + + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; } + + .p-lg-3 { + padding: 1rem !important; } + + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; } + + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; } + + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; } + + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; } + + .p-lg-4 { + padding: 1.5rem !important; } + + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; } + + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; } + + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; } + + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; } + + .p-lg-5 { + padding: 3rem !important; } + + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; } + + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; } + + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; } + + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; } + + .m-lg-n1 { + margin: -0.25rem !important; } + + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; } + + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; } + + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; } + + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; } + + .m-lg-n2 { + margin: -0.5rem !important; } + + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; } + + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; } + + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; } + + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; } + + .m-lg-n3 { + margin: -1rem !important; } + + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; } + + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; } + + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; } + + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; } + + .m-lg-n4 { + margin: -1.5rem !important; } + + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; } + + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; } + + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; } + + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; } + + .m-lg-n5 { + margin: -3rem !important; } + + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; } + + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; } + + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; } + + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; } + + .m-lg-auto { + margin: auto !important; } + + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; } + + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; } + + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; } + + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; } } +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; } + + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; } + + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; } + + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; } + + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; } + + .m-xl-1 { + margin: 0.25rem !important; } + + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; } + + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; } + + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; } + + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; } + + .m-xl-2 { + margin: 0.5rem !important; } + + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; } + + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; } + + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; } + + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; } + + .m-xl-3 { + margin: 1rem !important; } + + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; } + + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; } + + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; } + + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; } + + .m-xl-4 { + margin: 1.5rem !important; } + + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; } + + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; } + + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; } + + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; } + + .m-xl-5 { + margin: 3rem !important; } + + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; } + + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; } + + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; } + + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; } + + .p-xl-0 { + padding: 0 !important; } + + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; } + + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; } + + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; } + + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; } + + .p-xl-1 { + padding: 0.25rem !important; } + + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; } + + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; } + + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; } + + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; } + + .p-xl-2 { + padding: 0.5rem !important; } + + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; } + + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; } + + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; } + + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; } + + .p-xl-3 { + padding: 1rem !important; } + + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; } + + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; } + + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; } + + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; } + + .p-xl-4 { + padding: 1.5rem !important; } + + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; } + + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; } + + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; } + + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; } + + .p-xl-5 { + padding: 3rem !important; } + + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; } + + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; } + + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; } + + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; } + + .m-xl-n1 { + margin: -0.25rem !important; } + + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; } + + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; } + + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; } + + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; } + + .m-xl-n2 { + margin: -0.5rem !important; } + + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; } + + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; } + + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; } + + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; } + + .m-xl-n3 { + margin: -1rem !important; } + + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; } + + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; } + + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; } + + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; } + + .m-xl-n4 { + margin: -1.5rem !important; } + + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; } + + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; } + + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; } + + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; } + + .m-xl-n5 { + margin: -3rem !important; } + + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; } + + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; } + + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; } + + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; } + + .m-xl-auto { + margin: auto !important; } + + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; } + + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; } + + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; } + + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; } } +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } + +.text-justify { + text-align: justify !important; } + +.text-wrap { + white-space: normal !important; } + +.text-nowrap { + white-space: nowrap !important; } + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; } + + .text-sm-right { + text-align: right !important; } + + .text-sm-center { + text-align: center !important; } } +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; } + + .text-md-right { + text-align: right !important; } + + .text-md-center { + text-align: center !important; } } +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; } + + .text-lg-right { + text-align: right !important; } + + .text-lg-center { + text-align: center !important; } } +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; } + + .text-xl-right { + text-align: right !important; } + + .text-xl-center { + text-align: center !important; } } +.text-lowercase { + text-transform: lowercase !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.text-capitalize { + text-transform: capitalize !important; } + +.font-weight-light { + font-weight: 300 !important; } + +.font-weight-lighter { + font-weight: lighter !important; } + +.font-weight-normal { + font-weight: 400 !important; } + +.font-weight-bold { + font-weight: 700 !important; } + +.font-weight-bolder { + font-weight: bolder !important; } + +.font-italic { + font-style: italic !important; } + +.text-white { + color: #fff !important; } + +.text-primary { + color: #3A9ABF !important; } + +a.text-primary:hover, a.text-primary:focus { + color: #286b84 !important; } + +.text-secondary { + color: #6C757D !important; } + +a.text-secondary:hover, a.text-secondary:focus { + color: #494f54 !important; } + +.text-success { + color: #75CC39 !important; } + +a.text-success:hover, a.text-success:focus { + color: #529326 !important; } + +.text-info { + color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { + color: #0f6674 !important; } + +.text-warning { + color: #FDC02E !important; } + +a.text-warning:hover, a.text-warning:focus { + color: #dc9c02 !important; } + +.text-danger { + color: #D93749 !important; } + +a.text-danger:hover, a.text-danger:focus { + color: #a41f2e !important; } + +.text-light { + color: #f8f9fa !important; } + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; } + +.text-dark { + color: #343a40 !important; } + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; } + +.text-body { + color: #212529 !important; } + +.text-muted { + color: #6c757d !important; } + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; } + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.text-decoration-none { + text-decoration: none !important; } + +.text-break { + word-break: break-word !important; + overflow-wrap: break-word !important; } + +.text-reset { + color: inherit !important; } + +.visible { + visibility: visible !important; } + +.invisible { + visibility: hidden !important; } + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; } + + a:not(.btn) { + text-decoration: underline; } + + abbr[title]::after { + content: " (" attr(title) ")"; } + + pre { + white-space: pre-wrap !important; } + + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, + img { + page-break-inside: avoid; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } + + @page { + size: a3; } + body { + min-width: 992px !important; } + + .container { + min-width: 992px !important; } + + .navbar { + display: none; } + + .badge { + border: 1px solid #000; } + + .table { + border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; } + + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; } + + .table-dark { + color: inherit; } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; } + + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; } } +/* Custom Styles */ +.list-group-item { + border: none; + padding: 0 0 0 .5rem; } + +.card-header, .card-body { + padding: 0.25rem; } + +.accordion > .card .card-header { + margin-bottom: 0; } + +.list-group-item:first-child { + border-radius: 0; } + +.table th, .table td { + padding: 0.25rem; } + +code { + color: black !important; } + +/*# sourceMappingURL=main.css.map */ + + + + + + + + + +
    + + +
    + +
    + +
    + + v@build.version@+@build.number@ +
    +
    + +
    + +
    + + Run All Tests + + + +
    +
    +
    + + + + + +
    + + +
    +
    +

    Test Results Stats (1,213 ms)

    +
    +
    + Bundles:3 + Suites:3 + Specs:13 +
    + + +
    + + BoxLang + 1.0.0-snapshot+2143 + +
    +
    +
    + +
    + + Pass: 9 + + + Failures: 0 + + + Errors: 0 + + + Skipped: 4 + + + Reset + +
    +
    + + +
    + + + + + + + +
    + + + +
    + + + + + + +
    + + + +
    + + + + + + +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + diff --git a/bx/tests/results/visualizer/index.html b/bx/tests/results/visualizer/index.html new file mode 100644 index 0000000..8de7caf --- /dev/null +++ b/bx/tests/results/visualizer/index.html @@ -0,0 +1,556 @@ + + + + + + Test Visualizer + + + + + + + + + + +
    +
    +
    +
    + + v@build.version@+@build.number@ +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    + Loading... +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/bx/tests/results/visualizer/main.css b/bx/tests/results/visualizer/main.css new file mode 100644 index 0000000..310d547 --- /dev/null +++ b/bx/tests/results/visualizer/main.css @@ -0,0 +1,7615 @@ +/* Overriden Styles */ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #dc3545; + --orange: #fd7e14; + --yellow: #ffc107; + --green: #28a745; + --teal: #20c997; + --cyan: #17a2b8; + --white: #fff; + --gray: #6c757d; + --gray-dark: #343a40; + --primary: #3A9ABF; + --secondary: #6C757D; + --success: #75CC39; + --info: #17a2b8; + --warning: #FDC02E; + --danger: #D93749; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +*, +*::before, +*::after { + box-sizing: border-box; } + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; } + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: .80rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; } + +[tabindex="-1"]:focus { + outline: 0 !important; } + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; } + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0; } + +p { + margin-top: 0; + margin-bottom: 1rem; } + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + text-decoration-skip-ink: none; } + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; } + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; } + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; } + +dt { + font-weight: 700; } + +dd { + margin-bottom: .5rem; + margin-left: 0; } + +blockquote { + margin: 0 0 1rem; } + +b, +strong { + font-weight: bolder; } + +small { + font-size: 80%; } + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sub { + bottom: -.25em; } + +sup { + top: -.5em; } + +a { + color: #3A9ABF; + text-decoration: none; + background-color: transparent; } + a:hover { + color: #286b84; + text-decoration: underline; } + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):focus { + outline: 0; } + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; } + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; } + +figure { + margin: 0 0 1rem; } + +img { + vertical-align: middle; + border-style: none; } + +svg { + overflow: hidden; + vertical-align: middle; } + +table { + border-collapse: collapse; } + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; } + +th { + text-align: inherit; } + +label { + display: inline-block; + margin-bottom: 0.5rem; } + +button { + border-radius: 0; } + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; } + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +button, +input { + overflow: visible; } + +button, +select { + text-transform: none; } + +select { + word-wrap: normal; } + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; } + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; } + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; } + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; } + +textarea { + overflow: auto; + resize: vertical; } + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; } + +progress { + vertical-align: baseline; } + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; } + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; } + +output { + display: inline-block; } + +summary { + display: list-item; + cursor: pointer; } + +template { + display: none; } + +[hidden] { + display: none !important; } + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0; + font-weight: 500; + line-height: 1.2; } + +h1, .h1 { + font-size: 2rem; } + +h2, .h2 { + font-size: 1.5rem; } + +h3, .h3 { + font-size: 1.25rem; } + +h4, .h4 { + font-size: 1rem; } + +h5, .h5 { + font-size: .85rem; } + +h6, .h6 { + font-size: .5rem; } + +.lead { + font-size: 1.25rem; + font-weight: 300; } + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; } + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; } + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; } + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; } + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); } + +small, +.small { + font-size: 80%; + font-weight: 400; } + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; } + +.list-unstyled { + padding-left: 0; + list-style: none; } + +.list-inline { + padding-left: 0; + list-style: none; } + +.list-inline-item { + display: inline-block; } + .list-inline-item:not(:last-child) { + margin-right: 0.5rem; } + +.initialism { + font-size: 90%; + text-transform: uppercase; } + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; } + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; } + .blockquote-footer::before { + content: "\2014\00A0"; } + +.img-fluid { + max-width: 100%; + height: auto; } + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; } + +.figure { + display: inline-block; } + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; } + +.figure-caption { + font-size: 90%; + color: #6c757d; } + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; } + a > code { + color: inherit; } + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; } + +pre { + display: block; + font-size: 87.5%; + color: #212529; } + pre code { + font-size: inherit; + color: inherit; + word-break: normal; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; } + @media (min-width: 576px) { + .container { + max-width: 540px; } } + @media (min-width: 768px) { + .container { + max-width: 720px; } } + @media (min-width: 992px) { + .container { + max-width: 960px; } } + @media (min-width: 1200px) { + .container { + max-width: 1140px; } } + +.container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; } + +.row { + display: flex; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; } + +.no-gutters { + margin-right: 0; + margin-left: 0; } + .no-gutters > .col, + .no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; } + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; } + +.col { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + +.col-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + +.col-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + +.col-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + +.col-3 { + flex: 0 0 25%; + max-width: 25%; } + +.col-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + +.col-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + +.col-6 { + flex: 0 0 50%; + max-width: 50%; } + +.col-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + +.col-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + +.col-9 { + flex: 0 0 75%; + max-width: 75%; } + +.col-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + +.col-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + +.col-12 { + flex: 0 0 100%; + max-width: 100%; } + +.order-first { + order: -1; } + +.order-last { + order: 13; } + +.order-0 { + order: 0; } + +.order-1 { + order: 1; } + +.order-2 { + order: 2; } + +.order-3 { + order: 3; } + +.order-4 { + order: 4; } + +.order-5 { + order: 5; } + +.order-6 { + order: 6; } + +.order-7 { + order: 7; } + +.order-8 { + order: 8; } + +.order-9 { + order: 9; } + +.order-10 { + order: 10; } + +.order-11 { + order: 11; } + +.order-12 { + order: 12; } + +.offset-1 { + margin-left: 8.3333333333%; } + +.offset-2 { + margin-left: 16.6666666667%; } + +.offset-3 { + margin-left: 25%; } + +.offset-4 { + margin-left: 33.3333333333%; } + +.offset-5 { + margin-left: 41.6666666667%; } + +.offset-6 { + margin-left: 50%; } + +.offset-7 { + margin-left: 58.3333333333%; } + +.offset-8 { + margin-left: 66.6666666667%; } + +.offset-9 { + margin-left: 75%; } + +.offset-10 { + margin-left: 83.3333333333%; } + +.offset-11 { + margin-left: 91.6666666667%; } + +@media (min-width: 576px) { + .col-sm { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-sm-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-sm-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-sm-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-sm-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-sm-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-sm-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-sm-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-sm-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-sm-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-sm-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-sm-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-sm-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-sm-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-sm-first { + order: -1; } + + .order-sm-last { + order: 13; } + + .order-sm-0 { + order: 0; } + + .order-sm-1 { + order: 1; } + + .order-sm-2 { + order: 2; } + + .order-sm-3 { + order: 3; } + + .order-sm-4 { + order: 4; } + + .order-sm-5 { + order: 5; } + + .order-sm-6 { + order: 6; } + + .order-sm-7 { + order: 7; } + + .order-sm-8 { + order: 8; } + + .order-sm-9 { + order: 9; } + + .order-sm-10 { + order: 10; } + + .order-sm-11 { + order: 11; } + + .order-sm-12 { + order: 12; } + + .offset-sm-0 { + margin-left: 0; } + + .offset-sm-1 { + margin-left: 8.3333333333%; } + + .offset-sm-2 { + margin-left: 16.6666666667%; } + + .offset-sm-3 { + margin-left: 25%; } + + .offset-sm-4 { + margin-left: 33.3333333333%; } + + .offset-sm-5 { + margin-left: 41.6666666667%; } + + .offset-sm-6 { + margin-left: 50%; } + + .offset-sm-7 { + margin-left: 58.3333333333%; } + + .offset-sm-8 { + margin-left: 66.6666666667%; } + + .offset-sm-9 { + margin-left: 75%; } + + .offset-sm-10 { + margin-left: 83.3333333333%; } + + .offset-sm-11 { + margin-left: 91.6666666667%; } } +@media (min-width: 768px) { + .col-md { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-md-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-md-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-md-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-md-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-md-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-md-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-md-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-md-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-md-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-md-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-md-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-md-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-md-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-md-first { + order: -1; } + + .order-md-last { + order: 13; } + + .order-md-0 { + order: 0; } + + .order-md-1 { + order: 1; } + + .order-md-2 { + order: 2; } + + .order-md-3 { + order: 3; } + + .order-md-4 { + order: 4; } + + .order-md-5 { + order: 5; } + + .order-md-6 { + order: 6; } + + .order-md-7 { + order: 7; } + + .order-md-8 { + order: 8; } + + .order-md-9 { + order: 9; } + + .order-md-10 { + order: 10; } + + .order-md-11 { + order: 11; } + + .order-md-12 { + order: 12; } + + .offset-md-0 { + margin-left: 0; } + + .offset-md-1 { + margin-left: 8.3333333333%; } + + .offset-md-2 { + margin-left: 16.6666666667%; } + + .offset-md-3 { + margin-left: 25%; } + + .offset-md-4 { + margin-left: 33.3333333333%; } + + .offset-md-5 { + margin-left: 41.6666666667%; } + + .offset-md-6 { + margin-left: 50%; } + + .offset-md-7 { + margin-left: 58.3333333333%; } + + .offset-md-8 { + margin-left: 66.6666666667%; } + + .offset-md-9 { + margin-left: 75%; } + + .offset-md-10 { + margin-left: 83.3333333333%; } + + .offset-md-11 { + margin-left: 91.6666666667%; } } +@media (min-width: 992px) { + .col-lg { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-lg-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-lg-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-lg-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-lg-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-lg-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-lg-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-lg-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-lg-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-lg-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-lg-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-lg-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-lg-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-lg-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-lg-first { + order: -1; } + + .order-lg-last { + order: 13; } + + .order-lg-0 { + order: 0; } + + .order-lg-1 { + order: 1; } + + .order-lg-2 { + order: 2; } + + .order-lg-3 { + order: 3; } + + .order-lg-4 { + order: 4; } + + .order-lg-5 { + order: 5; } + + .order-lg-6 { + order: 6; } + + .order-lg-7 { + order: 7; } + + .order-lg-8 { + order: 8; } + + .order-lg-9 { + order: 9; } + + .order-lg-10 { + order: 10; } + + .order-lg-11 { + order: 11; } + + .order-lg-12 { + order: 12; } + + .offset-lg-0 { + margin-left: 0; } + + .offset-lg-1 { + margin-left: 8.3333333333%; } + + .offset-lg-2 { + margin-left: 16.6666666667%; } + + .offset-lg-3 { + margin-left: 25%; } + + .offset-lg-4 { + margin-left: 33.3333333333%; } + + .offset-lg-5 { + margin-left: 41.6666666667%; } + + .offset-lg-6 { + margin-left: 50%; } + + .offset-lg-7 { + margin-left: 58.3333333333%; } + + .offset-lg-8 { + margin-left: 66.6666666667%; } + + .offset-lg-9 { + margin-left: 75%; } + + .offset-lg-10 { + margin-left: 83.3333333333%; } + + .offset-lg-11 { + margin-left: 91.6666666667%; } } +@media (min-width: 1200px) { + .col-xl { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; } + + .col-xl-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; } + + .col-xl-1 { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; } + + .col-xl-2 { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; } + + .col-xl-3 { + flex: 0 0 25%; + max-width: 25%; } + + .col-xl-4 { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; } + + .col-xl-5 { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; } + + .col-xl-6 { + flex: 0 0 50%; + max-width: 50%; } + + .col-xl-7 { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; } + + .col-xl-8 { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; } + + .col-xl-9 { + flex: 0 0 75%; + max-width: 75%; } + + .col-xl-10 { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; } + + .col-xl-11 { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; } + + .col-xl-12 { + flex: 0 0 100%; + max-width: 100%; } + + .order-xl-first { + order: -1; } + + .order-xl-last { + order: 13; } + + .order-xl-0 { + order: 0; } + + .order-xl-1 { + order: 1; } + + .order-xl-2 { + order: 2; } + + .order-xl-3 { + order: 3; } + + .order-xl-4 { + order: 4; } + + .order-xl-5 { + order: 5; } + + .order-xl-6 { + order: 6; } + + .order-xl-7 { + order: 7; } + + .order-xl-8 { + order: 8; } + + .order-xl-9 { + order: 9; } + + .order-xl-10 { + order: 10; } + + .order-xl-11 { + order: 11; } + + .order-xl-12 { + order: 12; } + + .offset-xl-0 { + margin-left: 0; } + + .offset-xl-1 { + margin-left: 8.3333333333%; } + + .offset-xl-2 { + margin-left: 16.6666666667%; } + + .offset-xl-3 { + margin-left: 25%; } + + .offset-xl-4 { + margin-left: 33.3333333333%; } + + .offset-xl-5 { + margin-left: 41.6666666667%; } + + .offset-xl-6 { + margin-left: 50%; } + + .offset-xl-7 { + margin-left: 58.3333333333%; } + + .offset-xl-8 { + margin-left: 66.6666666667%; } + + .offset-xl-9 { + margin-left: 75%; } + + .offset-xl-10 { + margin-left: 83.3333333333%; } + + .offset-xl-11 { + margin-left: 91.6666666667%; } } +.table { + width: 100%; + margin-bottom: 1rem; + color: #212529; } + .table th, + .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; } + .table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; } + .table tbody + tbody { + border-top: 2px solid #dee2e6; } + +.table-sm th, +.table-sm td { + padding: 0.3rem; } + +.table-bordered { + border: 1px solid #dee2e6; } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6; } + .table-bordered thead th, + .table-bordered thead td { + border-bottom-width: 2px; } + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; } + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); } + +.table-hover tbody tr:hover { + color: #212529; + background-color: rgba(0, 0, 0, 0.075); } + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #c8e3ed; } +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #99cade; } + +.table-hover .table-primary:hover { + background-color: #b5d9e7; } + .table-hover .table-primary:hover > td, + .table-hover .table-primary:hover > th { + background-color: #b5d9e7; } + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d6d8db; } +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #b3b7bb; } + +.table-hover .table-secondary:hover { + background-color: #c8cbcf; } + .table-hover .table-secondary:hover > td, + .table-hover .table-secondary:hover > th { + background-color: #c8cbcf; } + +.table-success, +.table-success > th, +.table-success > td { + background-color: #d8f1c8; } +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #b7e498; } + +.table-hover .table-success:hover { + background-color: #caecb4; } + .table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { + background-color: #caecb4; } + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; } +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #86cfda; } + +.table-hover .table-info:hover { + background-color: #abdde5; } + .table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { + background-color: #abdde5; } + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #feedc4; } +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #fede92; } + +.table-hover .table-warning:hover { + background-color: #fee5ab; } + .table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { + background-color: #fee5ab; } + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f4c7cc; } +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #eb97a0; } + +.table-hover .table-danger:hover { + background-color: #f0b2b9; } + .table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { + background-color: #f0b2b9; } + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; } +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; } + +.table-hover .table-light:hover { + background-color: #ececf6; } + .table-hover .table-light:hover > td, + .table-hover .table-light:hover > th { + background-color: #ececf6; } + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; } +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; } + +.table-hover .table-dark:hover { + background-color: #b9bbbe; } + .table-hover .table-dark:hover > td, + .table-hover .table-dark:hover > th { + background-color: #b9bbbe; } + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); } + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); } + .table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); } + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; } +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; } + +.table-dark { + color: #fff; + background-color: #343a40; } + .table-dark th, + .table-dark td, + .table-dark thead th { + border-color: #454d55; } + .table-dark.table-bordered { + border: 0; } + .table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); } + .table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); } + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-sm > .table-bordered { + border: 0; } } +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-md > .table-bordered { + border: 0; } } +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-lg > .table-bordered { + border: 0; } } +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive-xl > .table-bordered { + border: 0; } } +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; } + .table-responsive > .table-bordered { + border: 0; } + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; } } + .form-control::-ms-expand { + background-color: transparent; + border: 0; } + .form-control:focus { + color: #495057; + background-color: #fff; + border-color: #99cce0; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .form-control::placeholder { + color: #6c757d; + opacity: 1; } + .form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; } + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; } + +.form-control-file, +.form-control-range { + display: block; + width: 100%; } + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; } + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; } + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; } + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; } + .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; } + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +select.form-control[size], select.form-control[multiple] { + height: auto; } + +textarea.form-control { + height: auto; } + +.form-group { + margin-bottom: 1rem; } + +.form-text { + display: block; + margin-top: 0.25rem; } + +.form-row { + display: flex; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; } + .form-row > .col, + .form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; } + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; } + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; } + .form-check-input:disabled ~ .form-check-label { + color: #6c757d; } + +.form-check-label { + margin-bottom: 0; } + +.form-check-inline { + display: inline-flex; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; } + .form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; } + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #75CC39; } + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #212529; + background-color: rgba(117, 204, 57, 0.9); + border-radius: 0.25rem; } + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #75CC39; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #75CC39; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } + .was-validated .form-control:valid ~ .valid-feedback, + .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, + .form-control.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } + +.was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #75CC39; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #75CC39; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } + .was-validated .custom-select:valid ~ .valid-feedback, + .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, + .custom-select.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #75CC39; } +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #75CC39; } + .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #75CC39; } +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; } +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #91d662; + background-color: #91d662; } +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #75CC39; } + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #75CC39; } +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; } +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #75CC39; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #D93749; } + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(217, 55, 73, 0.9); + border-radius: 0.25rem; } + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #D93749; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #D93749; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } + .was-validated .form-control:invalid ~ .invalid-feedback, + .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, + .form-control.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } + +.was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #D93749; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #D93749; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } + .was-validated .custom-select:invalid ~ .invalid-feedback, + .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, + .custom-select.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #D93749; } +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #D93749; } + .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #D93749; } +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; } +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e16270; + background-color: #e16270; } +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #D93749; } + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #D93749; } +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; } +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #D93749; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } + +.form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; } + .form-inline .form-check { + width: 100%; } + @media (min-width: 576px) { + .form-inline label { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 0; } + .form-inline .form-group { + display: flex; + flex: 0 0 auto; + flex-flow: row wrap; + align-items: center; + margin-bottom: 0; } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .form-inline .form-control-plaintext { + display: inline-block; } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; } + .form-inline .form-check { + display: flex; + align-items: center; + justify-content: center; + width: auto; + padding-left: 0; } + .form-inline .form-check-input { + position: relative; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; } + .form-inline .custom-control { + align-items: center; + justify-content: center; } + .form-inline .custom-control-label { + margin-bottom: 0; } } + +.btn { + cursor: pointer; + display: inline-block; + font-weight: 400; + color: #212529; + text-align: center; + vertical-align: middle; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .btn { + transition: none; } } + .btn:hover { + color: #212529; + text-decoration: none; } + .btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .btn.disabled, .btn:disabled { + opacity: 0.65; } + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; } + +.btn-primary { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-primary:hover { + color: #fff; + background-color: #3182a2; + border-color: #2e7a98; } + .btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } + .btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #2e7a98; + border-color: #2b738e; } + .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } + +.btn-secondary { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62; } + .btn-secondary:focus, .btn-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } + .btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b; } + .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } + +.btn-success { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-success:hover { + color: #fff; + background-color: #63b12e; + border-color: #5ea72b; } + .btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } + .btn-success.disabled, .btn-success:disabled { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #5ea72b; + border-color: #589d28; } + .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; } + .btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + .btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; } + .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + +.btn-warning { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-warning:hover { + color: #212529; + background-color: #fdb508; + border-color: #f6ae02; } + .btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } + .btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #f6ae02; + border-color: #e9a502; } + .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } + +.btn-danger { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-danger:hover { + color: #fff; + background-color: #c42537; + border-color: #ba2334; } + .btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } + .btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #ba2334; + border-color: #af2131; } + .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; } + .btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + .btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; } + .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; } + .btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + .btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; } + .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + +.btn-outline-primary { + color: #3A9ABF; + border-color: #3A9ABF; } + .btn-outline-primary:hover { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } + .btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #3A9ABF; + background-color: transparent; } + .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } + +.btn-outline-secondary { + color: #6C757D; + border-color: #6C757D; } + .btn-outline-secondary:hover { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #6C757D; + background-color: transparent; } + .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6C757D; + border-color: #6C757D; } + .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + +.btn-outline-success { + color: #75CC39; + border-color: #75CC39; } + .btn-outline-success:hover { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } + .btn-outline-success.disabled, .btn-outline-success:disabled { + color: #75CC39; + background-color: transparent; } + .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { + color: #212529; + background-color: #75CC39; + border-color: #75CC39; } + .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } + +.btn-outline-info { + color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + .btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; } + .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-warning { + color: #FDC02E; + border-color: #FDC02E; } + .btn-outline-warning:hover { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } + .btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #FDC02E; + background-color: transparent; } + .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #FDC02E; + border-color: #FDC02E; } + .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } + +.btn-outline-danger { + color: #D93749; + border-color: #D93749; } + .btn-outline-danger:hover { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } + .btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #D93749; + background-color: transparent; } + .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #D93749; + border-color: #D93749; } + .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + .btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; } + .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; } + .btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + .btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; } + .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.btn-link { + font-weight: 400; + color: #3A9ABF; + text-decoration: none; } + .btn-link:hover { + color: #286b84; + text-decoration: underline; } + .btn-link:focus, .btn-link.focus { + text-decoration: underline; + box-shadow: none; } + .btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; } + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.btn-block { + display: block; + width: 100%; } + .btn-block + .btn-block { + margin-top: 0.5rem; } + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; } + +.fade { + transition: opacity 0.15s linear; } + @media (prefers-reduced-motion: reduce) { + .fade { + transition: none; } } + .fade:not(.show) { + opacity: 0; } + +.collapse:not(.show) { + display: none; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; } + @media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; } } + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; } + +.dropdown-toggle { + white-space: nowrap; } + .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; } + .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; } + +.dropdown-menu-left { + right: auto; + left: 0; } + +.dropdown-menu-right { + right: 0; + left: auto; } + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; } + + .dropdown-menu-sm-right { + right: 0; + left: auto; } } +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; } + + .dropdown-menu-md-right { + right: 0; + left: auto; } } +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; } + + .dropdown-menu-lg-right { + right: 0; + left: auto; } } +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; } + + .dropdown-menu-xl-right { + right: 0; + left: auto; } } +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; } +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; } +.dropup .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; } +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; } +.dropright .dropdown-toggle:empty::after { + margin-left: 0; } +.dropright .dropdown-toggle::after { + vertical-align: 0; } + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; } +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; } +.dropleft .dropdown-toggle::after { + display: none; } +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; } +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; } +.dropleft .dropdown-toggle::before { + vertical-align: 0; } + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; } + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; } + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; } + .dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; } + .dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #3A9ABF; } + .dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; } + +.dropdown-menu.show { + display: block; } + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; } + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; } + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { + z-index: 1; } + .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 1; } + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .btn-toolbar .input-group { + width: auto; } + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; } +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; } + .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { + margin-left: 0; } + .dropleft .dropdown-toggle-split::before { + margin-right: 0; } + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; } + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; } + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; } + .btn-group-vertical > .btn, + .btn-group-vertical > .btn-group { + width: 100%; } + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; } + .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), + .btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; } + .btn-group-toggle > .btn input[type="radio"], + .btn-group-toggle > .btn input[type="checkbox"], + .btn-group-toggle > .btn-group > .btn input[type="radio"], + .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; } + .input-group > .form-control, + .input-group > .form-control-plaintext, + .input-group > .custom-select, + .input-group > .custom-file { + position: relative; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; } + .input-group > .form-control + .form-control, + .input-group > .form-control + .custom-select, + .input-group > .form-control + .custom-file, + .input-group > .form-control-plaintext + .form-control, + .input-group > .form-control-plaintext + .custom-select, + .input-group > .form-control-plaintext + .custom-file, + .input-group > .custom-select + .form-control, + .input-group > .custom-select + .custom-select, + .input-group > .custom-select + .custom-file, + .input-group > .custom-file + .form-control, + .input-group > .custom-file + .custom-select, + .input-group > .custom-file + .custom-file { + margin-left: -1px; } + .input-group > .form-control:focus, + .input-group > .custom-select:focus, + .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; } + .input-group > .custom-file .custom-file-input:focus { + z-index: 4; } + .input-group > .form-control:not(:last-child), + .input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .input-group > .form-control:not(:first-child), + .input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .input-group > .custom-file { + display: flex; + align-items: center; } + .input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.input-group-prepend, +.input-group-append { + display: flex; } + .input-group-prepend .btn, + .input-group-append .btn { + position: relative; + z-index: 2; } + .input-group-prepend .btn:focus, + .input-group-append .btn:focus { + z-index: 3; } + .input-group-prepend .btn + .btn, + .input-group-prepend .btn + .input-group-text, + .input-group-prepend .input-group-text + .input-group-text, + .input-group-prepend .input-group-text + .btn, + .input-group-append .btn + .btn, + .input-group-append .btn + .input-group-text, + .input-group-append .input-group-text + .input-group-text, + .input-group-append .input-group-text + .btn { + margin-left: -1px; } + +.input-group-prepend { + margin-right: -1px; } + +.input-group-append { + margin-left: -1px; } + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; } + .input-group-text input[type="radio"], + .input-group-text input[type="checkbox"] { + margin-top: 0; } + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); } + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); } + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; } + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; } + +.custom-control-inline { + display: inline-flex; + margin-right: 1rem; } + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; } + .custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #3A9ABF; + background-color: #3A9ABF; } + .custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #99cce0; } + .custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #c0e0ec; + border-color: #c0e0ec; } + .custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; } + .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; } + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; } + .custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; } + .custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; } + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; } +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #3A9ABF; + background-color: #3A9ABF; } +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } + +.custom-radio .custom-control-label::before { + border-radius: 50%; } +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } + +.custom-switch { + padding-left: 2.25rem; } + .custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; } + .custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; } } + .custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + transform: translateX(0.75rem); } + .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 154, 191, 0.5); } + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; + appearance: none; } + .custom-select:focus { + border-color: #99cce0; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; } + .custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; } + .custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; } + .custom-select::-ms-expand { + display: none; } + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; } + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; } + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; } + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; } + .custom-file-input:focus ~ .custom-file-label { + border-color: #99cce0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-file-input:disabled ~ .custom-file-label { + background-color: #e9ecef; } + .custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; } + .custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); } + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; } + .custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0.25rem 0.25rem 0; } + +.custom-range { + width: 100%; + height: calc(1rem + 0.4rem); + padding: 0; + background-color: transparent; + appearance: none; } + .custom-range:focus { + outline: none; } + .custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + .custom-range::-moz-focus-outer { + border: 0; } + .custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #3A9ABF; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; } + @media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + transition: none; } } + .custom-range::-webkit-slider-thumb:active { + background-color: #c0e0ec; } + .custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; } + .custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #3A9ABF; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; } + @media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + transition: none; } } + .custom-range::-moz-range-thumb:active { + background-color: #c0e0ec; } + .custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; } + .custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #3A9ABF; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; } + @media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + transition: none; } } + .custom-range::-ms-thumb:active { + background-color: #c0e0ec; } + .custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; } + .custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; } + .custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; } + .custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; } + .custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; } + .custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd; } + .custom-range:disabled::-moz-range-track { + cursor: default; } + .custom-range:disabled::-ms-thumb { + background-color: #adb5bd; } + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none; } } + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + +.nav-link { + display: block; + padding: 0.5rem 1rem; } + .nav-link:hover, .nav-link:focus { + text-decoration: none; } + .nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; } + +.nav-tabs { + border-bottom: 1px solid #dee2e6; } + .nav-tabs .nav-item { + margin-bottom: -1px; } + .nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; } + .nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; } + .nav-tabs .nav-link.active, + .nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.nav-pills .nav-link { + border-radius: 0.25rem; } +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #3A9ABF; } + +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; } + +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; } + +.tab-content > .tab-pane { + display: none; } +.tab-content > .active { + display: block; } + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: 0.5rem 1rem; } + .navbar > .container, + .navbar > .container-fluid { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; } + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; } + .navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; } + +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + .navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; } + .navbar-nav .dropdown-menu { + position: static; + float: none; } + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; } + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; } + .navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; } + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; } + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 576px) { + .navbar-expand-sm { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-sm .navbar-nav { + flex-direction: row; } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-sm .navbar-toggler { + display: none; } } +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 768px) { + .navbar-expand-md { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-md .navbar-nav { + flex-direction: row; } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-md .navbar-toggler { + display: none; } } +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-lg .navbar-nav { + flex-direction: row; } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-lg .navbar-toggler { + display: none; } } +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; } } +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-xl .navbar-nav { + flex-direction: row; } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-xl .navbar-toggler { + display: none; } } +.navbar-expand { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; } + .navbar-expand .navbar-nav { + flex-direction: row; } + .navbar-expand .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand .navbar-toggler { + display: none; } + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); } +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); } + .navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); } +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); } +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); } +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); } + +.navbar-dark .navbar-brand { + color: #fff; } + .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; } +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); } + .navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); } +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; } +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); } +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-text a { + color: #fff; } + .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; } + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; } + .card > hr { + margin-right: 0; + margin-left: 0; } + .card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + +.card-body { + flex: 1 1 auto; + padding: 1.25rem; } + +.card-title { + margin-bottom: 0.75rem; } + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; } + +.card-text:last-child { + margin-bottom: 0; } + +.card-link:hover { + text-decoration: none; } +.card-link + .card-link { + margin-left: 1.25rem; } + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); } + .card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } + .card-header + .list-group .list-group-item:first-child { + border-top: 0; } + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); } + .card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; } + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; } + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; } + +.card-img { + width: 100%; + border-radius: calc(0.25rem - 1px); } + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); } + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); } + +.card-deck { + display: flex; + flex-direction: column; } + .card-deck .card { + margin-bottom: 15px; } + @media (min-width: 576px) { + .card-deck { + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; } + .card-deck .card { + display: flex; + flex: 1 0 0%; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; } } + +.card-group { + display: flex; + flex-direction: column; } + .card-group > .card { + margin-bottom: 15px; } + @media (min-width: 576px) { + .card-group { + flex-flow: row wrap; } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; } } + +.card-columns .card { + margin-bottom: 0.75rem; } +@media (min-width: 576px) { + .card-columns { + column-count: 3; + column-gap: 1.25rem; + orphans: 1; + widows: 1; } + .card-columns .card { + display: inline-block; + width: 100%; } } + +.accordion > .card { + overflow: hidden; } + .accordion > .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; } + .accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; } + .accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + .accordion > .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; } + .accordion > .card .card-header { + margin-bottom: -1px; } + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; } + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; } + .breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; } +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; } +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; } +.breadcrumb-item.active { + color: #6c757d; } + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; } + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #3A9ABF; + background-color: #fff; + border: 1px solid #dee2e6; } + .page-link:hover { + z-index: 2; + color: #286b84; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; } + .page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; } +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; } + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; } +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; } +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; } + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; } +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; } +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; } + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .badge { + transition: none; } } + a.badge:hover, a.badge:focus { + text-decoration: none; } + .badge:empty { + display: none; } + +.btn .badge { + position: relative; + top: -1px; } + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; } + +.badge-primary { + color: #fff; + background-color: #3A9ABF; } + a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #2e7a98; } + a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } + +.badge-secondary { + color: #fff; + background-color: #6C757D; } + a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #545b62; } + a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + +.badge-success { + color: #212529; + background-color: #75CC39; } + a.badge-success:hover, a.badge-success:focus { + color: #212529; + background-color: #5ea72b; } + a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } + +.badge-info { + color: #fff; + background-color: #17a2b8; } + a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #117a8b; } + a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.badge-warning { + color: #212529; + background-color: #FDC02E; } + a.badge-warning:hover, a.badge-warning:focus { + color: #212529; + background-color: #f6ae02; } + a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } + +.badge-danger { + color: #fff; + background-color: #D93749; } + a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #ba2334; } + a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } + +.badge-light { + color: #212529; + background-color: #f8f9fa; } + a.badge-light:hover, a.badge-light:focus { + color: #212529; + background-color: #dae0e5; } + a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.badge-dark { + color: #fff; + background-color: #343a40; } + a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; } + a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; } + @media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; } } + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; } + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; } + +.alert-heading { + color: inherit; } + +.alert-link { + font-weight: 700; } + +.alert-dismissible { + padding-right: 4rem; } + .alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; } + +.alert-primary { + color: #1e5063; + background-color: #d8ebf2; + border-color: #c8e3ed; } + .alert-primary hr { + border-top-color: #b5d9e7; } + .alert-primary .alert-link { + color: #12303c; } + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db; } + .alert-secondary hr { + border-top-color: #c8cbcf; } + .alert-secondary .alert-link { + color: #202326; } + +.alert-success { + color: #3d6a1e; + background-color: #e3f5d7; + border-color: #d8f1c8; } + .alert-success hr { + border-top-color: #caecb4; } + .alert-success .alert-link { + color: #264213; } + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; } + .alert-info hr { + border-top-color: #abdde5; } + .alert-info .alert-link { + color: #062c33; } + +.alert-warning { + color: #846418; + background-color: #fff2d5; + border-color: #feedc4; } + .alert-warning hr { + border-top-color: #fee5ab; } + .alert-warning .alert-link { + color: #594310; } + +.alert-danger { + color: #711d26; + background-color: #f7d7db; + border-color: #f4c7cc; } + .alert-danger hr { + border-top-color: #f0b2b9; } + .alert-danger .alert-link { + color: #481318; } + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; } + .alert-light hr { + border-top-color: #ececf6; } + .alert-light .alert-link { + color: #686868; } + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; } + .alert-dark hr { + border-top-color: #b9bbbe; } + .alert-dark .alert-link { + color: #040505; } + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; } + to { + background-position: 0 0; } } +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; } + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #3A9ABF; + transition: width 0.6s ease; } + @media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; } } + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; } + +.progress-bar-animated { + animation: progress-bar-stripes 1s linear infinite; } + @media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; } } + +.media { + display: flex; + align-items: flex-start; } + +.media-body { + flex: 1; } + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; } + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; } + .list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; } + .list-group-item-action:active { + color: #212529; + background-color: #e9ecef; } + +.list-group-item { + position: relative; + display: block; + padding: 0.25rem 0.5rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); } + .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + .list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; } + .list-group-item.active { + z-index: 2; + color: #fff; + background-color: #3A9ABF; + border-color: #3A9ABF; } + +.list-group-horizontal { + flex-direction: row; } + .list-group-horizontal .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; } + .list-group-horizontal-sm .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-sm .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; } + .list-group-horizontal-md .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-md .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-md .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; } + .list-group-horizontal-lg .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-lg .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; } + .list-group-horizontal-xl .list-group-item { + margin-right: -1px; + margin-bottom: 0; } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; } + .list-group-horizontal-xl .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; } } +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; } + .list-group-flush .list-group-item:last-child { + margin-bottom: -1px; } +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; } +.list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; } + +.list-group-item-primary { + color: #1e5063; + background-color: #c8e3ed; } + .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #1e5063; + background-color: #b5d9e7; } + .list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #1e5063; + border-color: #1e5063; } + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db; } + .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #383d41; + background-color: #c8cbcf; } + .list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41; } + +.list-group-item-success { + color: #3d6a1e; + background-color: #d8f1c8; } + .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #3d6a1e; + background-color: #caecb4; } + .list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #3d6a1e; + border-color: #3d6a1e; } + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; } + .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; } + .list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; } + +.list-group-item-warning { + color: #846418; + background-color: #feedc4; } + .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #846418; + background-color: #fee5ab; } + .list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #846418; + border-color: #846418; } + +.list-group-item-danger { + color: #711d26; + background-color: #f4c7cc; } + .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #711d26; + background-color: #f0b2b9; } + .list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #711d26; + border-color: #711d26; } + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; } + .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; } + .list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; } + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; } + .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; } + .list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; } + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; } + .close:hover { + color: #000; + text-decoration: none; } + .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; } + +button.close { + padding: 0; + background-color: transparent; + border: 0; + appearance: none; } + +a.close.disabled { + pointer-events: none; } + +.toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; } + .toast:not(:last-child) { + margin-bottom: 0.75rem; } + .toast.showing { + opacity: 1; } + .toast.show { + display: block; + opacity: 1; } + .toast.hide { + display: none; } + +.toast-header { + display: flex; + align-items: center; + padding: 0.25rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); } + +.toast-body { + padding: 0.75rem; } + +.modal-open { + overflow: hidden; } + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; } + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; } + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; } + .modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); } + @media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; } } + .modal.show .modal-dialog { + transform: none; } + +.modal-dialog-scrollable { + display: flex; + max-height: calc(100% - 1rem); } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; } + .modal-dialog-scrollable .modal-header, + .modal-dialog-scrollable .modal-footer { + flex-shrink: 0; } + .modal-dialog-scrollable .modal-body { + overflow-y: auto; } + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); } + .modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: ""; } + .modal-dialog-centered.modal-dialog-scrollable { + flex-direction: column; + justify-content: center; + height: 100%; } + .modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; } + .modal-dialog-centered.modal-dialog-scrollable::before { + content: none; } + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; } + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; } + .modal-backdrop.fade { + opacity: 0; } + .modal-backdrop.show { + opacity: 0.5; } + +.modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; } + .modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; } + +.modal-title { + margin-bottom: 0; + line-height: 1.5; } + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; } + +.modal-footer { + display: flex; + align-items: center; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; } + .modal-footer > :not(:first-child) { + margin-left: .25rem; } + .modal-footer > :not(:last-child) { + margin-right: .25rem; } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; } + + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); } + + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); } + + .modal-sm { + max-width: 300px; } } +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; } } +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; } } +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; } + .tooltip.show { + opacity: 0.9; } + .tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; } + .tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; } + .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; } + .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; } + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; } + .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; } + .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; } + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; } + .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; } + .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; } + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; } + .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; } + .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; } + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; } + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; } + .popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; } + .popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; } + .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); } + .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); } + .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; } + .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; } + .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); } + .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; } + .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); } + .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); } + .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; } + .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; } + .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; } + .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); } + .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; } + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); } + .popover-header:empty { + display: none; } + +.popover-body { + padding: 0.5rem 0.75rem; + color: #212529; } + +.carousel { + position: relative; } + +.carousel.pointer-event { + touch-action: pan-y; } + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; } + .carousel-inner::after { + display: block; + clear: both; + content: ""; } + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; } } + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; } + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + transform: translateX(100%); } + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + transform: translateX(-100%); } + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; } +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; } +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: 0s 0.6s opacity; } + @media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; } } + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; } + @media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; } } + .carousel-control-prev:hover, .carousel-control-prev:focus, + .carousel-control-next:hover, + .carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; } + +.carousel-control-prev { + left: 0; } + +.carousel-control-next { + right: 0; } + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; } + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: flex; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; } + .carousel-indicators li { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; } + @media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; } } + .carousel-indicators .active { + opacity: 1; } + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; } + +@keyframes spinner-border { + to { + transform: rotate(360deg); } } +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + animation: spinner-border .75s linear infinite; } + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; } + +@keyframes spinner-grow { + 0% { + transform: scale(0); } + 50% { + opacity: 1; } } +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + animation: spinner-grow .75s linear infinite; } + +.spinner-grow-sm { + width: 1rem; + height: 1rem; } + +.align-baseline { + vertical-align: baseline !important; } + +.align-top { + vertical-align: top !important; } + +.align-middle { + vertical-align: middle !important; } + +.align-bottom { + vertical-align: bottom !important; } + +.align-text-bottom { + vertical-align: text-bottom !important; } + +.align-text-top { + vertical-align: text-top !important; } + +.bg-primary { + background-color: #3A9ABF !important; } + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #2e7a98 !important; } + +.bg-secondary { + background-color: #6C757D !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #545b62 !important; } + +.bg-success { + background-color: #75CC39 !important; } + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #5ea72b !important; } + +.bg-info { + background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; } + +.bg-warning { + background-color: #FDC02E !important; } + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #f6ae02 !important; } + +.bg-danger { + background-color: #D93749 !important; } + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #ba2334 !important; } + +.bg-light { + background-color: #f8f9fa !important; } + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; } + +.bg-dark { + background-color: #343a40 !important; } + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; } + +.bg-white { + background-color: #fff !important; } + +.bg-transparent { + background-color: transparent !important; } + +.border { + border: 1px solid #dee2e6 !important; } + +.border-top { + border-top: 1px solid #dee2e6 !important; } + +.border-right { + border-right: 1px solid #dee2e6 !important; } + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; } + +.border-left { + border-left: 1px solid #dee2e6 !important; } + +.border-0 { + border: 0 !important; } + +.border-top-0 { + border-top: 0 !important; } + +.border-right-0 { + border-right: 0 !important; } + +.border-bottom-0 { + border-bottom: 0 !important; } + +.border-left-0 { + border-left: 0 !important; } + +.border-primary { + border-color: #3A9ABF !important; } + +.border-secondary { + border-color: #6C757D !important; } + +.border-success { + border-color: #75CC39 !important; } + +.border-info { + border-color: #17a2b8 !important; } + +.border-warning { + border-color: #FDC02E !important; } + +.border-danger { + border-color: #D93749 !important; } + +.border-light { + border-color: #f8f9fa !important; } + +.border-dark { + border-color: #343a40 !important; } + +.border-white { + border-color: #fff !important; } + +.rounded-sm { + border-radius: 0.2rem !important; } + +.rounded { + border-radius: 0.25rem !important; } + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; } + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; } + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-lg { + border-radius: 0.3rem !important; } + +.rounded-circle { + border-radius: 50% !important; } + +.rounded-pill { + border-radius: 50rem !important; } + +.rounded-0 { + border-radius: 0 !important; } + +.clearfix::after { + display: block; + clear: both; + content: ""; } + +.d-none { + display: none !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block !important; } + +.d-table { + display: table !important; } + +.d-table-row { + display: table-row !important; } + +.d-table-cell { + display: table-cell !important; } + +.d-flex { + display: flex !important; } + +.d-inline-flex { + display: inline-flex !important; } + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; } + + .d-sm-inline { + display: inline !important; } + + .d-sm-inline-block { + display: inline-block !important; } + + .d-sm-block { + display: block !important; } + + .d-sm-table { + display: table !important; } + + .d-sm-table-row { + display: table-row !important; } + + .d-sm-table-cell { + display: table-cell !important; } + + .d-sm-flex { + display: flex !important; } + + .d-sm-inline-flex { + display: inline-flex !important; } } +@media (min-width: 768px) { + .d-md-none { + display: none !important; } + + .d-md-inline { + display: inline !important; } + + .d-md-inline-block { + display: inline-block !important; } + + .d-md-block { + display: block !important; } + + .d-md-table { + display: table !important; } + + .d-md-table-row { + display: table-row !important; } + + .d-md-table-cell { + display: table-cell !important; } + + .d-md-flex { + display: flex !important; } + + .d-md-inline-flex { + display: inline-flex !important; } } +@media (min-width: 992px) { + .d-lg-none { + display: none !important; } + + .d-lg-inline { + display: inline !important; } + + .d-lg-inline-block { + display: inline-block !important; } + + .d-lg-block { + display: block !important; } + + .d-lg-table { + display: table !important; } + + .d-lg-table-row { + display: table-row !important; } + + .d-lg-table-cell { + display: table-cell !important; } + + .d-lg-flex { + display: flex !important; } + + .d-lg-inline-flex { + display: inline-flex !important; } } +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; } + + .d-xl-inline { + display: inline !important; } + + .d-xl-inline-block { + display: inline-block !important; } + + .d-xl-block { + display: block !important; } + + .d-xl-table { + display: table !important; } + + .d-xl-table-row { + display: table-row !important; } + + .d-xl-table-cell { + display: table-cell !important; } + + .d-xl-flex { + display: flex !important; } + + .d-xl-inline-flex { + display: inline-flex !important; } } +@media print { + .d-print-none { + display: none !important; } + + .d-print-inline { + display: inline !important; } + + .d-print-inline-block { + display: inline-block !important; } + + .d-print-block { + display: block !important; } + + .d-print-table { + display: table !important; } + + .d-print-table-row { + display: table-row !important; } + + .d-print-table-cell { + display: table-cell !important; } + + .d-print-flex { + display: flex !important; } + + .d-print-inline-flex { + display: inline-flex !important; } } +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; } + .embed-responsive::before { + display: block; + content: ""; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; } + +.embed-responsive-21by9::before { + padding-top: 42.8571428571%; } + +.embed-responsive-16by9::before { + padding-top: 56.25%; } + +.embed-responsive-4by3::before { + padding-top: 75%; } + +.embed-responsive-1by1::before { + padding-top: 100%; } + +.flex-row { + flex-direction: row !important; } + +.flex-column { + flex-direction: column !important; } + +.flex-row-reverse { + flex-direction: row-reverse !important; } + +.flex-column-reverse { + flex-direction: column-reverse !important; } + +.flex-wrap { + flex-wrap: wrap !important; } + +.flex-nowrap { + flex-wrap: nowrap !important; } + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; } + +.flex-fill { + flex: 1 1 auto !important; } + +.flex-grow-0 { + flex-grow: 0 !important; } + +.flex-grow-1 { + flex-grow: 1 !important; } + +.flex-shrink-0 { + flex-shrink: 0 !important; } + +.flex-shrink-1 { + flex-shrink: 1 !important; } + +.justify-content-start { + justify-content: flex-start !important; } + +.justify-content-end { + justify-content: flex-end !important; } + +.justify-content-center { + justify-content: center !important; } + +.justify-content-between { + justify-content: space-between !important; } + +.justify-content-around { + justify-content: space-around !important; } + +.align-items-start { + align-items: flex-start !important; } + +.align-items-end { + align-items: flex-end !important; } + +.align-items-center { + align-items: center !important; } + +.align-items-baseline { + align-items: baseline !important; } + +.align-items-stretch { + align-items: stretch !important; } + +.align-content-start { + align-content: flex-start !important; } + +.align-content-end { + align-content: flex-end !important; } + +.align-content-center { + align-content: center !important; } + +.align-content-between { + align-content: space-between !important; } + +.align-content-around { + align-content: space-around !important; } + +.align-content-stretch { + align-content: stretch !important; } + +.align-self-auto { + align-self: auto !important; } + +.align-self-start { + align-self: flex-start !important; } + +.align-self-end { + align-self: flex-end !important; } + +.align-self-center { + align-self: center !important; } + +.align-self-baseline { + align-self: baseline !important; } + +.align-self-stretch { + align-self: stretch !important; } + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; } + + .flex-sm-column { + flex-direction: column !important; } + + .flex-sm-row-reverse { + flex-direction: row-reverse !important; } + + .flex-sm-column-reverse { + flex-direction: column-reverse !important; } + + .flex-sm-wrap { + flex-wrap: wrap !important; } + + .flex-sm-nowrap { + flex-wrap: nowrap !important; } + + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-sm-fill { + flex: 1 1 auto !important; } + + .flex-sm-grow-0 { + flex-grow: 0 !important; } + + .flex-sm-grow-1 { + flex-grow: 1 !important; } + + .flex-sm-shrink-0 { + flex-shrink: 0 !important; } + + .flex-sm-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-sm-start { + justify-content: flex-start !important; } + + .justify-content-sm-end { + justify-content: flex-end !important; } + + .justify-content-sm-center { + justify-content: center !important; } + + .justify-content-sm-between { + justify-content: space-between !important; } + + .justify-content-sm-around { + justify-content: space-around !important; } + + .align-items-sm-start { + align-items: flex-start !important; } + + .align-items-sm-end { + align-items: flex-end !important; } + + .align-items-sm-center { + align-items: center !important; } + + .align-items-sm-baseline { + align-items: baseline !important; } + + .align-items-sm-stretch { + align-items: stretch !important; } + + .align-content-sm-start { + align-content: flex-start !important; } + + .align-content-sm-end { + align-content: flex-end !important; } + + .align-content-sm-center { + align-content: center !important; } + + .align-content-sm-between { + align-content: space-between !important; } + + .align-content-sm-around { + align-content: space-around !important; } + + .align-content-sm-stretch { + align-content: stretch !important; } + + .align-self-sm-auto { + align-self: auto !important; } + + .align-self-sm-start { + align-self: flex-start !important; } + + .align-self-sm-end { + align-self: flex-end !important; } + + .align-self-sm-center { + align-self: center !important; } + + .align-self-sm-baseline { + align-self: baseline !important; } + + .align-self-sm-stretch { + align-self: stretch !important; } } +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; } + + .flex-md-column { + flex-direction: column !important; } + + .flex-md-row-reverse { + flex-direction: row-reverse !important; } + + .flex-md-column-reverse { + flex-direction: column-reverse !important; } + + .flex-md-wrap { + flex-wrap: wrap !important; } + + .flex-md-nowrap { + flex-wrap: nowrap !important; } + + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-md-fill { + flex: 1 1 auto !important; } + + .flex-md-grow-0 { + flex-grow: 0 !important; } + + .flex-md-grow-1 { + flex-grow: 1 !important; } + + .flex-md-shrink-0 { + flex-shrink: 0 !important; } + + .flex-md-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-md-start { + justify-content: flex-start !important; } + + .justify-content-md-end { + justify-content: flex-end !important; } + + .justify-content-md-center { + justify-content: center !important; } + + .justify-content-md-between { + justify-content: space-between !important; } + + .justify-content-md-around { + justify-content: space-around !important; } + + .align-items-md-start { + align-items: flex-start !important; } + + .align-items-md-end { + align-items: flex-end !important; } + + .align-items-md-center { + align-items: center !important; } + + .align-items-md-baseline { + align-items: baseline !important; } + + .align-items-md-stretch { + align-items: stretch !important; } + + .align-content-md-start { + align-content: flex-start !important; } + + .align-content-md-end { + align-content: flex-end !important; } + + .align-content-md-center { + align-content: center !important; } + + .align-content-md-between { + align-content: space-between !important; } + + .align-content-md-around { + align-content: space-around !important; } + + .align-content-md-stretch { + align-content: stretch !important; } + + .align-self-md-auto { + align-self: auto !important; } + + .align-self-md-start { + align-self: flex-start !important; } + + .align-self-md-end { + align-self: flex-end !important; } + + .align-self-md-center { + align-self: center !important; } + + .align-self-md-baseline { + align-self: baseline !important; } + + .align-self-md-stretch { + align-self: stretch !important; } } +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; } + + .flex-lg-column { + flex-direction: column !important; } + + .flex-lg-row-reverse { + flex-direction: row-reverse !important; } + + .flex-lg-column-reverse { + flex-direction: column-reverse !important; } + + .flex-lg-wrap { + flex-wrap: wrap !important; } + + .flex-lg-nowrap { + flex-wrap: nowrap !important; } + + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-lg-fill { + flex: 1 1 auto !important; } + + .flex-lg-grow-0 { + flex-grow: 0 !important; } + + .flex-lg-grow-1 { + flex-grow: 1 !important; } + + .flex-lg-shrink-0 { + flex-shrink: 0 !important; } + + .flex-lg-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-lg-start { + justify-content: flex-start !important; } + + .justify-content-lg-end { + justify-content: flex-end !important; } + + .justify-content-lg-center { + justify-content: center !important; } + + .justify-content-lg-between { + justify-content: space-between !important; } + + .justify-content-lg-around { + justify-content: space-around !important; } + + .align-items-lg-start { + align-items: flex-start !important; } + + .align-items-lg-end { + align-items: flex-end !important; } + + .align-items-lg-center { + align-items: center !important; } + + .align-items-lg-baseline { + align-items: baseline !important; } + + .align-items-lg-stretch { + align-items: stretch !important; } + + .align-content-lg-start { + align-content: flex-start !important; } + + .align-content-lg-end { + align-content: flex-end !important; } + + .align-content-lg-center { + align-content: center !important; } + + .align-content-lg-between { + align-content: space-between !important; } + + .align-content-lg-around { + align-content: space-around !important; } + + .align-content-lg-stretch { + align-content: stretch !important; } + + .align-self-lg-auto { + align-self: auto !important; } + + .align-self-lg-start { + align-self: flex-start !important; } + + .align-self-lg-end { + align-self: flex-end !important; } + + .align-self-lg-center { + align-self: center !important; } + + .align-self-lg-baseline { + align-self: baseline !important; } + + .align-self-lg-stretch { + align-self: stretch !important; } } +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; } + + .flex-xl-column { + flex-direction: column !important; } + + .flex-xl-row-reverse { + flex-direction: row-reverse !important; } + + .flex-xl-column-reverse { + flex-direction: column-reverse !important; } + + .flex-xl-wrap { + flex-wrap: wrap !important; } + + .flex-xl-nowrap { + flex-wrap: nowrap !important; } + + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; } + + .flex-xl-fill { + flex: 1 1 auto !important; } + + .flex-xl-grow-0 { + flex-grow: 0 !important; } + + .flex-xl-grow-1 { + flex-grow: 1 !important; } + + .flex-xl-shrink-0 { + flex-shrink: 0 !important; } + + .flex-xl-shrink-1 { + flex-shrink: 1 !important; } + + .justify-content-xl-start { + justify-content: flex-start !important; } + + .justify-content-xl-end { + justify-content: flex-end !important; } + + .justify-content-xl-center { + justify-content: center !important; } + + .justify-content-xl-between { + justify-content: space-between !important; } + + .justify-content-xl-around { + justify-content: space-around !important; } + + .align-items-xl-start { + align-items: flex-start !important; } + + .align-items-xl-end { + align-items: flex-end !important; } + + .align-items-xl-center { + align-items: center !important; } + + .align-items-xl-baseline { + align-items: baseline !important; } + + .align-items-xl-stretch { + align-items: stretch !important; } + + .align-content-xl-start { + align-content: flex-start !important; } + + .align-content-xl-end { + align-content: flex-end !important; } + + .align-content-xl-center { + align-content: center !important; } + + .align-content-xl-between { + align-content: space-between !important; } + + .align-content-xl-around { + align-content: space-around !important; } + + .align-content-xl-stretch { + align-content: stretch !important; } + + .align-self-xl-auto { + align-self: auto !important; } + + .align-self-xl-start { + align-self: flex-start !important; } + + .align-self-xl-end { + align-self: flex-end !important; } + + .align-self-xl-center { + align-self: center !important; } + + .align-self-xl-baseline { + align-self: baseline !important; } + + .align-self-xl-stretch { + align-self: stretch !important; } } +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-none { + float: none !important; } + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; } + + .float-sm-right { + float: right !important; } + + .float-sm-none { + float: none !important; } } +@media (min-width: 768px) { + .float-md-left { + float: left !important; } + + .float-md-right { + float: right !important; } + + .float-md-none { + float: none !important; } } +@media (min-width: 992px) { + .float-lg-left { + float: left !important; } + + .float-lg-right { + float: right !important; } + + .float-lg-none { + float: none !important; } } +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; } + + .float-xl-right { + float: right !important; } + + .float-xl-none { + float: none !important; } } +.overflow-auto { + overflow: auto !important; } + +.overflow-hidden { + overflow: hidden !important; } + +.position-static { + position: static !important; } + +.position-relative { + position: relative !important; } + +.position-absolute { + position: absolute !important; } + +.position-fixed { + position: fixed !important; } + +.position-sticky { + position: sticky !important; } + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; } + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; } + +@supports (position: sticky) { + .sticky-top { + position: sticky; + top: 0; + z-index: 1020; } } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; } + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } + +.shadow-none { + box-shadow: none !important; } + +.w-25 { + width: 25% !important; } + +.w-50 { + width: 50% !important; } + +.w-75 { + width: 75% !important; } + +.w-100 { + width: 100% !important; } + +.w-auto { + width: auto !important; } + +.h-25 { + height: 25% !important; } + +.h-50 { + height: 50% !important; } + +.h-75 { + height: 75% !important; } + +.h-100 { + height: 100% !important; } + +.h-auto { + height: auto !important; } + +.mw-100 { + max-width: 100% !important; } + +.mh-100 { + max-height: 100% !important; } + +.min-vw-100 { + min-width: 100vw !important; } + +.min-vh-100 { + min-height: 100vh !important; } + +.vw-100 { + width: 100vw !important; } + +.vh-100 { + height: 100vh !important; } + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); } + +.m-0 { + margin: 0 !important; } + +.mt-0, +.my-0 { + margin-top: 0 !important; } + +.mr-0, +.mx-0 { + margin-right: 0 !important; } + +.mb-0, +.my-0 { + margin-bottom: 0 !important; } + +.ml-0, +.mx-0 { + margin-left: 0 !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; } + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; } + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; } + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; } + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; } + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; } + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; } + +.m-3 { + margin: 1rem !important; } + +.mt-3, +.my-3 { + margin-top: 1rem !important; } + +.mr-3, +.mx-3 { + margin-right: 1rem !important; } + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; } + +.ml-3, +.mx-3 { + margin-left: 1rem !important; } + +.m-4 { + margin: 1.5rem !important; } + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; } + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; } + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; } + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; } + +.m-5 { + margin: 3rem !important; } + +.mt-5, +.my-5 { + margin-top: 3rem !important; } + +.mr-5, +.mx-5 { + margin-right: 3rem !important; } + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; } + +.ml-5, +.mx-5 { + margin-left: 3rem !important; } + +.p-0 { + padding: 0 !important; } + +.pt-0, +.py-0 { + padding-top: 0 !important; } + +.pr-0, +.px-0 { + padding-right: 0 !important; } + +.pb-0, +.py-0 { + padding-bottom: 0 !important; } + +.pl-0, +.px-0 { + padding-left: 0 !important; } + +.p-1 { + padding: 0.25rem !important; } + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; } + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; } + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; } + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; } + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; } + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; } + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; } + +.p-3 { + padding: 1rem !important; } + +.pt-3, +.py-3 { + padding-top: 1rem !important; } + +.pr-3, +.px-3 { + padding-right: 1rem !important; } + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; } + +.pl-3, +.px-3 { + padding-left: 1rem !important; } + +.p-4 { + padding: 1.5rem !important; } + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; } + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; } + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; } + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; } + +.p-5 { + padding: 3rem !important; } + +.pt-5, +.py-5 { + padding-top: 3rem !important; } + +.pr-5, +.px-5 { + padding-right: 3rem !important; } + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; } + +.pl-5, +.px-5 { + padding-left: 3rem !important; } + +.m-n1 { + margin: -0.25rem !important; } + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; } + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; } + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; } + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; } + +.m-n2 { + margin: -0.5rem !important; } + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; } + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; } + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; } + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; } + +.m-n3 { + margin: -1rem !important; } + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; } + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; } + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; } + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; } + +.m-n4 { + margin: -1.5rem !important; } + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; } + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; } + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; } + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; } + +.m-n5 { + margin: -3rem !important; } + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; } + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; } + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; } + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; } + +.m-auto { + margin: auto !important; } + +.mt-auto, +.my-auto { + margin-top: auto !important; } + +.mr-auto, +.mx-auto { + margin-right: auto !important; } + +.mb-auto, +.my-auto { + margin-bottom: auto !important; } + +.ml-auto, +.mx-auto { + margin-left: auto !important; } + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; } + + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; } + + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; } + + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; } + + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; } + + .m-sm-1 { + margin: 0.25rem !important; } + + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; } + + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; } + + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; } + + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; } + + .m-sm-2 { + margin: 0.5rem !important; } + + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; } + + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; } + + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; } + + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; } + + .m-sm-3 { + margin: 1rem !important; } + + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; } + + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; } + + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; } + + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; } + + .m-sm-4 { + margin: 1.5rem !important; } + + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; } + + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; } + + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; } + + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; } + + .m-sm-5 { + margin: 3rem !important; } + + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; } + + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; } + + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; } + + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; } + + .p-sm-0 { + padding: 0 !important; } + + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; } + + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; } + + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; } + + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; } + + .p-sm-1 { + padding: 0.25rem !important; } + + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; } + + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; } + + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; } + + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; } + + .p-sm-2 { + padding: 0.5rem !important; } + + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; } + + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; } + + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; } + + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; } + + .p-sm-3 { + padding: 1rem !important; } + + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; } + + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; } + + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; } + + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; } + + .p-sm-4 { + padding: 1.5rem !important; } + + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; } + + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; } + + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; } + + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; } + + .p-sm-5 { + padding: 3rem !important; } + + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; } + + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; } + + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; } + + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; } + + .m-sm-n1 { + margin: -0.25rem !important; } + + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; } + + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; } + + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; } + + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; } + + .m-sm-n2 { + margin: -0.5rem !important; } + + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; } + + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; } + + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; } + + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; } + + .m-sm-n3 { + margin: -1rem !important; } + + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; } + + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; } + + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; } + + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; } + + .m-sm-n4 { + margin: -1.5rem !important; } + + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; } + + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; } + + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; } + + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; } + + .m-sm-n5 { + margin: -3rem !important; } + + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; } + + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; } + + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; } + + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; } + + .m-sm-auto { + margin: auto !important; } + + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; } + + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; } + + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; } + + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; } } +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; } + + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; } + + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; } + + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; } + + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; } + + .m-md-1 { + margin: 0.25rem !important; } + + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; } + + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; } + + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; } + + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; } + + .m-md-2 { + margin: 0.5rem !important; } + + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; } + + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; } + + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; } + + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; } + + .m-md-3 { + margin: 1rem !important; } + + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; } + + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; } + + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; } + + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; } + + .m-md-4 { + margin: 1.5rem !important; } + + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; } + + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; } + + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; } + + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; } + + .m-md-5 { + margin: 3rem !important; } + + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; } + + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; } + + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; } + + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; } + + .p-md-0 { + padding: 0 !important; } + + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; } + + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; } + + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; } + + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; } + + .p-md-1 { + padding: 0.25rem !important; } + + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; } + + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; } + + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; } + + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; } + + .p-md-2 { + padding: 0.5rem !important; } + + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; } + + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; } + + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; } + + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; } + + .p-md-3 { + padding: 1rem !important; } + + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; } + + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; } + + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; } + + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; } + + .p-md-4 { + padding: 1.5rem !important; } + + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; } + + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; } + + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; } + + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; } + + .p-md-5 { + padding: 3rem !important; } + + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; } + + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; } + + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; } + + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; } + + .m-md-n1 { + margin: -0.25rem !important; } + + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; } + + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; } + + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; } + + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; } + + .m-md-n2 { + margin: -0.5rem !important; } + + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; } + + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; } + + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; } + + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; } + + .m-md-n3 { + margin: -1rem !important; } + + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; } + + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; } + + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; } + + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; } + + .m-md-n4 { + margin: -1.5rem !important; } + + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; } + + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; } + + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; } + + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; } + + .m-md-n5 { + margin: -3rem !important; } + + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; } + + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; } + + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; } + + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; } + + .m-md-auto { + margin: auto !important; } + + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; } + + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; } + + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; } + + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; } } +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; } + + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; } + + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; } + + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; } + + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; } + + .m-lg-1 { + margin: 0.25rem !important; } + + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; } + + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; } + + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; } + + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; } + + .m-lg-2 { + margin: 0.5rem !important; } + + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; } + + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; } + + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; } + + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; } + + .m-lg-3 { + margin: 1rem !important; } + + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; } + + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; } + + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; } + + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; } + + .m-lg-4 { + margin: 1.5rem !important; } + + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; } + + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; } + + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; } + + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; } + + .m-lg-5 { + margin: 3rem !important; } + + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; } + + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; } + + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; } + + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; } + + .p-lg-0 { + padding: 0 !important; } + + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; } + + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; } + + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; } + + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; } + + .p-lg-1 { + padding: 0.25rem !important; } + + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; } + + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; } + + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; } + + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; } + + .p-lg-2 { + padding: 0.5rem !important; } + + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; } + + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; } + + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; } + + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; } + + .p-lg-3 { + padding: 1rem !important; } + + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; } + + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; } + + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; } + + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; } + + .p-lg-4 { + padding: 1.5rem !important; } + + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; } + + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; } + + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; } + + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; } + + .p-lg-5 { + padding: 3rem !important; } + + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; } + + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; } + + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; } + + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; } + + .m-lg-n1 { + margin: -0.25rem !important; } + + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; } + + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; } + + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; } + + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; } + + .m-lg-n2 { + margin: -0.5rem !important; } + + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; } + + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; } + + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; } + + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; } + + .m-lg-n3 { + margin: -1rem !important; } + + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; } + + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; } + + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; } + + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; } + + .m-lg-n4 { + margin: -1.5rem !important; } + + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; } + + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; } + + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; } + + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; } + + .m-lg-n5 { + margin: -3rem !important; } + + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; } + + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; } + + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; } + + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; } + + .m-lg-auto { + margin: auto !important; } + + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; } + + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; } + + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; } + + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; } } +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; } + + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; } + + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; } + + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; } + + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; } + + .m-xl-1 { + margin: 0.25rem !important; } + + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; } + + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; } + + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; } + + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; } + + .m-xl-2 { + margin: 0.5rem !important; } + + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; } + + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; } + + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; } + + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; } + + .m-xl-3 { + margin: 1rem !important; } + + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; } + + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; } + + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; } + + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; } + + .m-xl-4 { + margin: 1.5rem !important; } + + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; } + + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; } + + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; } + + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; } + + .m-xl-5 { + margin: 3rem !important; } + + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; } + + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; } + + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; } + + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; } + + .p-xl-0 { + padding: 0 !important; } + + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; } + + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; } + + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; } + + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; } + + .p-xl-1 { + padding: 0.25rem !important; } + + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; } + + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; } + + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; } + + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; } + + .p-xl-2 { + padding: 0.5rem !important; } + + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; } + + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; } + + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; } + + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; } + + .p-xl-3 { + padding: 1rem !important; } + + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; } + + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; } + + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; } + + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; } + + .p-xl-4 { + padding: 1.5rem !important; } + + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; } + + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; } + + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; } + + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; } + + .p-xl-5 { + padding: 3rem !important; } + + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; } + + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; } + + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; } + + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; } + + .m-xl-n1 { + margin: -0.25rem !important; } + + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; } + + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; } + + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; } + + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; } + + .m-xl-n2 { + margin: -0.5rem !important; } + + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; } + + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; } + + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; } + + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; } + + .m-xl-n3 { + margin: -1rem !important; } + + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; } + + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; } + + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; } + + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; } + + .m-xl-n4 { + margin: -1.5rem !important; } + + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; } + + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; } + + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; } + + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; } + + .m-xl-n5 { + margin: -3rem !important; } + + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; } + + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; } + + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; } + + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; } + + .m-xl-auto { + margin: auto !important; } + + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; } + + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; } + + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; } + + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; } } +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } + +.text-justify { + text-align: justify !important; } + +.text-wrap { + white-space: normal !important; } + +.text-nowrap { + white-space: nowrap !important; } + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; } + + .text-sm-right { + text-align: right !important; } + + .text-sm-center { + text-align: center !important; } } +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; } + + .text-md-right { + text-align: right !important; } + + .text-md-center { + text-align: center !important; } } +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; } + + .text-lg-right { + text-align: right !important; } + + .text-lg-center { + text-align: center !important; } } +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; } + + .text-xl-right { + text-align: right !important; } + + .text-xl-center { + text-align: center !important; } } +.text-lowercase { + text-transform: lowercase !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.text-capitalize { + text-transform: capitalize !important; } + +.font-weight-light { + font-weight: 300 !important; } + +.font-weight-lighter { + font-weight: lighter !important; } + +.font-weight-normal { + font-weight: 400 !important; } + +.font-weight-bold { + font-weight: 700 !important; } + +.font-weight-bolder { + font-weight: bolder !important; } + +.font-italic { + font-style: italic !important; } + +.text-white { + color: #fff !important; } + +.text-primary { + color: #3A9ABF !important; } + +a.text-primary:hover, a.text-primary:focus { + color: #286b84 !important; } + +.text-secondary { + color: #6C757D !important; } + +a.text-secondary:hover, a.text-secondary:focus { + color: #494f54 !important; } + +.text-success { + color: #75CC39 !important; } + +a.text-success:hover, a.text-success:focus { + color: #529326 !important; } + +.text-info { + color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { + color: #0f6674 !important; } + +.text-warning { + color: #FDC02E !important; } + +a.text-warning:hover, a.text-warning:focus { + color: #dc9c02 !important; } + +.text-danger { + color: #D93749 !important; } + +a.text-danger:hover, a.text-danger:focus { + color: #a41f2e !important; } + +.text-light { + color: #f8f9fa !important; } + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; } + +.text-dark { + color: #343a40 !important; } + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; } + +.text-body { + color: #212529 !important; } + +.text-muted { + color: #6c757d !important; } + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; } + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.text-decoration-none { + text-decoration: none !important; } + +.text-break { + word-break: break-word !important; + overflow-wrap: break-word !important; } + +.text-reset { + color: inherit !important; } + +.visible { + visibility: visible !important; } + +.invisible { + visibility: hidden !important; } + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; } + + a:not(.btn) { + text-decoration: underline; } + + abbr[title]::after { + content: " (" attr(title) ")"; } + + pre { + white-space: pre-wrap !important; } + + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, + img { + page-break-inside: avoid; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } + + @page { + size: a3; } + body { + min-width: 992px !important; } + + .container { + min-width: 992px !important; } + + .navbar { + display: none; } + + .badge { + border: 1px solid #000; } + + .table { + border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; } + + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; } + + .table-dark { + color: inherit; } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; } + + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; } } +/* Custom Styles */ +.list-group-item { + border: none; + padding: 0 0 0 .5rem; } + +.card-header, .card-body { + padding: 0.25rem; } + +.accordion > .card .card-header { + margin-bottom: 0; } + +.list-group-item:first-child { + border-radius: 0; } + +.table th, .table td { + padding: 0.25rem; } + +code { + color: black !important; } + +/*# sourceMappingURL=main.css.map */ diff --git a/bx/tests/results/visualizer/test-results.json b/bx/tests/results/visualizer/test-results.json new file mode 100644 index 0000000..aba32e3 --- /dev/null +++ b/bx/tests/results/visualizer/test-results.json @@ -0,0 +1,1781 @@ +{ + "totalDuration" : 1392, + "endTime" : 1726170362550, + "coverage" : { + "data" : { }, + "enabled" : false + }, + "totalPass" : 9, + "totalSkipped" : 4, + "excludes" : [ ], + "resultID" : "", + "labels" : [ ], + "totalSpecs" : 13, + "CFMLEngine" : "BoxLang", + "bundleStats" : [ { + "path" : "tests.specs.BDDTest", + "totalDuration" : 665, + "endTime" : 1726170362320, + "totalPass" : 4, + "debugBuffer" : [ ], + "totalSkipped" : 2, + "globalException" : "", + "id" : "53cd5a1b6250181e24237c11368f34bd", + "totalSpecs" : 6, + "suiteStats" : [ { + "totalDuration" : 638, + "endTime" : 1726170362312, + "totalPass" : 4, + "specStats" : [ { + "totalDuration" : 146, + "endTime" : 1726170361831, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "c4604d3b7e2f512c5c9ac1a03144223a", + "labels" : [ ], + "displayName" : "can test for equality", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can test for equality", + "failStacktrace" : "", + "startTime" : 1726170361685, + "failOrigin" : { } + }, { + "totalDuration" : 54, + "endTime" : 1726170361891, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "02cec20c140811c9e93c78bdf65928d5", + "labels" : [ ], + "displayName" : "can have more than one expectation to test", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have more than one expectation to test", + "failStacktrace" : "", + "startTime" : 1726170361837, + "failOrigin" : { } + }, { + "totalDuration" : 307, + "endTime" : 1726170362199, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "5415016e3254f610b333428c94708af0", + "labels" : [ ], + "displayName" : "can have negative expectations", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have negative expectations", + "failStacktrace" : "", + "startTime" : 1726170361892, + "failOrigin" : { } + }, { + "totalDuration" : 9, + "endTime" : 1726170362212, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "867c21692e98bfb08dd1265c0d89f50e", + "labels" : [ ], + "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failStacktrace" : "", + "startTime" : 1726170362203, + "failOrigin" : { } + }, { + "totalDuration" : 5, + "endTime" : 1726170362219, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "4f30c954a9638b92118103d04facaaed", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Windows Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Windows Only)", + "failStacktrace" : "", + "startTime" : 1726170362214, + "failOrigin" : { } + }, { + "totalDuration" : 83, + "endTime" : 1726170362310, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Mac Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Mac Only)", + "failStacktrace" : "", + "startTime" : 1726170362227, + "failOrigin" : { } + } ], + "status" : "Passed", + "totalSkipped" : 2, + "id" : "601a1895b68b67f4d9a549cd363dcd29", + "totalSpecs" : 6, + "bundleID" : "53cd5a1b6250181e24237c11368f34bd", + "suiteStats" : [ ], + "name" : "A spec", + "startTime" : 1726170361674, + "parentID" : "", + "totalFail" : 0, + "totalError" : 0 + } ], + "name" : "tests.specs.BDDTest", + "startTime" : 1726170361655, + "totalFail" : 0, + "totalError" : 0, + "totalSuites" : 1 + }, { + "path" : "tests.specs.BDDTest", + "totalDuration" : 77, + "endTime" : 1726170362465, + "totalPass" : 4, + "debugBuffer" : [ ], + "totalSkipped" : 2, + "globalException" : "", + "id" : "c9f321129970f11c598a6ed3549dd794", + "totalSpecs" : 6, + "suiteStats" : [ { + "totalDuration" : 70, + "endTime" : 1726170362463, + "totalPass" : 4, + "specStats" : [ { + "totalDuration" : 12, + "endTime" : 1726170362406, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "c4604d3b7e2f512c5c9ac1a03144223a", + "labels" : [ ], + "displayName" : "can test for equality", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can test for equality", + "failStacktrace" : "", + "startTime" : 1726170362394, + "failOrigin" : { } + }, { + "totalDuration" : 14, + "endTime" : 1726170362423, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "02cec20c140811c9e93c78bdf65928d5", + "labels" : [ ], + "displayName" : "can have more than one expectation to test", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have more than one expectation to test", + "failStacktrace" : "", + "startTime" : 1726170362409, + "failOrigin" : { } + }, { + "totalDuration" : 23, + "endTime" : 1726170362449, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "5415016e3254f610b333428c94708af0", + "labels" : [ ], + "displayName" : "can have negative expectations", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have negative expectations", + "failStacktrace" : "", + "startTime" : 1726170362426, + "failOrigin" : { } + }, { + "totalDuration" : 1, + "endTime" : 1726170362452, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "867c21692e98bfb08dd1265c0d89f50e", + "labels" : [ ], + "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that can be skipped easily like this one by prefixing it with x", + "failStacktrace" : "", + "startTime" : 1726170362451, + "failOrigin" : { } + }, { + "totalDuration" : 1, + "endTime" : 1726170362454, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Skipped", + "skip" : true, + "error" : { }, + "id" : "4f30c954a9638b92118103d04facaaed", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Windows Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Windows Only)", + "failStacktrace" : "", + "startTime" : 1726170362453, + "failOrigin" : { } + }, { + "totalDuration" : 7, + "endTime" : 1726170362461, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", + "labels" : [ ], + "displayName" : "can have tests that execute if the right environment exists (Mac Only)", + "failExtendedInfo" : "", + "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", + "failDetail" : "", + "name" : "can have tests that execute if the right environment exists (Mac Only)", + "failStacktrace" : "", + "startTime" : 1726170362454, + "failOrigin" : { } + } ], + "status" : "Passed", + "totalSkipped" : 2, + "id" : "601a1895b68b67f4d9a549cd363dcd29", + "totalSpecs" : 6, + "bundleID" : "c9f321129970f11c598a6ed3549dd794", + "suiteStats" : [ ], + "name" : "A spec", + "startTime" : 1726170362393, + "parentID" : "", + "totalFail" : 0, + "totalError" : 0 + } ], + "name" : "tests.specs.BDDTest", + "startTime" : 1726170362388, + "totalFail" : 0, + "totalError" : 0, + "totalSuites" : 1 + }, { + "path" : "tests.specs.MyFirstSpec", + "totalDuration" : 19, + "endTime" : 1726170362548, + "totalPass" : 1, + "debugBuffer" : [ ], + "totalSkipped" : 0, + "globalException" : "", + "id" : "ccbba9fede132cb2e9989b5f01873fde", + "totalSpecs" : 1, + "suiteStats" : [ { + "totalDuration" : 11, + "endTime" : 1726170362547, + "totalPass" : 1, + "specStats" : [ { + "totalDuration" : 9, + "endTime" : 1726170362546, + "failMessage" : "", + "focused" : false, + "debugBuffer" : [ ], + "status" : "Passed", + "skip" : false, + "error" : { }, + "id" : "7d7576ae118b6259767aab7a2485831c", + "labels" : [ ], + "displayName" : "it can add", + "failExtendedInfo" : "", + "suiteID" : "05b76e295da5568e4679dd79bbea52db", + "failDetail" : "", + "name" : "it can add", + "failStacktrace" : "", + "startTime" : 1726170362537, + "failOrigin" : { } + } ], + "status" : "Passed", + "totalSkipped" : 0, + "id" : "05b76e295da5568e4679dd79bbea52db", + "totalSpecs" : 1, + "bundleID" : "ccbba9fede132cb2e9989b5f01873fde", + "suiteStats" : [ ], + "name" : "My First Test", + "startTime" : 1726170362536, + "parentID" : "", + "totalFail" : 0, + "totalError" : 0 + } ], + "name" : "tests.specs.MyFirstSpec", + "startTime" : 1726170362529, + "totalFail" : 0, + "totalError" : 0, + "totalSuites" : 1 + } ], + "totalBundles" : 3, + "startTime" : 1726170361158, + "totalFail" : 0, + "totalError" : 0, + "version" : "@build.version@", + "totalSuites" : 3, + "CFMLEngineVersion" : "1.0.0-snapshot+2143" +}testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673137, + "totalDuration": 7, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673144, + "name": "testExpectedExceptionNoValue", + "id": "EA719766B29000E8EB13E08618EB62D8", + "failMessage": "" + }, { + "error": { + "Extended_Info": "", + "Message": "java.util.ConcurrentModificationException", + "Detail": "", + "additional": {}, + "TagContext": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673144, + "totalDuration": 4, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673148, + "name": "testExpectedExceptionFromMethodWithType", + "id": "DEA4D1B7E4D5685C8F5E56FC2EF4B07F", + "failMessage": "" + }, { + "error": { + "Extended_Info": "", + "Message": "java.util.ConcurrentModificationException", + "Detail": "", + "additional": {}, + "TagContext": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673148, + "totalDuration": 4, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673152, + "name": "testRaiseException_pass", + "id": "DB1CDA5E9576C02CE49C6A3009AC84EA", + "failMessage": "" + }, { + "error": { + "Extended_Info": "", + "Message": "java.util.ConcurrentModificationException", + "Detail": "", + "additional": {}, + "TagContext": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673152, + "totalDuration": 4, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673156, + "name": "testExpectedExceptionFromMethodWithTypeAndRegex", + "id": "5F2998DAA434E0999157C33D2998677F", + "failMessage": "" + }, { + "error": { + "Extended_Info": "", + "Message": "java.util.ConcurrentModificationException", + "Detail": "", + "additional": {}, + "TagContext": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673156, + "totalDuration": 4, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", + "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", + "column": 0, + "line": 1011, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673160, + "name": "testExpectedExceptionWithValue", + "id": "821A8EBFF6CCAD78FF707B72D7566B3E", + "failMessage": "" + }, { + "error": { + "Extended_Info": "", + "Message": "java.util.ConcurrentModificationException", + "Detail": "", + "additional": {}, + "TagContext": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", + "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", + "column": 0, + "line": 1010, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673160, + "totalDuration": 3, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", + "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", + "column": 0, + "line": 1010, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673163, + "name": "testRaiseException_fail_wrong_exception_raised", + "id": "38E9FBD5CD24CC185DB762502F1D2E1E", + "failMessage": "" + }, { + "error": { + "Extended_Info": "", + "Message": "java.util.ConcurrentModificationException", + "Detail": "", + "additional": {}, + "TagContext": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", + "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", + "column": 0, + "line": 1010, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "ErrorCode": "0", + "type": "java.util.ConcurrentModificationException", + "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", + "ExtendedInfo": "" + }, + "startTime": 1553009673163, + "totalDuration": 4, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", + "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", + "column": 0, + "line": 18, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", + "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", + "column": 0, + "line": 1010, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", + "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 208, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", + "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", + "column": 0, + "line": 81, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", + "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", + "column": 0, + "line": 478, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }, { + "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", + "codePrintPlain": "19: \n20: \n21: \n", + "column": 0, + "line": 21, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" + }], + "status": "Error", + "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", + "endTime": 1553009673167, + "name": "testExpectException_should_fail", + "id": "9AE953744ABF596DB46DABAAF47A36E0", + "failMessage": "" + }], + "endTime": 1553009673167, + "totalError": 7, + "name": "tests.specsWithFailures.MXUnitExpectedExceptions", + "id": "0F9E64ECB27A3F1E33BC78FB7266E610", + "suiteStats": [] + }], + "globalException": "" + }, { + "totalSuites": 1, + "startTime": 1553009673173, + "totalPass": 1, + "totalDuration": 15, + "totalSkipped": 0, + "totalFail": 1, + "totalSpecs": 2, + "path": "tests.specsWithFailures.TeardownWithFailureBDD", + "endTime": 1553009673188, + "totalError": 0, + "name": "tests.specsWithFailures.TeardownWithFailureBDD", + "id": "7DA7FE371A5DA234729404FCED6D1494", + "suiteStats": [{ + "startTime": 1553009673174, + "totalPass": 1, + "totalDuration": 13, + "totalSkipped": 0, + "totalFail": 1, + "totalSpecs": 2, + "bundleID": "7DA7FE371A5DA234729404FCED6D1494", + "status": "Failed", + "parentID": "", + "specStats": [{ + "error": {}, + "startTime": 1553009673174, + "totalDuration": 5, + "failOrigin": {}, + "status": "Passed", + "suiteID": "734EAC2A2E0173AB943C7F55FC61E4B4", + "endTime": 1553009673179, + "name": "passes", + "id": "60E1FD85154BCE145E454EB6A78FED66", + "failMessage": "" + }, { + "error": {}, + "startTime": 1553009673179, + "totalDuration": 8, + "failOrigin": [{ + "Raw_Trace": "specswithfailures.teardownwithfailurebdd_cfc$cf.udfCall(/tests/specsWithFailures/TeardownWithFailureBDD.cfc:34)", + "codePrintPlain": "32: \n33: \t\t\tit(\"fails\", function(){\n34: \t\t\t\texpect( 1 ).toBe( 3 );\n35: \t\t\t});\n36: \n", + "column": 0, + "line": 34, + "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/TeardownWithFailureBDD.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "32:
    \n33: \t\t\tit("fails", function(){
    \n34: \t\t\t\texpect( 1 ).toBe( 3 );
    \n35: \t\t\t});
    \n36:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall6(/testbox/system/BaseSpec.cfc:1237)", + "codePrintPlain": "1235: \t\tstring implements=\"\"\n1236: \t){\n1237: \t\treturn this.$mockBox.createStub( argumentCollection=arguments );\n1238: \t}\n1239: \n", + "column": 0, + "line": 1237, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "1235: \t\tstring implements=""
    \n1236: \t){
    \n1237: \t\treturn this.$mockBox.createStub( argumentCollection=arguments );
    \n1238: \t}
    \n1239:
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall4(/testbox/system/BaseSpec.cfc:888)", + "codePrintPlain": "886: \t\t\treturn function(){\n887: \t\t\t\t// Execute the body of the spec\n888: \t\t\t\tnextClosure.body( spec = thread.spec, suite = thread.suite, data = nextClosure.data );\n889: \t\t\t};\n890: \t\t}\n", + "column": 0, + "line": 888, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "886: \t\t\treturn function(){
    \n887: \t\t\t\t// Execute the body of the spec
    \n888: \t\t\t\tnextClosure.body( spec = thread.spec, suite = thread.suite, data = nextClosure.data );
    \n889: \t\t\t};
    \n890: \t\t}
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall4(/testbox/system/BaseSpec.cfc:863)", + "codePrintPlain": "861: \t\t);\n862: \t\t// Run the specs\n863: \t\tspecStack();\n864: \n865: \t\treturn this;\n", + "column": 0, + "line": 863, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "861: \t\t);
    \n862: \t\t// Run the specs
    \n863: \t\tspecStack();
    \n864:
    \n865: \t\treturn this;
    \n" + }, { + "Raw_Trace": "system.basespec_cfc$cf.udfCall3(/testbox/system/BaseSpec.cfc:701)", + "codePrintPlain": "699: \n700: \t\t\t\ttry{\n701: \t\t\t\t\trunAroundEachClosures( arguments.suite, arguments.spec );\n702: \t\t\t\t} catch( any e ){\n703: \t\t\t\t\trethrow;\n", + "column": 0, + "line": 701, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "699:
    \n700: \t\t\t\ttry{
    \n701: \t\t\t\t\trunAroundEachClosures( arguments.suite, arguments.spec );
    \n702: \t\t\t\t} catch( any e ){
    \n703: \t\t\t\t\trethrow;
    \n" + }, { + "Raw_Trace": "system.runners.bddrunner_cfc$cf.udfCall(/testbox/system/runners/BDDRunner.cfc:221)", + "codePrintPlain": "219: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n220: \t\t\t\t\t\trunner=this\n221: \t\t\t\t\t);\n222: \n223: \t\t\t\t\t// verify call backs\n", + "column": 0, + "line": 221, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/BDDRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "219: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n220: \t\t\t\t\t\trunner=this
    \n221: \t\t\t\t\t);
    \n222:
    \n223: \t\t\t\t\t// verify call backs
    \n" + }, { + "Raw_Trace": "system.runners.bddrunner_cfc$cf.udfCall(/testbox/system/runners/BDDRunner.cfc:83)", + "codePrintPlain": "81: \t\t\t\t\t\ttestResults=arguments.testResults,\n82: \t\t\t\t\t\tbundleStats=bundleStats,\n83: \t\t\t\t\t\tcallbacks=arguments.callbacks\n84: \t\t\t\t\t);\n85: \n", + "column": 0, + "line": 83, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/BDDRunner.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "81: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n82: \t\t\t\t\t\tbundleStats=bundleStats,
    \n83: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n84: \t\t\t\t\t);
    \n85:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:473)", + "codePrintPlain": "471: \t\t\t\t// Run via BDD Style\n472: \t\t\t\tnew testbox.system.runners.BDDRunner( options=variables.options, testbox=this )\n473: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n474: \t\t\t}\n475: \t\t\telse{\n", + "column": 0, + "line": 473, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "471: \t\t\t\t// Run via BDD Style
    \n472: \t\t\t\tnew testbox.system.runners.BDDRunner( options=variables.options, testbox=this )
    \n473: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n474: \t\t\t}
    \n475: \t\t\telse{
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", + "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", + "column": 0, + "line": 251, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" + }, { + "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", + "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", + "column": 0, + "line": 160, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", + "id": "??", + "type": "cfml", + "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" + }, { + "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", + "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", + "column": 0, + "line": 49, + "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", + "id": "??", + "type": "cfml", + "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" + }], + "status": "Failed", + "suiteID": "734EAC2A2E0173AB943C7F55FC61E4B4", + "endTime": 1553009673187, + "name": "fails", + "id": "5C518249D53779A16FA8302C61C4DDDA", + "failMessage": "Expected [3] but received [1]" + }], + "endTime": 1553009673187, + "totalError": 0, + "name": "A suite", + "id": "734EAC2A2E0173AB943C7F55FC61E4B4", + "suiteStats": [] + }], + "globalException": "" + }], + "totalPass": 2, + "totalDuration": 115, + "version": "@build.version@+@build.number@", + "totalSkipped": 0, + "totalFail": 2, + "totalSpecs": 11, + "excludes": ["exclude1", "exclude2"], + "labels": ["label1", "label2"], + "resultID": "", + "endTime": 1553009673188, + "coverage": { + "data": { + "sonarQubeResults": "/Users/iurquiza/Projects/ortus/TestBox/tests/results/sonarQubeResults", + "browserResults": "/Users/iurquiza/Projects/ortus/TestBox/tests/results/coverageReport", + "stats": { + "totalCoveredLines": 1253, + "numFiles": 78, + "percTotalCoverage": 0.167022127433, + "totalExecutableLines": 7502 + } + }, + "enabled": true + }, + "totalError": 7, + "totalBundles": 3 +} \ No newline at end of file diff --git a/system/TestBox.cfc b/system/TestBox.cfc index 89b5eaf..560efcd 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -37,7 +37,7 @@ component accessors="true" { variables.IS_BOXLANG = server.keyExists( "boxlang" ); variables.IS_CLI = !getFunctionList().keyExists( "getPageContext" ); variables.DEFAULT_REPORTER = variables.IS_CLI ? "text" : "simple"; - variables.DEFAULT_BUNDLES_PATTERN = "*.bx|*.cfc"; + variables.DEFAULT_BUNDLES_PATTERN = "*Spec*.cfc|*Test*.cfc|*Spec*.bx|*Test*.bx"; // TestBox Info : Modified by the build process. variables.VERSION = "@build.version@+@build.number@"; variables.CODENAME = ""; From 3b8464f70a9bf2a6d25438968fc1d84514c9dec3 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 23:14:06 +0200 Subject: [PATCH 58/73] activate this test since boxlang now supports it --- tests/specs/coverage/CoverageReporterTest.cfc | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests/specs/coverage/CoverageReporterTest.cfc b/tests/specs/coverage/CoverageReporterTest.cfc index cc07980..3f1da73 100644 --- a/tests/specs/coverage/CoverageReporterTest.cfc +++ b/tests/specs/coverage/CoverageReporterTest.cfc @@ -4,18 +4,6 @@ component extends="testbox.system.BaseSpec" { function run(){ - // TODO: This is a temporary fix for a bug in the BoxLang query engine - // https://ortussolutions.atlassian.net/browse/BL-535 - if ( isBoxLang() ) { - describe( - title: "Skipped in BoxLang due to query issue", - body : () => { - }, - skip: true - ); - return; - } - describe( "CoverageReporter", function(){ it( "can init", function(){ expect( new system.coverage.CoverageReporter() ).toBeComponent(); From effd3e45a0269fc83b4f8f0499780c61b403e1fe Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 23:23:15 +0200 Subject: [PATCH 59/73] boxlang still has another bug --- tests/specs/coverage/CoverageReporterTest.cfc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/specs/coverage/CoverageReporterTest.cfc b/tests/specs/coverage/CoverageReporterTest.cfc index 3f1da73..3ff9ab8 100644 --- a/tests/specs/coverage/CoverageReporterTest.cfc +++ b/tests/specs/coverage/CoverageReporterTest.cfc @@ -4,7 +4,20 @@ component extends="testbox.system.BaseSpec" { function run(){ + // TODO: This is a temporary fix for a bug in the BoxLang query engine + // https://ortussolutions.atlassian.net/browse/BL-535 + if ( isBoxLang() ) { + describe( + title: "Skipped in BoxLang due to query issue", + body : () => { + }, + skip: true + ); + return; + } + describe( "CoverageReporter", function(){ + it( "can init", function(){ expect( new system.coverage.CoverageReporter() ).toBeComponent(); } ); From ddf50eedfc3a220e6892cb246fcd265fac8981dd Mon Sep 17 00:00:00 2001 From: lmajano Date: Thu, 12 Sep 2024 21:23:53 +0000 Subject: [PATCH 60/73] Apply cfformat changes --- tests/specs/coverage/CoverageReporterTest.cfc | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/specs/coverage/CoverageReporterTest.cfc b/tests/specs/coverage/CoverageReporterTest.cfc index 3ff9ab8..cc07980 100644 --- a/tests/specs/coverage/CoverageReporterTest.cfc +++ b/tests/specs/coverage/CoverageReporterTest.cfc @@ -17,7 +17,6 @@ component extends="testbox.system.BaseSpec" { } describe( "CoverageReporter", function(){ - it( "can init", function(){ expect( new system.coverage.CoverageReporter() ).toBeComponent(); } ); From bb022eb0811d094210cc4b660bba8617315c2657 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 12 Sep 2024 23:24:08 +0200 Subject: [PATCH 61/73] debugging info --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1bfb085..fbc0b42 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -76,7 +76,8 @@ jobs: path: | tests/results/**/* - - name: Failure Debugging Info + - name: Debugging Info + if: always() run: | box server log serverConfigFile="server-${{ matrix.cfengine }}.json" From 05ec349ca19e0389848d4efb4682320f9d559c65 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Fri, 13 Sep 2024 15:58:25 +0200 Subject: [PATCH 62/73] more boxlang fixes --- bin/run | 248 +- bin/run.bat | 2 + bx/tests/results/TEST.properties | 2 +- bx/tests/results/latestrun.log | 2 +- bx/tests/results/report.html | 8623 ----------------- bx/tests/results/report.json | 129 +- bx/tests/results/report.txt | 8567 +--------------- bx/tests/results/visualizer/test-results.json | 130 +- system/runners/BoxLangRunner.bx | 313 + tests/specs/coverage/CoverageReporterTest.cfc | 12 - 10 files changed, 464 insertions(+), 17564 deletions(-) create mode 100644 bin/run.bat delete mode 100644 bx/tests/results/report.html create mode 100644 system/runners/BoxLangRunner.bx diff --git a/bin/run b/bin/run index cf50378..97d05fe 100755 --- a/bin/run +++ b/bin/run @@ -1,248 +1,4 @@ #!/usr/bin/env boxlang -/** - * TestBox Runner for BoxLang - * This script will run TestBox tests from the command line using the BoxLang CLI - * - * Examples: - * - `./testbox/bin/run` - * - `./testbox/bin/run my.bundle` - * - `./testbox/bin/run --test-directory=tests.specs` - * - `./testbox/bin/run --test-bundles=my.bundle` - * - * Options: - * --test-bundles: A list of test bundles to run, defaults to `*`, ex: `path.to.bundle1,path.to.bundle2`, . Mutually exclusive with `--test-directory` - * --test-bundles-pattern: A pattern to match test bundles, defaults to `"*Spec*.cfc|*Test*.cfc|*Spec*.bx|*Test*.bx"` - * --test-directory : A list of directories to look for tests to execute. Please use dot-notation not absolute notation. - * Mutually exclusive with `--test-bundles`. Ex: `tests.specs`. Defaults to `tests.specs` - * --test-reporter : The reporter to use. - * --test-labels : A list of labels to run, defaults to `*` - * --test-excludes : A list of labels to exclude, defaults to empty - * --test-recurse : Recurse into subdirectories, defaults to `true` - * --test-filter-bundles : A list of bundles to filter by, defaults to `*` - * --test-filter-suites : A list of suites to filter by, defaults to `*` - * --test-filter-specs : A list of test names or spec names to filter by, defaults to `*` - * --test-eager-failure : Fail fast, defaults to `false` - * --test-runner-options: A JSON struct literal of options to pass into the test runner. Ex: `{"verbose"=true}` - * --test-verbose : Verbose output, defaults to `false`. This will stream the output of the status of the tests as they run. - * --test-properties-summary : Generate a properties file with the summary of the test results, defaults to `true`. - * --test-properties-filename : The name of the properties file to generate, defaults to `TEST.properties` - * If true, it will write them to the report path. - * --test-reportpath : The path to write the report file to, defaults to the `/tests/results` folder by convention - * --test-write-report : Write the report to a file in the report path folder, defaults to `true` - * --test-write-json-report : Write the report as JSON alongside the requested report, defaults to `false` - * --test-write-visualizer : Write the visualizer to a file in the report path folder, defaults to `false` - */ - -function escapePropertyValue( required string value ) { - if ( len( arguments.value ) == 0 ) { - return arguments.value; - } - local.value = replaceNoCase( arguments.value, '\', '\\', 'all' ); - value = replaceNoCase( value, char(13), '\r', 'all' ); - value = replaceNoCase( value, char(10), '\n', 'all' ); - value = replaceNoCase( value, char(9), '\t', 'all' ); - value = replaceNoCase( value, char(60), '\u003c', 'all' ); - value = replaceNoCase( value, char(62), '\u003e', 'all' ); - value = replaceNoCase( value, char(47), '\u002f', 'all' ); - return replaceNoCase( value, char(32), '\u0020', 'all' ); -} - -// CLI variables -rootPath = server.cli.executionPath -options = server.cli.parsed.options; -positional = server.cli.parsed.positionals; - -// Defaults -DEFAULT_TEST_DIRECTORY = "tests.specs" -DEFAULT_REPORTER = "text" -DEFAULT_REPORT_PATH = rootPath & "/tests/results" -DEFAULT_PROPERTIES_FILENAME = "TEST.properties" -DEFAULT_PROPERTIES_SUMMARY = true - -// Gather the test arguments from the options -initArgs = { - bundles = options[ "test-bundles" ] ?: [], - directory = { - mapping : options[ "test-directory" ] ?: "", - recurse : options[ "test-recurse" ] ?: true - }, - reporter = options[ "test-reporter" ] ?: DEFAULT_REPORTER, - labels = options[ "test-labels" ] ?: "", - excludes = options[ "test-excludes" ] ?: "", - options = options[ "test-runner-options" ] ?: {}, - bundlesPattern = options[ "test-bundles-pattern" ] ?: "" -}; - -// Deserialize the JSON options -if( isSimpleValue( initArgs.options ) && initArgs.options.len() ) { - initArgs.options = jsonDeserialize( initArgs.options ); -} - -// Prepare the run arguments -runArgs = { - testBundles = options[ "test-filter-bundles" ] ?: [], - testSuites = options[ "test-filter-suites" ] ?: [], - testSpecs = options[ "test-filter-specs" ] ?: [], - eagerFailure = options[ "test-eager-failure" ] ?: false, - verbose = options[ "test-verbose" ] ?: false -}; - -// Prepare the after run arguments -afterRunArgs = { - propertiesSummary = options[ "test-properties-summary" ] ?: DEFAULT_PROPERTIES_SUMMARY, - propertiesFilename = options[ "test-properties-filename" ] ?: DEFAULT_PROPERTIES_FILENAME, - reportPath = options[ "test-reportpath" ] ?: DEFAULT_REPORT_PATH, - writeReport = options[ "test-write-report" ] ?: true, - writeVisualizer = options[ "test-write-visualizer" ] ?: false, - writeJsonReport = options[ "test-write-json-report" ] ?: false -}; - -// Verbose Listeners -if( runArgs.verbose ){ - runArgs.callbacks = { - onBundleStart = ( target, testResults ) => { - println( "> Testing Bundle: #target.$bx.meta.name#" ) - }, - onBundleEnd = ( target, testResults ) => { - println( "> Bundle Completed: [#target.$bx.meta.name#]" ) - println( "" ); - }, - onSuiteStart = ( target, testResults, suite ) => { - println( "+ Starting Suite: #suite.name#" ) - }, - onSuiteEnd = ( target, testResults, suite ) => { - //println( "+ Suite [#suite.name#] completed #suite.toString()#" ) - }, - onSpecStart = ( target, testResults, suite, spec ) => { - println( "+ Starting Spec/Test: #spec.name#" ) - }, - onSpecEnd = ( target, testResults, suite, spec ) => { - // println( "+ Spec [#spec.name#] completed #spec.toString()#" ) - }, - } -} - -// If we have a positional argument, then we will assume it is a test bundle: Ex: `run my.bundle` -if( positional.len() ) { - initArgs.bundles = positional[ 1 ]; -} - -// If we don't have test-bundles or test-directory, then default to the DEFAULT_TEST_DIRECTORY -if( !initArgs.bundles.len() && !initArgs.directory.mapping.len() ) { - initArgs.directory = DEFAULT_TEST_DIRECTORY; -} - -if( runArgs.verbose ){ - startTime = getTickCount(); - println( "Starting TestBox Runner with the following init arguments" ); - println( initArgs ); -} -testbox = new testbox.system.TestBox( argumentCollection = initArgs ) -if( runArgs.verbose ){ - println( "TestBox Runner started in #getTickCount() - startTime# ms" ); - println( "Running your tests with the following run arguments" ); - println( runArgs ); -} else{ - println( "Running your tests..." ) -} - -// RUN BABY RUN -println( "" ) -report = testbox.run( argumentCollection = runArgs ) -testResults = testbox.getResult() -testResultsAsJson = jsonSerialize( testResults.getMemento( includeDebugBuffer = true ) ) -println( report ) - -// PREPARE RESULTS FOR REPORTING -if( !directoryExists( afterRunArgs.reportPath ) ){ - directoryCreate( afterRunArgs.reportPath ); -} else { - directoryDelete( afterRunArgs.reportPath, true ); - directoryCreate( afterRunArgs.reportPath ); -} - -// REPORTING TIME -fileWrite( - afterRunArgs.reportPath & "/latestrun.log", - "Tests ran at #dateTimeFormat( now(), 'medium' )#" -) - -// WRITE THE REPORT -if( afterRunArgs.writeReport ){ - reportFile = afterRunArgs.reportPath & "/report." - switch( initArgs.reporter ){ - case "min": case "simple" : - reportFile &= "html"; - break; - case "json": - reportFile &= "json"; - break; - case "xml": case "ANTJunit": - reportFile &= "xml"; - break; - default: - reportFile &= "txt"; - } - fileWrite( - reportFile, - report - ) -} - -// WRITE THE JSON REPORT -if( afterRunArgs.writeJsonReport ){ - fileWrite( - afterRunArgs.reportPath & "/report.json", - testResultsAsJson - ) -} - -// WRITE THE VISUALIZER -if( afterRunArgs.writeVisualizer ){ - directoryCopy( - expandPath( "/testbox/test-visualizer" ), - afterRunArgs.reportPath & "/visualizer" - ) - fileWrite( - afterRunArgs.reportPath & "/visualizer/test-results.json", - testResultsAsJson - ) -} - -// WRITE THE SUMMARIES -if( afterRunArgs.propertiesSummary ) { - errors = testResults.getTotalFail() + testResults.getTotalError(); - propertiesReport = "## TestBox Summary Report -test.datetime=#now().toISOString()# -test.#errors ? 'failed' : 'passed'#=true -test.labels=#escapePropertyValue( arrayToList( testResults.getLabels() ) )# -test.excludes=#escapePropertyValue( arrayToList( testResults.getExcludes() ) )# -test.bundles=#escapePropertyValue( initArgs.bundles )# -test.directory=#escapePropertyValue( initArgs.directory.mapping )# -total.bundles=#escapePropertyValue( testResults.getTotalBundles() )# -total.suites=#escapePropertyValue( testResults.getTotalSuites() )# -total.specs=#escapePropertyValue( testResults.getTotalSpecs() )# -total.pass=#escapePropertyValue( testResults.getTotalPass() )# -total.fail=#escapePropertyValue( testResults.getTotalFail() )# -total.error=#escapePropertyValue( testResults.getTotalError() )# -total.skipped=#escapePropertyValue( testResults.getTotalSkipped() )#"; - - if( !trim( lcase( afterRunArgs.propertiesfilename ) ).endsWith( '.properties' ) ) { - afterRunArgs.propertiesfilename &= '.properties'; - } - - fileWrite( - afterRunArgs.reportPath & "/" & afterRunArgs.propertiesFilename, - propertiesReport - ) -} - -// do stupid JUnitReport task processing, if the report is ANTJunit -if( initArgs.reporter eq "ANTJunit" ){ - // Produce individual test files due to how ANT JUnit report parses these. - xmlReport = xmlParse( report ); - for( thisSuite in xmlReport.testsuites.XMLChildren ){ - fileWrite( afterRunArgs.reportpath & "/TEST-" & thisSuite.XMLAttributes.package & ".xml", toString( thisSuite ) ); - } -} +# Go baby go! +new testbox.system.runners.BoxLangRunner().main(); diff --git a/bin/run.bat b/bin/run.bat new file mode 100644 index 0000000..46fa885 --- /dev/null +++ b/bin/run.bat @@ -0,0 +1,2 @@ +# Call the Runner +boxlang testbox/system/runners/BoxLangRunner.bx diff --git a/bx/tests/results/TEST.properties b/bx/tests/results/TEST.properties index 655619b..88be3dc 100644 --- a/bx/tests/results/TEST.properties +++ b/bx/tests/results/TEST.properties @@ -1,5 +1,5 @@ # TestBox Summary Report -test.datetime=2024-09-12T21:46:02.727973+02:00 +test.datetime=2024-09-13T15:48:59.940097+02:00 test.passed=true test.labels= test.excludes= diff --git a/bx/tests/results/latestrun.log b/bx/tests/results/latestrun.log index 8882b04..4827484 100644 --- a/bx/tests/results/latestrun.log +++ b/bx/tests/results/latestrun.log @@ -1 +1 @@ -Tests ran at Sep 12, 2024, 9:46:02 PM \ No newline at end of file +Tests ran at Sep 13, 2024, 3:48:59 PM \ No newline at end of file diff --git a/bx/tests/results/report.html b/bx/tests/results/report.html deleted file mode 100644 index 8e7f5b1..0000000 --- a/bx/tests/results/report.html +++ /dev/null @@ -1,8623 +0,0 @@ - - - - - - - - - - Pass: 9 Fail: 0 Errors: 0 - - - - - - - - - -
    - - -
    - -
    - -
    - - v@build.version@+@build.number@ -
    -
    - -
    - -
    - - Run All Tests - - - -
    -
    -
    - - - - - -
    - - -
    -
    -

    Test Results Stats (1,164 ms)

    -
    -
    - Bundles:3 - Suites:3 - Specs:13 -
    - - -
    - - BoxLang - 1.0.0-snapshot+2143 - -
    -
    -
    - -
    - - Pass: 9 - - - Failures: 0 - - - Errors: 0 - - - Skipped: 4 - - - Reset - -
    -
    - - -
    - - - - - - - -
    - - - -
    - - - - - - -
    - - - -
    - - - - - - -
    - - -
    -
    - -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - diff --git a/bx/tests/results/report.json b/bx/tests/results/report.json index 07dc889..ce225cf 100644 --- a/bx/tests/results/report.json +++ b/bx/tests/results/report.json @@ -1,6 +1,6 @@ { - "totalDuration" : 1392, - "endTime" : 1726170362550, + "totalDuration" : 1042, + "endTime" : 1726235339751, "coverage" : { "data" : { }, "enabled" : false @@ -14,21 +14,21 @@ "CFMLEngine" : "BoxLang", "bundleStats" : [ { "path" : "tests.specs.BDDTest", - "totalDuration" : 665, - "endTime" : 1726170362320, + "totalDuration" : 432, + "endTime" : 1726235339485, "totalPass" : 4, "debugBuffer" : [ ], "totalSkipped" : 2, "globalException" : "", - "id" : "53cd5a1b6250181e24237c11368f34bd", + "id" : "b799f4665a2be26cfd1cfd90f837ab8d", "totalSpecs" : 6, "suiteStats" : [ { - "totalDuration" : 638, - "endTime" : 1726170362312, + "totalDuration" : 395, + "endTime" : 1726235339475, "totalPass" : 4, "specStats" : [ { - "totalDuration" : 146, - "endTime" : 1726170361831, + "totalDuration" : 213, + "endTime" : 1726235339307, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -43,11 +43,11 @@ "failDetail" : "", "name" : "can test for equality", "failStacktrace" : "", - "startTime" : 1726170361685, + "startTime" : 1726235339094, "failOrigin" : { } }, { - "totalDuration" : 54, - "endTime" : 1726170361891, + "totalDuration" : 56, + "endTime" : 1726235339372, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -62,11 +62,11 @@ "failDetail" : "", "name" : "can have more than one expectation to test", "failStacktrace" : "", - "startTime" : 1726170361837, + "startTime" : 1726235339316, "failOrigin" : { } }, { - "totalDuration" : 307, - "endTime" : 1726170362199, + "totalDuration" : 71, + "endTime" : 1726235339445, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -81,11 +81,11 @@ "failDetail" : "", "name" : "can have negative expectations", "failStacktrace" : "", - "startTime" : 1726170361892, + "startTime" : 1726235339374, "failOrigin" : { } }, { - "totalDuration" : 9, - "endTime" : 1726170362212, + "totalDuration" : 2, + "endTime" : 1726235339449, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -100,11 +100,11 @@ "failDetail" : "", "name" : "can have tests that can be skipped easily like this one by prefixing it with x", "failStacktrace" : "", - "startTime" : 1726170362203, + "startTime" : 1726235339447, "failOrigin" : { } }, { - "totalDuration" : 5, - "endTime" : 1726170362219, + "totalDuration" : 2, + "endTime" : 1726235339453, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -119,11 +119,11 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Windows Only)", "failStacktrace" : "", - "startTime" : 1726170362214, + "startTime" : 1726235339451, "failOrigin" : { } }, { - "totalDuration" : 83, - "endTime" : 1726170362310, + "totalDuration" : 21, + "endTime" : 1726235339474, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -138,43 +138,43 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Mac Only)", "failStacktrace" : "", - "startTime" : 1726170362227, + "startTime" : 1726235339453, "failOrigin" : { } } ], "status" : "Passed", "totalSkipped" : 2, "id" : "601a1895b68b67f4d9a549cd363dcd29", "totalSpecs" : 6, - "bundleID" : "53cd5a1b6250181e24237c11368f34bd", + "bundleID" : "b799f4665a2be26cfd1cfd90f837ab8d", "suiteStats" : [ ], "name" : "A spec", - "startTime" : 1726170361674, + "startTime" : 1726235339080, "parentID" : "", "totalFail" : 0, "totalError" : 0 } ], "name" : "tests.specs.BDDTest", - "startTime" : 1726170361655, + "startTime" : 1726235339053, "totalFail" : 0, "totalError" : 0, "totalSuites" : 1 }, { "path" : "tests.specs.BDDTest", - "totalDuration" : 77, - "endTime" : 1726170362465, + "totalDuration" : 119, + "endTime" : 1726235339653, "totalPass" : 4, "debugBuffer" : [ ], "totalSkipped" : 2, "globalException" : "", - "id" : "c9f321129970f11c598a6ed3549dd794", + "id" : "795931bf6ec5608abf3dbbc702e09009", "totalSpecs" : 6, "suiteStats" : [ { - "totalDuration" : 70, - "endTime" : 1726170362463, + "totalDuration" : 98, + "endTime" : 1726235339639, "totalPass" : 4, "specStats" : [ { - "totalDuration" : 12, - "endTime" : 1726170362406, + "totalDuration" : 14, + "endTime" : 1726235339556, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -189,11 +189,11 @@ "failDetail" : "", "name" : "can test for equality", "failStacktrace" : "", - "startTime" : 1726170362394, + "startTime" : 1726235339542, "failOrigin" : { } }, { - "totalDuration" : 14, - "endTime" : 1726170362423, + "totalDuration" : 23, + "endTime" : 1726235339583, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -208,11 +208,11 @@ "failDetail" : "", "name" : "can have more than one expectation to test", "failStacktrace" : "", - "startTime" : 1726170362409, + "startTime" : 1726235339560, "failOrigin" : { } }, { - "totalDuration" : 23, - "endTime" : 1726170362449, + "totalDuration" : 31, + "endTime" : 1726235339620, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -227,11 +227,11 @@ "failDetail" : "", "name" : "can have negative expectations", "failStacktrace" : "", - "startTime" : 1726170362426, + "startTime" : 1726235339589, "failOrigin" : { } }, { "totalDuration" : 1, - "endTime" : 1726170362452, + "endTime" : 1726235339622, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -246,11 +246,11 @@ "failDetail" : "", "name" : "can have tests that can be skipped easily like this one by prefixing it with x", "failStacktrace" : "", - "startTime" : 1726170362451, + "startTime" : 1726235339621, "failOrigin" : { } }, { "totalDuration" : 1, - "endTime" : 1726170362454, + "endTime" : 1726235339623, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -265,11 +265,11 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Windows Only)", "failStacktrace" : "", - "startTime" : 1726170362453, + "startTime" : 1726235339622, "failOrigin" : { } }, { - "totalDuration" : 7, - "endTime" : 1726170362461, + "totalDuration" : 9, + "endTime" : 1726235339636, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -284,43 +284,43 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Mac Only)", "failStacktrace" : "", - "startTime" : 1726170362454, + "startTime" : 1726235339627, "failOrigin" : { } } ], "status" : "Passed", "totalSkipped" : 2, "id" : "601a1895b68b67f4d9a549cd363dcd29", "totalSpecs" : 6, - "bundleID" : "c9f321129970f11c598a6ed3549dd794", + "bundleID" : "795931bf6ec5608abf3dbbc702e09009", "suiteStats" : [ ], "name" : "A spec", - "startTime" : 1726170362393, + "startTime" : 1726235339541, "parentID" : "", "totalFail" : 0, "totalError" : 0 } ], "name" : "tests.specs.BDDTest", - "startTime" : 1726170362388, + "startTime" : 1726235339534, "totalFail" : 0, "totalError" : 0, "totalSuites" : 1 }, { "path" : "tests.specs.MyFirstSpec", - "totalDuration" : 19, - "endTime" : 1726170362548, + "totalDuration" : 24, + "endTime" : 1726235339749, "totalPass" : 1, "debugBuffer" : [ ], "totalSkipped" : 0, "globalException" : "", - "id" : "ccbba9fede132cb2e9989b5f01873fde", + "id" : "01e5328ef6518b74826d2be98313cce7", "totalSpecs" : 1, "suiteStats" : [ { - "totalDuration" : 11, - "endTime" : 1726170362547, + "totalDuration" : 16, + "endTime" : 1726235339748, "totalPass" : 1, "specStats" : [ { - "totalDuration" : 9, - "endTime" : 1726170362546, + "totalDuration" : 14, + "endTime" : 1726235339747, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -335,33 +335,32 @@ "failDetail" : "", "name" : "it can add", "failStacktrace" : "", - "startTime" : 1726170362537, + "startTime" : 1726235339733, "failOrigin" : { } } ], "status" : "Passed", "totalSkipped" : 0, "id" : "05b76e295da5568e4679dd79bbea52db", "totalSpecs" : 1, - "bundleID" : "ccbba9fede132cb2e9989b5f01873fde", + "bundleID" : "01e5328ef6518b74826d2be98313cce7", "suiteStats" : [ ], "name" : "My First Test", - "startTime" : 1726170362536, + "startTime" : 1726235339732, "parentID" : "", "totalFail" : 0, "totalError" : 0 } ], "name" : "tests.specs.MyFirstSpec", - "startTime" : 1726170362529, + "startTime" : 1726235339725, "totalFail" : 0, "totalError" : 0, "totalSuites" : 1 } ], "totalBundles" : 3, - "startTime" : 1726170361158, + "startTime" : 1726235338709, "totalFail" : 0, "totalError" : 0, "version" : "@build.version@", "totalSuites" : 3, "CFMLEngineVersion" : "1.0.0-snapshot+2143" -}" } \ No newline at end of file diff --git a/bx/tests/results/report.txt b/bx/tests/results/report.txt index e41964e..c328185 100644 --- a/bx/tests/results/report.txt +++ b/bx/tests/results/report.txt @@ -1,35 +1,35 @@ █▓▒▒░░░ TestBox v@build.version@+@build.number@ ░░░▒▒▓█ _____________________________________________________________   -√tests.specs.BDDTest (665 ms) +√tests.specs.BDDTest (432 ms) [Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6]   ( √ ) A spec -    ( √ ) can test for equality (146 ms) -    ( √ ) can have more than one expectation to test (54 ms) -    ( √ ) can have negative expectations (307 ms) -    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (9 ms) -    ( - ) can have tests that execute if the right environment exists (Windows Only) (5 ms) -    ( √ ) can have tests that execute if the right environment exists (Mac Only) (83 ms) +    ( √ ) can test for equality (213 ms) +    ( √ ) can have more than one expectation to test (56 ms) +    ( √ ) can have negative expectations (71 ms) +    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (2 ms) +    ( - ) can have tests that execute if the right environment exists (Windows Only) (2 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (21 ms) _____________________________________________________________   -√tests.specs.BDDTest (77 ms) +√tests.specs.BDDTest (119 ms) [Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6]   ( √ ) A spec -    ( √ ) can test for equality (12 ms) -    ( √ ) can have more than one expectation to test (14 ms) -    ( √ ) can have negative expectations (23 ms) +    ( √ ) can test for equality (14 ms) +    ( √ ) can have more than one expectation to test (23 ms) +    ( √ ) can have negative expectations (31 ms)     ( - ) can have tests that can be skipped easily like this one by prefixing it with x (1 ms)     ( - ) can have tests that execute if the right environment exists (Windows Only) (1 ms) -    ( √ ) can have tests that execute if the right environment exists (Mac Only) (7 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (9 ms) _____________________________________________________________   -√tests.specs.MyFirstSpec (19 ms) +√tests.specs.MyFirstSpec (24 ms) [Passed: 1] [Failed: 0] [Errors: 0] [Skipped: 0] [Suites/Specs: 1/1]   ( √ ) My First Test -    ( √ ) it can add (9 ms) +    ( √ ) it can add (14 ms)     ================================================================================= @@ -39,8543 +39,8 @@ Final Stats [Passed: 9] [Failed: 0] [Errors: 0] [Skipped: 4] [Bundles/Suites/Specs: 3/3/13]   TestBox:        v@build.version@+@build.number@ -Duration:       1392 ms +Duration:       1042 ms CFML Engine:    BoxLang 1.0.0-snapshot+2143 Labels:         None   -√ Passed    - Skipped    !! Exception/Error    X Failureure, h5, h6 { - margin-top: 0; - margin-bottom: 0; } - -p { - margin-top: 0; - margin-bottom: 1rem; } - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; } - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; } - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; } - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; } - -dt { - font-weight: 700; } - -dd { - margin-bottom: .5rem; - margin-left: 0; } - -blockquote { - margin: 0 0 1rem; } - -b, -strong { - font-weight: bolder; } - -small { - font-size: 80%; } - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; } - -sub { - bottom: -.25em; } - -sup { - top: -.5em; } - -a { - color: #3A9ABF; - text-decoration: none; - background-color: transparent; } - a:hover { - color: #286b84; - text-decoration: underline; } - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):focus { - outline: 0; } - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; } - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; } - -figure { - margin: 0 0 1rem; } - -img { - vertical-align: middle; - border-style: none; } - -svg { - overflow: hidden; - vertical-align: middle; } - -table { - border-collapse: collapse; } - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #6c757d; - text-align: left; - caption-side: bottom; } - -th { - text-align: inherit; } - -label { - display: inline-block; - margin-bottom: 0.5rem; } - -button { - border-radius: 0; } - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; } - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -button, -input { - overflow: visible; } - -button, -select { - text-transform: none; } - -select { - word-wrap: normal; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - -button:not(:disabled), -[type="button"]:not(:disabled), -[type="reset"]:not(:disabled), -[type="submit"]:not(:disabled) { - cursor: pointer; } - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - padding: 0; - border-style: none; } - -input[type="radio"], -input[type="checkbox"] { - box-sizing: border-box; - padding: 0; } - -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - -webkit-appearance: listbox; } - -textarea { - overflow: auto; - resize: vertical; } - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; } - -progress { - vertical-align: baseline; } - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; } - -[type="search"] { - outline-offset: -2px; - -webkit-appearance: none; } - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; } - -output { - display: inline-block; } - -summary { - display: list-item; - cursor: pointer; } - -template { - display: none; } - -[hidden] { - display: none !important; } - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0; - font-weight: 500; - line-height: 1.2; } - -h1, .h1 { - font-size: 2rem; } - -h2, .h2 { - font-size: 1.5rem; } - -h3, .h3 { - font-size: 1.25rem; } - -h4, .h4 { - font-size: 1rem; } - -h5, .h5 { - font-size: .85rem; } - -h6, .h6 { - font-size: .5rem; } - -.lead { - font-size: 1.25rem; - font-weight: 300; } - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; } - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; } - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; } - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; } - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); } - -small, -.small { - font-size: 80%; - font-weight: 400; } - -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; } - -.list-unstyled { - padding-left: 0; - list-style: none; } - -.list-inline { - padding-left: 0; - list-style: none; } - -.list-inline-item { - display: inline-block; } - .list-inline-item:not(:last-child) { - margin-right: 0.5rem; } - -.initialism { - font-size: 90%; - text-transform: uppercase; } - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; } - -.blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d; } - .blockquote-footer::before { - content: "\2014\00A0"; } - -.img-fluid { - max-width: 100%; - height: auto; } - -.img-thumbnail { - padding: 0.25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - max-width: 100%; - height: auto; } - -.figure { - display: inline-block; } - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; } - -.figure-caption { - font-size: 90%; - color: #6c757d; } - -code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; } - a > code { - color: inherit; } - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; } - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; } - -pre { - display: block; - font-size: 87.5%; - color: #212529; } - pre code { - font-size: inherit; - color: inherit; - word-break: normal; } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - @media (min-width: 576px) { - .container { - max-width: 540px; } } - @media (min-width: 768px) { - .container { - max-width: 720px; } } - @media (min-width: 992px) { - .container { - max-width: 960px; } } - @media (min-width: 1200px) { - .container { - max-width: 1140px; } } - -.container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - -.row { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; } - -.no-gutters { - margin-right: 0; - margin-left: 0; } - .no-gutters > .col, - .no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; } - -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, -.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, -.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, -.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, -.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, -.col-xl-auto { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; } - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - -.col-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - -.col-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - -.col-3 { - flex: 0 0 25%; - max-width: 25%; } - -.col-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - -.col-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - -.col-6 { - flex: 0 0 50%; - max-width: 50%; } - -.col-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - -.col-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - -.col-9 { - flex: 0 0 75%; - max-width: 75%; } - -.col-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - -.col-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - -.col-12 { - flex: 0 0 100%; - max-width: 100%; } - -.order-first { - order: -1; } - -.order-last { - order: 13; } - -.order-0 { - order: 0; } - -.order-1 { - order: 1; } - -.order-2 { - order: 2; } - -.order-3 { - order: 3; } - -.order-4 { - order: 4; } - -.order-5 { - order: 5; } - -.order-6 { - order: 6; } - -.order-7 { - order: 7; } - -.order-8 { - order: 8; } - -.order-9 { - order: 9; } - -.order-10 { - order: 10; } - -.order-11 { - order: 11; } - -.order-12 { - order: 12; } - -.offset-1 { - margin-left: 8.3333333333%; } - -.offset-2 { - margin-left: 16.6666666667%; } - -.offset-3 { - margin-left: 25%; } - -.offset-4 { - margin-left: 33.3333333333%; } - -.offset-5 { - margin-left: 41.6666666667%; } - -.offset-6 { - margin-left: 50%; } - -.offset-7 { - margin-left: 58.3333333333%; } - -.offset-8 { - margin-left: 66.6666666667%; } - -.offset-9 { - margin-left: 75%; } - -.offset-10 { - margin-left: 83.3333333333%; } - -.offset-11 { - margin-left: 91.6666666667%; } - -@media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-sm-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-sm-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-sm-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-sm-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-sm-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-sm-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-sm-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-sm-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-sm-first { - order: -1; } - - .order-sm-last { - order: 13; } - - .order-sm-0 { - order: 0; } - - .order-sm-1 { - order: 1; } - - .order-sm-2 { - order: 2; } - - .order-sm-3 { - order: 3; } - - .order-sm-4 { - order: 4; } - - .order-sm-5 { - order: 5; } - - .order-sm-6 { - order: 6; } - - .order-sm-7 { - order: 7; } - - .order-sm-8 { - order: 8; } - - .order-sm-9 { - order: 9; } - - .order-sm-10 { - order: 10; } - - .order-sm-11 { - order: 11; } - - .order-sm-12 { - order: 12; } - - .offset-sm-0 { - margin-left: 0; } - - .offset-sm-1 { - margin-left: 8.3333333333%; } - - .offset-sm-2 { - margin-left: 16.6666666667%; } - - .offset-sm-3 { - margin-left: 25%; } - - .offset-sm-4 { - margin-left: 33.3333333333%; } - - .offset-sm-5 { - margin-left: 41.6666666667%; } - - .offset-sm-6 { - margin-left: 50%; } - - .offset-sm-7 { - margin-left: 58.3333333333%; } - - .offset-sm-8 { - margin-left: 66.6666666667%; } - - .offset-sm-9 { - margin-left: 75%; } - - .offset-sm-10 { - margin-left: 83.3333333333%; } - - .offset-sm-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-md-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-md-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-md-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-md-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-md-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-md-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-md-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-md-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-md-first { - order: -1; } - - .order-md-last { - order: 13; } - - .order-md-0 { - order: 0; } - - .order-md-1 { - order: 1; } - - .order-md-2 { - order: 2; } - - .order-md-3 { - order: 3; } - - .order-md-4 { - order: 4; } - - .order-md-5 { - order: 5; } - - .order-md-6 { - order: 6; } - - .order-md-7 { - order: 7; } - - .order-md-8 { - order: 8; } - - .order-md-9 { - order: 9; } - - .order-md-10 { - order: 10; } - - .order-md-11 { - order: 11; } - - .order-md-12 { - order: 12; } - - .offset-md-0 { - margin-left: 0; } - - .offset-md-1 { - margin-left: 8.3333333333%; } - - .offset-md-2 { - margin-left: 16.6666666667%; } - - .offset-md-3 { - margin-left: 25%; } - - .offset-md-4 { - margin-left: 33.3333333333%; } - - .offset-md-5 { - margin-left: 41.6666666667%; } - - .offset-md-6 { - margin-left: 50%; } - - .offset-md-7 { - margin-left: 58.3333333333%; } - - .offset-md-8 { - margin-left: 66.6666666667%; } - - .offset-md-9 { - margin-left: 75%; } - - .offset-md-10 { - margin-left: 83.3333333333%; } - - .offset-md-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-lg-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-lg-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-lg-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-lg-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-lg-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-lg-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-lg-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-lg-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-lg-first { - order: -1; } - - .order-lg-last { - order: 13; } - - .order-lg-0 { - order: 0; } - - .order-lg-1 { - order: 1; } - - .order-lg-2 { - order: 2; } - - .order-lg-3 { - order: 3; } - - .order-lg-4 { - order: 4; } - - .order-lg-5 { - order: 5; } - - .order-lg-6 { - order: 6; } - - .order-lg-7 { - order: 7; } - - .order-lg-8 { - order: 8; } - - .order-lg-9 { - order: 9; } - - .order-lg-10 { - order: 10; } - - .order-lg-11 { - order: 11; } - - .order-lg-12 { - order: 12; } - - .offset-lg-0 { - margin-left: 0; } - - .offset-lg-1 { - margin-left: 8.3333333333%; } - - .offset-lg-2 { - margin-left: 16.6666666667%; } - - .offset-lg-3 { - margin-left: 25%; } - - .offset-lg-4 { - margin-left: 33.3333333333%; } - - .offset-lg-5 { - margin-left: 41.6666666667%; } - - .offset-lg-6 { - margin-left: 50%; } - - .offset-lg-7 { - margin-left: 58.3333333333%; } - - .offset-lg-8 { - margin-left: 66.6666666667%; } - - .offset-lg-9 { - margin-left: 75%; } - - .offset-lg-10 { - margin-left: 83.3333333333%; } - - .offset-lg-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-xl-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-xl-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-xl-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-xl-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-xl-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-xl-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-xl-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-xl-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-xl-first { - order: -1; } - - .order-xl-last { - order: 13; } - - .order-xl-0 { - order: 0; } - - .order-xl-1 { - order: 1; } - - .order-xl-2 { - order: 2; } - - .order-xl-3 { - order: 3; } - - .order-xl-4 { - order: 4; } - - .order-xl-5 { - order: 5; } - - .order-xl-6 { - order: 6; } - - .order-xl-7 { - order: 7; } - - .order-xl-8 { - order: 8; } - - .order-xl-9 { - order: 9; } - - .order-xl-10 { - order: 10; } - - .order-xl-11 { - order: 11; } - - .order-xl-12 { - order: 12; } - - .offset-xl-0 { - margin-left: 0; } - - .offset-xl-1 { - margin-left: 8.3333333333%; } - - .offset-xl-2 { - margin-left: 16.6666666667%; } - - .offset-xl-3 { - margin-left: 25%; } - - .offset-xl-4 { - margin-left: 33.3333333333%; } - - .offset-xl-5 { - margin-left: 41.6666666667%; } - - .offset-xl-6 { - margin-left: 50%; } - - .offset-xl-7 { - margin-left: 58.3333333333%; } - - .offset-xl-8 { - margin-left: 66.6666666667%; } - - .offset-xl-9 { - margin-left: 75%; } - - .offset-xl-10 { - margin-left: 83.3333333333%; } - - .offset-xl-11 { - margin-left: 91.6666666667%; } } -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529; } - .table th, - .table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; } - .table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; } - .table tbody + tbody { - border-top: 2px solid #dee2e6; } - -.table-sm th, -.table-sm td { - padding: 0.3rem; } - -.table-bordered { - border: 1px solid #dee2e6; } - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6; } - .table-bordered thead th, - .table-bordered thead td { - border-bottom-width: 2px; } - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; } - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); } - -.table-hover tbody tr:hover { - color: #212529; - background-color: rgba(0, 0, 0, 0.075); } - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #c8e3ed; } -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #99cade; } - -.table-hover .table-primary:hover { - background-color: #b5d9e7; } - .table-hover .table-primary:hover > td, - .table-hover .table-primary:hover > th { - background-color: #b5d9e7; } - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #d6d8db; } -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #b3b7bb; } - -.table-hover .table-secondary:hover { - background-color: #c8cbcf; } - .table-hover .table-secondary:hover > td, - .table-hover .table-secondary:hover > th { - background-color: #c8cbcf; } - -.table-success, -.table-success > th, -.table-success > td { - background-color: #d8f1c8; } -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #b7e498; } - -.table-hover .table-success:hover { - background-color: #caecb4; } - .table-hover .table-success:hover > td, - .table-hover .table-success:hover > th { - background-color: #caecb4; } - -.table-info, -.table-info > th, -.table-info > td { - background-color: #bee5eb; } -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #86cfda; } - -.table-hover .table-info:hover { - background-color: #abdde5; } - .table-hover .table-info:hover > td, - .table-hover .table-info:hover > th { - background-color: #abdde5; } - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #feedc4; } -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #fede92; } - -.table-hover .table-warning:hover { - background-color: #fee5ab; } - .table-hover .table-warning:hover > td, - .table-hover .table-warning:hover > th { - background-color: #fee5ab; } - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f4c7cc; } -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #eb97a0; } - -.table-hover .table-danger:hover { - background-color: #f0b2b9; } - .table-hover .table-danger:hover > td, - .table-hover .table-danger:hover > th { - background-color: #f0b2b9; } - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; } -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #fbfcfc; } - -.table-hover .table-light:hover { - background-color: #ececf6; } - .table-hover .table-light:hover > td, - .table-hover .table-light:hover > th { - background-color: #ececf6; } - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c6c8ca; } -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #95999c; } - -.table-hover .table-dark:hover { - background-color: #b9bbbe; } - .table-hover .table-dark:hover > td, - .table-hover .table-dark:hover > th { - background-color: #b9bbbe; } - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); } - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); } - .table-hover .table-active:hover > td, - .table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); } - -.table .thead-dark th { - color: #fff; - background-color: #343a40; - border-color: #454d55; } -.table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6; } - -.table-dark { - color: #fff; - background-color: #343a40; } - .table-dark th, - .table-dark td, - .table-dark thead th { - border-color: #454d55; } - .table-dark.table-bordered { - border: 0; } - .table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); } - .table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, 0.075); } - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-sm > .table-bordered { - border: 0; } } -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-md > .table-bordered { - border: 0; } } -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-lg > .table-bordered { - border: 0; } } -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-xl > .table-bordered { - border: 0; } } -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered { - border: 0; } - -.form-control { - display: block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; } } - .form-control::-ms-expand { - background-color: transparent; - border: 0; } - .form-control:focus { - color: #495057; - background-color: #fff; - border-color: #99cce0; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .form-control::placeholder { - color: #6c757d; - opacity: 1; } - .form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; } - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff; } - -.form-control-file, -.form-control-range { - display: block; - width: 100%; } - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; } - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; } - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; } - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; } - .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; } - -.form-control-sm { - height: calc(1.5em + 0.5rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.form-control-lg { - height: calc(1.5em + 1rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -select.form-control[size], select.form-control[multiple] { - height: auto; } - -textarea.form-control { - height: auto; } - -.form-group { - margin-bottom: 1rem; } - -.form-text { - display: block; - margin-top: 0.25rem; } - -.form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; } - .form-row > .col, - .form-row > [class*="col-"] { - padding-right: 5px; - padding-left: 5px; } - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; } - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; } - .form-check-input:disabled ~ .form-check-label { - color: #6c757d; } - -.form-check-label { - margin-bottom: 0; } - -.form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; } - .form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; } - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #75CC39; } - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #212529; - background-color: rgba(117, 204, 57, 0.9); - border-radius: 0.25rem; } - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #75CC39; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .form-control:valid ~ .valid-feedback, - .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, - .form-control.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #75CC39; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .custom-select:valid ~ .valid-feedback, - .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, - .custom-select.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #75CC39; } -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #75CC39; } - .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #75CC39; } -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; } -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #91d662; - background-color: #91d662; } -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #75CC39; } - -.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #75CC39; } -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; } -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #D93749; } - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(217, 55, 73, 0.9); - border-radius: 0.25rem; } - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #D93749; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .form-control:invalid ~ .invalid-feedback, - .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, - .form-control.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #D93749; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .custom-select:invalid ~ .invalid-feedback, - .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, - .custom-select.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #D93749; } -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #D93749; } - .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #D93749; } -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; } -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #e16270; - background-color: #e16270; } -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #D93749; } - -.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #D93749; } -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; } -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - -.form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; } - .form-inline .form-check { - width: 100%; } - @media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; } - .form-inline .form-control-plaintext { - display: inline-block; } - .form-inline .input-group, - .form-inline .custom-select { - width: auto; } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; } - .form-inline .form-check-input { - position: relative; - flex-shrink: 0; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; } - .form-inline .custom-control { - align-items: center; - justify-content: center; } - .form-inline .custom-control-label { - margin-bottom: 0; } } - -.btn { - cursor: pointer; - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .btn { - transition: none; } } - .btn:hover { - color: #212529; - text-decoration: none; } - .btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .btn.disabled, .btn:disabled { - opacity: 0.65; } - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; } - -.btn-primary { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-primary:hover { - color: #fff; - background-color: #3182a2; - border-color: #2e7a98; } - .btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } - .btn-primary.disabled, .btn-primary:disabled { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #2e7a98; - border-color: #2b738e; } - .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } - -.btn-secondary { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-secondary:hover { - color: #fff; - background-color: #5a6268; - border-color: #545b62; } - .btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - .btn-secondary.disabled, .btn-secondary:disabled { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #545b62; - border-color: #4e555b; } - .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - -.btn-success { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-success:hover { - color: #fff; - background-color: #63b12e; - border-color: #5ea72b; } - .btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } - .btn-success.disabled, .btn-success:disabled { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #5ea72b; - border-color: #589d28; } - .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } - -.btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b; } - .btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - .btn-info.disabled, .btn-info:disabled { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { - color: #fff; - background-color: #117a8b; - border-color: #10707f; } - .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - -.btn-warning { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-warning:hover { - color: #212529; - background-color: #fdb508; - border-color: #f6ae02; } - .btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } - .btn-warning.disabled, .btn-warning:disabled { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: #212529; - background-color: #f6ae02; - border-color: #e9a502; } - .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } - -.btn-danger { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-danger:hover { - color: #fff; - background-color: #c42537; - border-color: #ba2334; } - .btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } - .btn-danger.disabled, .btn-danger:disabled { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #ba2334; - border-color: #af2131; } - .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } - -.btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; } - .btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - .btn-light.disabled, .btn-light:disabled { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df; } - .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124; } - .btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - .btn-dark.disabled, .btn-dark:disabled { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #1d2124; - border-color: #171a1d; } - .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - -.btn-outline-primary { - color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:hover { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - .btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #3A9ABF; - background-color: transparent; } - .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - -.btn-outline-secondary { - color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:hover { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #6C757D; - background-color: transparent; } - .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - -.btn-outline-success { - color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:hover { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - .btn-outline-success.disabled, .btn-outline-success:disabled { - color: #75CC39; - background-color: transparent; } - .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - -.btn-outline-info { - color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - .btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; } - .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - -.btn-outline-warning { - color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:hover { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - .btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #FDC02E; - background-color: transparent; } - .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - -.btn-outline-danger { - color: #D93749; - border-color: #D93749; } - .btn-outline-danger:hover { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - .btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #D93749; - background-color: transparent; } - .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - .btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; } - .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - -.btn-outline-dark { - color: #343a40; - border-color: #343a40; } - .btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - .btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; } - .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - -.btn-link { - font-weight: 400; - color: #3A9ABF; - text-decoration: none; } - .btn-link:hover { - color: #286b84; - text-decoration: underline; } - .btn-link:focus, .btn-link.focus { - text-decoration: underline; - box-shadow: none; } - .btn-link:disabled, .btn-link.disabled { - color: #6c757d; - pointer-events: none; } - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.75rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.btn-block { - display: block; - width: 100%; } - .btn-block + .btn-block { - margin-top: 0.5rem; } - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; } - -.fade { - transition: opacity 0.15s linear; } - @media (prefers-reduced-motion: reduce) { - .fade { - transition: none; } } - .fade:not(.show) { - opacity: 0; } - -.collapse:not(.show) { - display: none; } - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; } } - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; } - -.dropdown-toggle { - white-space: nowrap; } - .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; } - .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - -.dropdown-menu-left { - right: auto; - left: 0; } - -.dropdown-menu-right { - right: 0; - left: auto; } - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; } - - .dropdown-menu-sm-right { - right: 0; - left: auto; } } -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; } - - .dropdown-menu-md-right { - right: 0; - left: auto; } } -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; } - - .dropdown-menu-lg-right { - right: 0; - left: auto; } } -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; } - - .dropdown-menu-xl-right { - right: 0; - left: auto; } } -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; } -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; } -.dropup .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; } -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; } -.dropright .dropdown-toggle:empty::after { - margin-left: 0; } -.dropright .dropdown-toggle::after { - vertical-align: 0; } - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; } -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; } -.dropleft .dropdown-toggle::after { - display: none; } -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; } -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; } -.dropleft .dropdown-toggle::before { - vertical-align: 0; } - -.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { - right: auto; - bottom: auto; } - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; } - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; } - .dropdown-item:hover, .dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; } - .dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #3A9ABF; } - .dropdown-item.disabled, .dropdown-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: transparent; } - -.dropdown-menu.show { - display: block; } - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; } - -.dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #212529; } - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; } - .btn-group > .btn:hover, - .btn-group-vertical > .btn:hover { - z-index: 1; } - .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, - .btn-group-vertical > .btn:focus, - .btn-group-vertical > .btn:active, - .btn-group-vertical > .btn.active { - z-index: 1; } - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; } -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { - margin-left: 0; } - .dropleft .dropdown-toggle-split::before { - margin-right: 0; } - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; } - .btn-group-vertical > .btn, - .btn-group-vertical > .btn-group { - width: 100%; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; } - .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), - .btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; } - .btn-group-toggle > .btn input[type="radio"], - .btn-group-toggle > .btn input[type="checkbox"], - .btn-group-toggle > .btn-group > .btn input[type="radio"], - .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; } - .input-group > .form-control, - .input-group > .form-control-plaintext, - .input-group > .custom-select, - .input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; } - .input-group > .form-control + .form-control, - .input-group > .form-control + .custom-select, - .input-group > .form-control + .custom-file, - .input-group > .form-control-plaintext + .form-control, - .input-group > .form-control-plaintext + .custom-select, - .input-group > .form-control-plaintext + .custom-file, - .input-group > .custom-select + .form-control, - .input-group > .custom-select + .custom-select, - .input-group > .custom-select + .custom-file, - .input-group > .custom-file + .form-control, - .input-group > .custom-file + .custom-select, - .input-group > .custom-file + .custom-file { - margin-left: -1px; } - .input-group > .form-control:focus, - .input-group > .custom-select:focus, - .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; } - .input-group > .custom-file .custom-file-input:focus { - z-index: 4; } - .input-group > .form-control:not(:last-child), - .input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .form-control:not(:first-child), - .input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .input-group > .custom-file { - display: flex; - align-items: center; } - .input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.input-group-prepend, -.input-group-append { - display: flex; } - .input-group-prepend .btn, - .input-group-append .btn { - position: relative; - z-index: 2; } - .input-group-prepend .btn:focus, - .input-group-append .btn:focus { - z-index: 3; } - .input-group-prepend .btn + .btn, - .input-group-prepend .btn + .input-group-text, - .input-group-prepend .input-group-text + .input-group-text, - .input-group-prepend .input-group-text + .btn, - .input-group-append .btn + .btn, - .input-group-append .btn + .input-group-text, - .input-group-append .input-group-text + .input-group-text, - .input-group-append .input-group-text + .btn { - margin-left: -1px; } - -.input-group-prepend { - margin-right: -1px; } - -.input-group-append { - margin-left: -1px; } - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .input-group-text input[type="radio"], - .input-group-text input[type="checkbox"] { - margin-top: 0; } - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(1.5em + 1rem + 2px); } - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(1.5em + 0.5rem + 2px); } - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; } - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.custom-control { - position: relative; - display: block; - min-height: 1.5rem; - padding-left: 1.5rem; } - -.custom-control-inline { - display: inline-flex; - margin-right: 1rem; } - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; } - .custom-control-input:checked ~ .custom-control-label::before { - color: #fff; - border-color: #3A9ABF; - background-color: #3A9ABF; } - .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #99cce0; } - .custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #fff; - background-color: #c0e0ec; - border-color: #c0e0ec; } - .custom-control-input:disabled ~ .custom-control-label { - color: #6c757d; } - .custom-control-input:disabled ~ .custom-control-label::before { - background-color: #e9ecef; } - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; } - .custom-control-label::before { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #fff; - border: #adb5bd solid 1px; } - .custom-control-label::after { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: no-repeat 50% / 50% 50%; } - -.custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; } -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #3A9ABF; - background-color: #3A9ABF; } -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - -.custom-radio .custom-control-label::before { - border-radius: 50%; } -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - -.custom-switch { - padding-left: 2.25rem; } - .custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; } - .custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; } } - .custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #fff; - transform: translateX(0.75rem); } - .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - -.custom-select { - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; - appearance: none; } - .custom-select:focus { - border-color: #99cce0; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; } - .custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; } - .custom-select:disabled { - color: #6c757d; - background-color: #e9ecef; } - .custom-select::-ms-expand { - display: none; } - -.custom-select-sm { - height: calc(1.5em + 0.5rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; } - -.custom-select-lg { - height: calc(1.5em + 1rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; } - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin-bottom: 0; } - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin: 0; - opacity: 0; } - .custom-file-input:focus ~ .custom-file-label { - border-color: #99cce0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-file-input:disabled ~ .custom-file-label { - background-color: #e9ecef; } - .custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; } - .custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); } - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + 0.75rem); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; } - -.custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - appearance: none; } - .custom-range:focus { - outline: none; } - .custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range::-moz-focus-outer { - border: 0; } - .custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; } } - .custom-range::-webkit-slider-thumb:active { - background-color: #c0e0ec; } - .custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; } } - .custom-range::-moz-range-thumb:active { - background-color: #c0e0ec; } - .custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; } } - .custom-range::-ms-thumb:active { - background-color: #c0e0ec; } - .custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; } - .custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; } - .custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-moz-range-track { - cursor: default; } - .custom-range:disabled::-ms-thumb { - background-color: #adb5bd; } - -.custom-control-label::before, -.custom-file-label, -.custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - transition: none; } } - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - -.nav-link { - display: block; - padding: 0.5rem 1rem; } - .nav-link:hover, .nav-link:focus { - text-decoration: none; } - .nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; } - -.nav-tabs { - border-bottom: 1px solid #dee2e6; } - .nav-tabs .nav-item { - margin-bottom: -1px; } - .nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; } - .nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; } - .nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav-pills .nav-link { - border-radius: 0.25rem; } -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #fff; - background-color: #3A9ABF; } - -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; } - -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; } - -.tab-content > .tab-pane { - display: none; } -.tab-content > .active { - display: block; } - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 1rem; } - .navbar > .container, - .navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; } - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; } - .navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; } - -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; } - .navbar-nav .dropdown-menu { - position: static; - float: none; } - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; } - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; } - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; } - .navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; } - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; } - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-sm .navbar-toggler { - display: none; } } -@media (max-width: 767.98px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-md .navbar-toggler { - display: none; } } -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-lg .navbar-toggler { - display: none; } } -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xl .navbar-toggler { - display: none; } } -.navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; } - .navbar-expand .navbar-nav { - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand .navbar-toggler { - display: none; } - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); } -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); } - .navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); } -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); } -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); } -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='https://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); } - -.navbar-dark .navbar-brand { - color: #fff; } - .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #fff; } -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); } - .navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); } -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff; } -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); } -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='https://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-text a { - color: #fff; } - .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #fff; } - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; } - .card > hr { - margin-right: 0; - margin-left: 0; } - .card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - -.card-body { - flex: 1 1 auto; - padding: 1.25rem; } - -.card-title { - margin-bottom: 0.75rem; } - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; } - -.card-text:last-child { - margin-bottom: 0; } - -.card-link:hover { - text-decoration: none; } -.card-link + .card-link { - margin-left: 1.25rem; } - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); } - .card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } - .card-header + .list-group .list-group-item:first-child { - border-top: 0; } - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); } - .card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; } - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; } - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; } - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); } - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); } - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); } - -.card-deck { - display: flex; - flex-direction: column; } - .card-deck .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; } } - -.card-group { - display: flex; - flex-direction: column; } - .card-group > .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-group { - flex-flow: row wrap; } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; } } - -.card-columns .card { - margin-bottom: 0.75rem; } -@media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; } - .card-columns .card { - display: inline-block; - width: 100%; } } - -.accordion > .card { - overflow: hidden; } - .accordion > .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; } - .accordion > .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; } - .accordion > .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .accordion > .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; } - .accordion > .card .card-header { - margin-bottom: -1px; } - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0.25rem; } - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; } - .breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #6c757d; - content: "/"; } -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; } -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; } -.breadcrumb-item.active { - color: #6c757d; } - -.pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; } - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #3A9ABF; - background-color: #fff; - border: 1px solid #dee2e6; } - .page-link:hover { - z-index: 2; - color: #286b84; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; } - .page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; } -.page-item.active .page-link { - z-index: 1; - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #fff; - border-color: #dee2e6; } - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; } -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; } - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; } -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; } -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; } - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .badge { - transition: none; } } - a.badge:hover, a.badge:focus { - text-decoration: none; } - .badge:empty { - display: none; } - -.btn .badge { - position: relative; - top: -1px; } - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; } - -.badge-primary { - color: #fff; - background-color: #3A9ABF; } - a.badge-primary:hover, a.badge-primary:focus { - color: #fff; - background-color: #2e7a98; } - a.badge-primary:focus, a.badge-primary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - -.badge-secondary { - color: #fff; - background-color: #6C757D; } - a.badge-secondary:hover, a.badge-secondary:focus { - color: #fff; - background-color: #545b62; } - a.badge-secondary:focus, a.badge-secondary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - -.badge-success { - color: #212529; - background-color: #75CC39; } - a.badge-success:hover, a.badge-success:focus { - color: #212529; - background-color: #5ea72b; } - a.badge-success:focus, a.badge-success.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - -.badge-info { - color: #fff; - background-color: #17a2b8; } - a.badge-info:hover, a.badge-info:focus { - color: #fff; - background-color: #117a8b; } - a.badge-info:focus, a.badge-info.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - -.badge-warning { - color: #212529; - background-color: #FDC02E; } - a.badge-warning:hover, a.badge-warning:focus { - color: #212529; - background-color: #f6ae02; } - a.badge-warning:focus, a.badge-warning.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - -.badge-danger { - color: #fff; - background-color: #D93749; } - a.badge-danger:hover, a.badge-danger:focus { - color: #fff; - background-color: #ba2334; } - a.badge-danger:focus, a.badge-danger.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - -.badge-light { - color: #212529; - background-color: #f8f9fa; } - a.badge-light:hover, a.badge-light:focus { - color: #212529; - background-color: #dae0e5; } - a.badge-light:focus, a.badge-light.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - -.badge-dark { - color: #fff; - background-color: #343a40; } - a.badge-dark:hover, a.badge-dark:focus { - color: #fff; - background-color: #1d2124; } - a.badge-dark:focus, a.badge-dark.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; } - @media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; } } - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; } - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; } - -.alert-heading { - color: inherit; } - -.alert-link { - font-weight: 700; } - -.alert-dismissible { - padding-right: 4rem; } - .alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; } - -.alert-primary { - color: #1e5063; - background-color: #d8ebf2; - border-color: #c8e3ed; } - .alert-primary hr { - border-top-color: #b5d9e7; } - .alert-primary .alert-link { - color: #12303c; } - -.alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; } - .alert-secondary hr { - border-top-color: #c8cbcf; } - .alert-secondary .alert-link { - color: #202326; } - -.alert-success { - color: #3d6a1e; - background-color: #e3f5d7; - border-color: #d8f1c8; } - .alert-success hr { - border-top-color: #caecb4; } - .alert-success .alert-link { - color: #264213; } - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; } - .alert-info hr { - border-top-color: #abdde5; } - .alert-info .alert-link { - color: #062c33; } - -.alert-warning { - color: #846418; - background-color: #fff2d5; - border-color: #feedc4; } - .alert-warning hr { - border-top-color: #fee5ab; } - .alert-warning .alert-link { - color: #594310; } - -.alert-danger { - color: #711d26; - background-color: #f7d7db; - border-color: #f4c7cc; } - .alert-danger hr { - border-top-color: #f0b2b9; } - .alert-danger .alert-link { - color: #481318; } - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; } - .alert-light hr { - border-top-color: #ececf6; } - .alert-light .alert-link { - color: #686868; } - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; } - .alert-dark hr { - border-top-color: #b9bbbe; } - .alert-dark .alert-link { - color: #040505; } - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; } - to { - background-position: 0 0; } } -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; } - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #3A9ABF; - transition: width 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; } } - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; } - -.progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; } - @media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; } } - -.media { - display: flex; - align-items: flex-start; } - -.media-body { - flex: 1; } - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; } - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; } - .list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; } - .list-group-item-action:active { - color: #212529; - background-color: #e9ecef; } - -.list-group-item { - position: relative; - display: block; - padding: 0.25rem 0.5rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); } - .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - .list-group-item.disabled, .list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff; } - .list-group-item.active { - z-index: 2; - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - -.list-group-horizontal { - flex-direction: row; } - .list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; } - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; } - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; } - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; } - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; } - .list-group-flush .list-group-item:last-child { - margin-bottom: -1px; } -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; } -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; } - -.list-group-item-primary { - color: #1e5063; - background-color: #c8e3ed; } - .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #1e5063; - background-color: #b5d9e7; } - .list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #1e5063; - border-color: #1e5063; } - -.list-group-item-secondary { - color: #383d41; - background-color: #d6d8db; } - .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #383d41; - background-color: #c8cbcf; } - .list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #383d41; - border-color: #383d41; } - -.list-group-item-success { - color: #3d6a1e; - background-color: #d8f1c8; } - .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #3d6a1e; - background-color: #caecb4; } - .list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #3d6a1e; - border-color: #3d6a1e; } - -.list-group-item-info { - color: #0c5460; - background-color: #bee5eb; } - .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #0c5460; - background-color: #abdde5; } - .list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #0c5460; - border-color: #0c5460; } - -.list-group-item-warning { - color: #846418; - background-color: #feedc4; } - .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #846418; - background-color: #fee5ab; } - .list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #846418; - border-color: #846418; } - -.list-group-item-danger { - color: #711d26; - background-color: #f4c7cc; } - .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #711d26; - background-color: #f0b2b9; } - .list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #711d26; - border-color: #711d26; } - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe; } - .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6; } - .list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #818182; - border-color: #818182; } - -.list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca; } - .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #1b1e21; - background-color: #b9bbbe; } - .list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #1b1e21; - border-color: #1b1e21; } - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: .5; } - .close:hover { - color: #000; - text-decoration: none; } - .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: .75; } - -button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; } - -a.close.disabled { - pointer-events: none; } - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; - border-radius: 0.25rem; } - .toast:not(:last-child) { - margin-bottom: 0.75rem; } - .toast.showing { - opacity: 1; } - .toast.show { - display: block; - opacity: 1; } - .toast.hide { - display: none; } - -.toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); } - -.toast-body { - padding: 0.75rem; } - -.modal-open { - overflow: hidden; } - .modal-open .modal { - overflow-x: hidden; - overflow-y: auto; } - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; } - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; } - .modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); } - @media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; } } - .modal.show .modal-dialog { - transform: none; } - -.modal-dialog-scrollable { - display: flex; - max-height: calc(100% - 1rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden; } - .modal-dialog-scrollable .modal-header, - .modal-dialog-scrollable .modal-footer { - flex-shrink: 0; } - .modal-dialog-scrollable .modal-body { - overflow-y: auto; } - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - 1rem); } - .modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: ""; } - .modal-dialog-centered.modal-dialog-scrollable { - flex-direction: column; - justify-content: center; - height: 100%; } - .modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none; } - .modal-dialog-centered.modal-dialog-scrollable::before { - content: none; } - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; } - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; } - .modal-backdrop.fade { - opacity: 0; } - .modal-backdrop.show { - opacity: 0.5; } - -.modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; } - .modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; } - -.modal-title { - margin-bottom: 0; - line-height: 1.5; } - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; } - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } - .modal-footer > :not(:first-child) { - margin-left: .25rem; } - .modal-footer > :not(:last-child) { - margin-right: .25rem; } - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; } - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; } - - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem); } - - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); } - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); } - - .modal-sm { - max-width: 300px; } } -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - max-width: 800px; } } -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; } } -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: 0.9; } - .tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; } - .tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { - padding: 0.4rem 0; } - .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; } - .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; } - -.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { - padding: 0 0.4rem; } - .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; } - -.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { - padding: 0.4rem 0; } - .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; } - .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; } - -.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { - padding: 0 0.4rem; } - .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; } - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; } - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; } - .popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; } - .popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-popover-top, .bs-popover-auto[x-placement^="top"] { - margin-bottom: 0.5rem; } - .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { - bottom: calc((0.5rem + 1px) * -1); } - .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); } - .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #fff; } - -.bs-popover-right, .bs-popover-auto[x-placement^="right"] { - margin-left: 0.5rem; } - .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); } - .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #fff; } - -.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { - margin-top: 0.5rem; } - .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { - top: calc((0.5rem + 1px) * -1); } - .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); } - .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #fff; } - .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; } - -.bs-popover-left, .bs-popover-auto[x-placement^="left"] { - margin-right: 0.5rem; } - .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); } - .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #fff; } - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); } - .popover-header:empty { - display: none; } - -.popover-body { - padding: 0.5rem 0.75rem; - color: #212529; } - -.carousel { - position: relative; } - -.carousel.pointer-event { - touch-action: pan-y; } - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; } - .carousel-inner::after { - display: block; - clear: both; - content: ""; } - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; } } - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; } - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - transform: translateX(100%); } - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - transform: translateX(-100%); } - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; } -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; } -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; } - @media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - transition: none; } } - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; } } - .carousel-control-prev:hover, .carousel-control-prev:focus, - .carousel-control-next:hover, - .carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; } - -.carousel-control-prev { - left: 0; } - -.carousel-control-next { - right: 0; } - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: no-repeat 50% / 100% 100%; } - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='https://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; } - .carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: .5; - transition: opacity 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; } } - .carousel-indicators .active { - opacity: 1; } - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; } - -@keyframes spinner-border { - to { - transform: rotate(360deg); } } -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border .75s linear infinite; } - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; } - -@keyframes spinner-grow { - 0% { - transform: scale(0); } - 50% { - opacity: 1; } } -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow .75s linear infinite; } - -.spinner-grow-sm { - width: 1rem; - height: 1rem; } - -.align-baseline { - vertical-align: baseline !important; } - -.align-top { - vertical-align: top !important; } - -.align-middle { - vertical-align: middle !important; } - -.align-bottom { - vertical-align: bottom !important; } - -.align-text-bottom { - vertical-align: text-bottom !important; } - -.align-text-top { - vertical-align: text-top !important; } - -.bg-primary { - background-color: #3A9ABF !important; } - -a.bg-primary:hover, a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #2e7a98 !important; } - -.bg-secondary { - background-color: #6C757D !important; } - -a.bg-secondary:hover, a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #545b62 !important; } - -.bg-success { - background-color: #75CC39 !important; } - -a.bg-success:hover, a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #5ea72b !important; } - -.bg-info { - background-color: #17a2b8 !important; } - -a.bg-info:hover, a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #117a8b !important; } - -.bg-warning { - background-color: #FDC02E !important; } - -a.bg-warning:hover, a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #f6ae02 !important; } - -.bg-danger { - background-color: #D93749 !important; } - -a.bg-danger:hover, a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #ba2334 !important; } - -.bg-light { - background-color: #f8f9fa !important; } - -a.bg-light:hover, a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #dae0e5 !important; } - -.bg-dark { - background-color: #343a40 !important; } - -a.bg-dark:hover, a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #1d2124 !important; } - -.bg-white { - background-color: #fff !important; } - -.bg-transparent { - background-color: transparent !important; } - -.border { - border: 1px solid #dee2e6 !important; } - -.border-top { - border-top: 1px solid #dee2e6 !important; } - -.border-right { - border-right: 1px solid #dee2e6 !important; } - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important; } - -.border-left { - border-left: 1px solid #dee2e6 !important; } - -.border-0 { - border: 0 !important; } - -.border-top-0 { - border-top: 0 !important; } - -.border-right-0 { - border-right: 0 !important; } - -.border-bottom-0 { - border-bottom: 0 !important; } - -.border-left-0 { - border-left: 0 !important; } - -.border-primary { - border-color: #3A9ABF !important; } - -.border-secondary { - border-color: #6C757D !important; } - -.border-success { - border-color: #75CC39 !important; } - -.border-info { - border-color: #17a2b8 !important; } - -.border-warning { - border-color: #FDC02E !important; } - -.border-danger { - border-color: #D93749 !important; } - -.border-light { - border-color: #f8f9fa !important; } - -.border-dark { - border-color: #343a40 !important; } - -.border-white { - border-color: #fff !important; } - -.rounded-sm { - border-radius: 0.2rem !important; } - -.rounded { - border-radius: 0.25rem !important; } - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; } - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; } - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-lg { - border-radius: 0.3rem !important; } - -.rounded-circle { - border-radius: 50% !important; } - -.rounded-pill { - border-radius: 50rem !important; } - -.rounded-0 { - border-radius: 0 !important; } - -.clearfix::after { - display: block; - clear: both; - content: ""; } - -.d-none { - display: none !important; } - -.d-inline { - display: inline !important; } - -.d-inline-block { - display: inline-block !important; } - -.d-block { - display: block !important; } - -.d-table { - display: table !important; } - -.d-table-row { - display: table-row !important; } - -.d-table-cell { - display: table-cell !important; } - -.d-flex { - display: flex !important; } - -.d-inline-flex { - display: inline-flex !important; } - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; } - - .d-sm-inline { - display: inline !important; } - - .d-sm-inline-block { - display: inline-block !important; } - - .d-sm-block { - display: block !important; } - - .d-sm-table { - display: table !important; } - - .d-sm-table-row { - display: table-row !important; } - - .d-sm-table-cell { - display: table-cell !important; } - - .d-sm-flex { - display: flex !important; } - - .d-sm-inline-flex { - display: inline-flex !important; } } -@media (min-width: 768px) { - .d-md-none { - display: none !important; } - - .d-md-inline { - display: inline !important; } - - .d-md-inline-block { - display: inline-block !important; } - - .d-md-block { - display: block !important; } - - .d-md-table { - display: table !important; } - - .d-md-table-row { - display: table-row !important; } - - .d-md-table-cell { - display: table-cell !important; } - - .d-md-flex { - display: flex !important; } - - .d-md-inline-flex { - display: inline-flex !important; } } -@media (min-width: 992px) { - .d-lg-none { - display: none !important; } - - .d-lg-inline { - display: inline !important; } - - .d-lg-inline-block { - display: inline-block !important; } - - .d-lg-block { - display: block !important; } - - .d-lg-table { - display: table !important; } - - .d-lg-table-row { - display: table-row !important; } - - .d-lg-table-cell { - display: table-cell !important; } - - .d-lg-flex { - display: flex !important; } - - .d-lg-inline-flex { - display: inline-flex !important; } } -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; } - - .d-xl-inline { - display: inline !important; } - - .d-xl-inline-block { - display: inline-block !important; } - - .d-xl-block { - display: block !important; } - - .d-xl-table { - display: table !important; } - - .d-xl-table-row { - display: table-row !important; } - - .d-xl-table-cell { - display: table-cell !important; } - - .d-xl-flex { - display: flex !important; } - - .d-xl-inline-flex { - display: inline-flex !important; } } -@media print { - .d-print-none { - display: none !important; } - - .d-print-inline { - display: inline !important; } - - .d-print-inline-block { - display: inline-block !important; } - - .d-print-block { - display: block !important; } - - .d-print-table { - display: table !important; } - - .d-print-table-row { - display: table-row !important; } - - .d-print-table-cell { - display: table-cell !important; } - - .d-print-flex { - display: flex !important; } - - .d-print-inline-flex { - display: inline-flex !important; } } -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; } - .embed-responsive::before { - display: block; - content: ""; } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; } - -.embed-responsive-21by9::before { - padding-top: 42.8571428571%; } - -.embed-responsive-16by9::before { - padding-top: 56.25%; } - -.embed-responsive-4by3::before { - padding-top: 75%; } - -.embed-responsive-1by1::before { - padding-top: 100%; } - -.flex-row { - flex-direction: row !important; } - -.flex-column { - flex-direction: column !important; } - -.flex-row-reverse { - flex-direction: row-reverse !important; } - -.flex-column-reverse { - flex-direction: column-reverse !important; } - -.flex-wrap { - flex-wrap: wrap !important; } - -.flex-nowrap { - flex-wrap: nowrap !important; } - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; } - -.flex-fill { - flex: 1 1 auto !important; } - -.flex-grow-0 { - flex-grow: 0 !important; } - -.flex-grow-1 { - flex-grow: 1 !important; } - -.flex-shrink-0 { - flex-shrink: 0 !important; } - -.flex-shrink-1 { - flex-shrink: 1 !important; } - -.justify-content-start { - justify-content: flex-start !important; } - -.justify-content-end { - justify-content: flex-end !important; } - -.justify-content-center { - justify-content: center !important; } - -.justify-content-between { - justify-content: space-between !important; } - -.justify-content-around { - justify-content: space-around !important; } - -.align-items-start { - align-items: flex-start !important; } - -.align-items-end { - align-items: flex-end !important; } - -.align-items-center { - align-items: center !important; } - -.align-items-baseline { - align-items: baseline !important; } - -.align-items-stretch { - align-items: stretch !important; } - -.align-content-start { - align-content: flex-start !important; } - -.align-content-end { - align-content: flex-end !important; } - -.align-content-center { - align-content: center !important; } - -.align-content-between { - align-content: space-between !important; } - -.align-content-around { - align-content: space-around !important; } - -.align-content-stretch { - align-content: stretch !important; } - -.align-self-auto { - align-self: auto !important; } - -.align-self-start { - align-self: flex-start !important; } - -.align-self-end { - align-self: flex-end !important; } - -.align-self-center { - align-self: center !important; } - -.align-self-baseline { - align-self: baseline !important; } - -.align-self-stretch { - align-self: stretch !important; } - -@media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; } - - .flex-sm-column { - flex-direction: column !important; } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; } - - .flex-sm-wrap { - flex-wrap: wrap !important; } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-sm-fill { - flex: 1 1 auto !important; } - - .flex-sm-grow-0 { - flex-grow: 0 !important; } - - .flex-sm-grow-1 { - flex-grow: 1 !important; } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-sm-start { - justify-content: flex-start !important; } - - .justify-content-sm-end { - justify-content: flex-end !important; } - - .justify-content-sm-center { - justify-content: center !important; } - - .justify-content-sm-between { - justify-content: space-between !important; } - - .justify-content-sm-around { - justify-content: space-around !important; } - - .align-items-sm-start { - align-items: flex-start !important; } - - .align-items-sm-end { - align-items: flex-end !important; } - - .align-items-sm-center { - align-items: center !important; } - - .align-items-sm-baseline { - align-items: baseline !important; } - - .align-items-sm-stretch { - align-items: stretch !important; } - - .align-content-sm-start { - align-content: flex-start !important; } - - .align-content-sm-end { - align-content: flex-end !important; } - - .align-content-sm-center { - align-content: center !important; } - - .align-content-sm-between { - align-content: space-between !important; } - - .align-content-sm-around { - align-content: space-around !important; } - - .align-content-sm-stretch { - align-content: stretch !important; } - - .align-self-sm-auto { - align-self: auto !important; } - - .align-self-sm-start { - align-self: flex-start !important; } - - .align-self-sm-end { - align-self: flex-end !important; } - - .align-self-sm-center { - align-self: center !important; } - - .align-self-sm-baseline { - align-self: baseline !important; } - - .align-self-sm-stretch { - align-self: stretch !important; } } -@media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; } - - .flex-md-column { - flex-direction: column !important; } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; } - - .flex-md-wrap { - flex-wrap: wrap !important; } - - .flex-md-nowrap { - flex-wrap: nowrap !important; } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-md-fill { - flex: 1 1 auto !important; } - - .flex-md-grow-0 { - flex-grow: 0 !important; } - - .flex-md-grow-1 { - flex-grow: 1 !important; } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-md-start { - justify-content: flex-start !important; } - - .justify-content-md-end { - justify-content: flex-end !important; } - - .justify-content-md-center { - justify-content: center !important; } - - .justify-content-md-between { - justify-content: space-between !important; } - - .justify-content-md-around { - justify-content: space-around !important; } - - .align-items-md-start { - align-items: flex-start !important; } - - .align-items-md-end { - align-items: flex-end !important; } - - .align-items-md-center { - align-items: center !important; } - - .align-items-md-baseline { - align-items: baseline !important; } - - .align-items-md-stretch { - align-items: stretch !important; } - - .align-content-md-start { - align-content: flex-start !important; } - - .align-content-md-end { - align-content: flex-end !important; } - - .align-content-md-center { - align-content: center !important; } - - .align-content-md-between { - align-content: space-between !important; } - - .align-content-md-around { - align-content: space-around !important; } - - .align-content-md-stretch { - align-content: stretch !important; } - - .align-self-md-auto { - align-self: auto !important; } - - .align-self-md-start { - align-self: flex-start !important; } - - .align-self-md-end { - align-self: flex-end !important; } - - .align-self-md-center { - align-self: center !important; } - - .align-self-md-baseline { - align-self: baseline !important; } - - .align-self-md-stretch { - align-self: stretch !important; } } -@media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; } - - .flex-lg-column { - flex-direction: column !important; } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; } - - .flex-lg-wrap { - flex-wrap: wrap !important; } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-lg-fill { - flex: 1 1 auto !important; } - - .flex-lg-grow-0 { - flex-grow: 0 !important; } - - .flex-lg-grow-1 { - flex-grow: 1 !important; } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-lg-start { - justify-content: flex-start !important; } - - .justify-content-lg-end { - justify-content: flex-end !important; } - - .justify-content-lg-center { - justify-content: center !important; } - - .justify-content-lg-between { - justify-content: space-between !important; } - - .justify-content-lg-around { - justify-content: space-around !important; } - - .align-items-lg-start { - align-items: flex-start !important; } - - .align-items-lg-end { - align-items: flex-end !important; } - - .align-items-lg-center { - align-items: center !important; } - - .align-items-lg-baseline { - align-items: baseline !important; } - - .align-items-lg-stretch { - align-items: stretch !important; } - - .align-content-lg-start { - align-content: flex-start !important; } - - .align-content-lg-end { - align-content: flex-end !important; } - - .align-content-lg-center { - align-content: center !important; } - - .align-content-lg-between { - align-content: space-between !important; } - - .align-content-lg-around { - align-content: space-around !important; } - - .align-content-lg-stretch { - align-content: stretch !important; } - - .align-self-lg-auto { - align-self: auto !important; } - - .align-self-lg-start { - align-self: flex-start !important; } - - .align-self-lg-end { - align-self: flex-end !important; } - - .align-self-lg-center { - align-self: center !important; } - - .align-self-lg-baseline { - align-self: baseline !important; } - - .align-self-lg-stretch { - align-self: stretch !important; } } -@media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; } - - .flex-xl-column { - flex-direction: column !important; } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; } - - .flex-xl-wrap { - flex-wrap: wrap !important; } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-xl-fill { - flex: 1 1 auto !important; } - - .flex-xl-grow-0 { - flex-grow: 0 !important; } - - .flex-xl-grow-1 { - flex-grow: 1 !important; } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-xl-start { - justify-content: flex-start !important; } - - .justify-content-xl-end { - justify-content: flex-end !important; } - - .justify-content-xl-center { - justify-content: center !important; } - - .justify-content-xl-between { - justify-content: space-between !important; } - - .justify-content-xl-around { - justify-content: space-around !important; } - - .align-items-xl-start { - align-items: flex-start !important; } - - .align-items-xl-end { - align-items: flex-end !important; } - - .align-items-xl-center { - align-items: center !important; } - - .align-items-xl-baseline { - align-items: baseline !important; } - - .align-items-xl-stretch { - align-items: stretch !important; } - - .align-content-xl-start { - align-content: flex-start !important; } - - .align-content-xl-end { - align-content: flex-end !important; } - - .align-content-xl-center { - align-content: center !important; } - - .align-content-xl-between { - align-content: space-between !important; } - - .align-content-xl-around { - align-content: space-around !important; } - - .align-content-xl-stretch { - align-content: stretch !important; } - - .align-self-xl-auto { - align-self: auto !important; } - - .align-self-xl-start { - align-self: flex-start !important; } - - .align-self-xl-end { - align-self: flex-end !important; } - - .align-self-xl-center { - align-self: center !important; } - - .align-self-xl-baseline { - align-self: baseline !important; } - - .align-self-xl-stretch { - align-self: stretch !important; } } -.float-left { - float: left !important; } - -.float-right { - float: right !important; } - -.float-none { - float: none !important; } - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; } - - .float-sm-right { - float: right !important; } - - .float-sm-none { - float: none !important; } } -@media (min-width: 768px) { - .float-md-left { - float: left !important; } - - .float-md-right { - float: right !important; } - - .float-md-none { - float: none !important; } } -@media (min-width: 992px) { - .float-lg-left { - float: left !important; } - - .float-lg-right { - float: right !important; } - - .float-lg-none { - float: none !important; } } -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; } - - .float-xl-right { - float: right !important; } - - .float-xl-none { - float: none !important; } } -.overflow-auto { - overflow: auto !important; } - -.overflow-hidden { - overflow: hidden !important; } - -.position-static { - position: static !important; } - -.position-relative { - position: relative !important; } - -.position-absolute { - position: absolute !important; } - -.position-fixed { - position: fixed !important; } - -.position-sticky { - position: sticky !important; } - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; } } - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; } - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; } - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } - -.shadow-none { - box-shadow: none !important; } - -.w-25 { - width: 25% !important; } - -.w-50 { - width: 50% !important; } - -.w-75 { - width: 75% !important; } - -.w-100 { - width: 100% !important; } - -.w-auto { - width: auto !important; } - -.h-25 { - height: 25% !important; } - -.h-50 { - height: 50% !important; } - -.h-75 { - height: 75% !important; } - -.h-100 { - height: 100% !important; } - -.h-auto { - height: auto !important; } - -.mw-100 { - max-width: 100% !important; } - -.mh-100 { - max-height: 100% !important; } - -.min-vw-100 { - min-width: 100vw !important; } - -.min-vh-100 { - min-height: 100vh !important; } - -.vw-100 { - width: 100vw !important; } - -.vh-100 { - height: 100vh !important; } - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); } - -.m-0 { - margin: 0 !important; } - -.mt-0, -.my-0 { - margin-top: 0 !important; } - -.mr-0, -.mx-0 { - margin-right: 0 !important; } - -.mb-0, -.my-0 { - margin-bottom: 0 !important; } - -.ml-0, -.mx-0 { - margin-left: 0 !important; } - -.m-1 { - margin: 0.25rem !important; } - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; } - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; } - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; } - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; } - -.m-2 { - margin: 0.5rem !important; } - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; } - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; } - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; } - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; } - -.m-3 { - margin: 1rem !important; } - -.mt-3, -.my-3 { - margin-top: 1rem !important; } - -.mr-3, -.mx-3 { - margin-right: 1rem !important; } - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; } - -.ml-3, -.mx-3 { - margin-left: 1rem !important; } - -.m-4 { - margin: 1.5rem !important; } - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; } - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; } - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; } - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; } - -.m-5 { - margin: 3rem !important; } - -.mt-5, -.my-5 { - margin-top: 3rem !important; } - -.mr-5, -.mx-5 { - margin-right: 3rem !important; } - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; } - -.ml-5, -.mx-5 { - margin-left: 3rem !important; } - -.p-0 { - padding: 0 !important; } - -.pt-0, -.py-0 { - padding-top: 0 !important; } - -.pr-0, -.px-0 { - padding-right: 0 !important; } - -.pb-0, -.py-0 { - padding-bottom: 0 !important; } - -.pl-0, -.px-0 { - padding-left: 0 !important; } - -.p-1 { - padding: 0.25rem !important; } - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; } - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; } - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; } - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; } - -.p-2 { - padding: 0.5rem !important; } - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; } - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; } - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; } - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; } - -.p-3 { - padding: 1rem !important; } - -.pt-3, -.py-3 { - padding-top: 1rem !important; } - -.pr-3, -.px-3 { - padding-right: 1rem !important; } - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; } - -.pl-3, -.px-3 { - padding-left: 1rem !important; } - -.p-4 { - padding: 1.5rem !important; } - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; } - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; } - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; } - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; } - -.p-5 { - padding: 3rem !important; } - -.pt-5, -.py-5 { - padding-top: 3rem !important; } - -.pr-5, -.px-5 { - padding-right: 3rem !important; } - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; } - -.pl-5, -.px-5 { - padding-left: 3rem !important; } - -.m-n1 { - margin: -0.25rem !important; } - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; } - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; } - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; } - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; } - -.m-n2 { - margin: -0.5rem !important; } - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; } - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; } - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; } - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; } - -.m-n3 { - margin: -1rem !important; } - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; } - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; } - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; } - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; } - -.m-n4 { - margin: -1.5rem !important; } - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; } - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; } - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; } - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; } - -.m-n5 { - margin: -3rem !important; } - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; } - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; } - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; } - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; } - -.m-auto { - margin: auto !important; } - -.mt-auto, -.my-auto { - margin-top: auto !important; } - -.mr-auto, -.mx-auto { - margin-right: auto !important; } - -.mb-auto, -.my-auto { - margin-bottom: auto !important; } - -.ml-auto, -.mx-auto { - margin-left: auto !important; } - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; } - - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; } - - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; } - - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; } - - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; } - - .m-sm-1 { - margin: 0.25rem !important; } - - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; } - - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; } - - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; } - - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; } - - .m-sm-2 { - margin: 0.5rem !important; } - - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; } - - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; } - - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; } - - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; } - - .m-sm-3 { - margin: 1rem !important; } - - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; } - - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; } - - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; } - - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; } - - .m-sm-4 { - margin: 1.5rem !important; } - - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; } - - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; } - - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; } - - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; } - - .m-sm-5 { - margin: 3rem !important; } - - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; } - - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; } - - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; } - - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; } - - .p-sm-0 { - padding: 0 !important; } - - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; } - - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; } - - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; } - - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; } - - .p-sm-1 { - padding: 0.25rem !important; } - - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; } - - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; } - - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; } - - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; } - - .p-sm-2 { - padding: 0.5rem !important; } - - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; } - - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; } - - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; } - - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; } - - .p-sm-3 { - padding: 1rem !important; } - - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; } - - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; } - - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; } - - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; } - - .p-sm-4 { - padding: 1.5rem !important; } - - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; } - - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; } - - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; } - - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; } - - .p-sm-5 { - padding: 3rem !important; } - - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; } - - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; } - - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; } - - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; } - - .m-sm-n1 { - margin: -0.25rem !important; } - - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important; } - - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important; } - - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important; } - - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important; } - - .m-sm-n2 { - margin: -0.5rem !important; } - - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important; } - - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important; } - - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important; } - - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important; } - - .m-sm-n3 { - margin: -1rem !important; } - - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important; } - - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important; } - - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important; } - - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important; } - - .m-sm-n4 { - margin: -1.5rem !important; } - - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important; } - - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important; } - - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important; } - - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important; } - - .m-sm-n5 { - margin: -3rem !important; } - - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important; } - - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important; } - - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important; } - - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important; } - - .m-sm-auto { - margin: auto !important; } - - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; } - - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; } - - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; } - - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; } } -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; } - - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; } - - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; } - - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; } - - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; } - - .m-md-1 { - margin: 0.25rem !important; } - - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; } - - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; } - - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; } - - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; } - - .m-md-2 { - margin: 0.5rem !important; } - - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; } - - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; } - - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; } - - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; } - - .m-md-3 { - margin: 1rem !important; } - - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; } - - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; } - - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; } - - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; } - - .m-md-4 { - margin: 1.5rem !important; } - - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; } - - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; } - - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; } - - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; } - - .m-md-5 { - margin: 3rem !important; } - - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; } - - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; } - - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; } - - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; } - - .p-md-0 { - padding: 0 !important; } - - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; } - - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; } - - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; } - - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; } - - .p-md-1 { - padding: 0.25rem !important; } - - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; } - - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; } - - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; } - - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; } - - .p-md-2 { - padding: 0.5rem !important; } - - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; } - - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; } - - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; } - - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; } - - .p-md-3 { - padding: 1rem !important; } - - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; } - - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; } - - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; } - - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; } - - .p-md-4 { - padding: 1.5rem !important; } - - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; } - - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; } - - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; } - - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; } - - .p-md-5 { - padding: 3rem !important; } - - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; } - - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; } - - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; } - - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; } - - .m-md-n1 { - margin: -0.25rem !important; } - - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important; } - - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important; } - - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important; } - - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important; } - - .m-md-n2 { - margin: -0.5rem !important; } - - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important; } - - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important; } - - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important; } - - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important; } - - .m-md-n3 { - margin: -1rem !important; } - - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important; } - - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important; } - - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important; } - - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important; } - - .m-md-n4 { - margin: -1.5rem !important; } - - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important; } - - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important; } - - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important; } - - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important; } - - .m-md-n5 { - margin: -3rem !important; } - - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important; } - - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important; } - - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important; } - - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important; } - - .m-md-auto { - margin: auto !important; } - - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; } - - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; } - - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; } - - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; } } -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; } - - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; } - - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; } - - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; } - - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; } - - .m-lg-1 { - margin: 0.25rem !important; } - - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; } - - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; } - - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; } - - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; } - - .m-lg-2 { - margin: 0.5rem !important; } - - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; } - - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; } - - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; } - - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; } - - .m-lg-3 { - margin: 1rem !important; } - - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; } - - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; } - - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; } - - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; } - - .m-lg-4 { - margin: 1.5rem !important; } - - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; } - - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; } - - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; } - - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; } - - .m-lg-5 { - margin: 3rem !important; } - - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; } - - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; } - - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; } - - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; } - - .p-lg-0 { - padding: 0 !important; } - - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; } - - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; } - - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; } - - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; } - - .p-lg-1 { - padding: 0.25rem !important; } - - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; } - - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; } - - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; } - - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; } - - .p-lg-2 { - padding: 0.5rem !important; } - - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; } - - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; } - - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; } - - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; } - - .p-lg-3 { - padding: 1rem !important; } - - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; } - - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; } - - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; } - - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; } - - .p-lg-4 { - padding: 1.5rem !important; } - - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; } - - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; } - - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; } - - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; } - - .p-lg-5 { - padding: 3rem !important; } - - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; } - - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; } - - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; } - - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; } - - .m-lg-n1 { - margin: -0.25rem !important; } - - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important; } - - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important; } - - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important; } - - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important; } - - .m-lg-n2 { - margin: -0.5rem !important; } - - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important; } - - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important; } - - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important; } - - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important; } - - .m-lg-n3 { - margin: -1rem !important; } - - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important; } - - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important; } - - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important; } - - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important; } - - .m-lg-n4 { - margin: -1.5rem !important; } - - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important; } - - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important; } - - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important; } - - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important; } - - .m-lg-n5 { - margin: -3rem !important; } - - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important; } - - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important; } - - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important; } - - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important; } - - .m-lg-auto { - margin: auto !important; } - - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; } - - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; } - - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; } - - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; } } -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; } - - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; } - - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; } - - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; } - - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; } - - .m-xl-1 { - margin: 0.25rem !important; } - - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; } - - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; } - - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; } - - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; } - - .m-xl-2 { - margin: 0.5rem !important; } - - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; } - - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; } - - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; } - - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; } - - .m-xl-3 { - margin: 1rem !important; } - - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; } - - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; } - - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; } - - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; } - - .m-xl-4 { - margin: 1.5rem !important; } - - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; } - - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; } - - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; } - - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; } - - .m-xl-5 { - margin: 3rem !important; } - - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; } - - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; } - - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; } - - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; } - - .p-xl-0 { - padding: 0 !important; } - - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; } - - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; } - - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; } - - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; } - - .p-xl-1 { - padding: 0.25rem !important; } - - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; } - - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; } - - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; } - - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; } - - .p-xl-2 { - padding: 0.5rem !important; } - - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; } - - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; } - - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; } - - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; } - - .p-xl-3 { - padding: 1rem !important; } - - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; } - - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; } - - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; } - - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; } - - .p-xl-4 { - padding: 1.5rem !important; } - - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; } - - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; } - - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; } - - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; } - - .p-xl-5 { - padding: 3rem !important; } - - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; } - - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; } - - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; } - - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; } - - .m-xl-n1 { - margin: -0.25rem !important; } - - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important; } - - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important; } - - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important; } - - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important; } - - .m-xl-n2 { - margin: -0.5rem !important; } - - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important; } - - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important; } - - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important; } - - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important; } - - .m-xl-n3 { - margin: -1rem !important; } - - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important; } - - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important; } - - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important; } - - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important; } - - .m-xl-n4 { - margin: -1.5rem !important; } - - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important; } - - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important; } - - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important; } - - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important; } - - .m-xl-n5 { - margin: -3rem !important; } - - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important; } - - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important; } - - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important; } - - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important; } - - .m-xl-auto { - margin: auto !important; } - - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; } - - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; } - - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; } - - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; } } -.text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } - -.text-justify { - text-align: justify !important; } - -.text-wrap { - white-space: normal !important; } - -.text-nowrap { - white-space: nowrap !important; } - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; } - - .text-sm-right { - text-align: right !important; } - - .text-sm-center { - text-align: center !important; } } -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; } - - .text-md-right { - text-align: right !important; } - - .text-md-center { - text-align: center !important; } } -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; } - - .text-lg-right { - text-align: right !important; } - - .text-lg-center { - text-align: center !important; } } -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; } - - .text-xl-right { - text-align: right !important; } - - .text-xl-center { - text-align: center !important; } } -.text-lowercase { - text-transform: lowercase !important; } - -.text-uppercase { - text-transform: uppercase !important; } - -.text-capitalize { - text-transform: capitalize !important; } - -.font-weight-light { - font-weight: 300 !important; } - -.font-weight-lighter { - font-weight: lighter !important; } - -.font-weight-normal { - font-weight: 400 !important; } - -.font-weight-bold { - font-weight: 700 !important; } - -.font-weight-bolder { - font-weight: bolder !important; } - -.font-italic { - font-style: italic !important; } - -.text-white { - color: #fff !important; } - -.text-primary { - color: #3A9ABF !important; } - -a.text-primary:hover, a.text-primary:focus { - color: #286b84 !important; } - -.text-secondary { - color: #6C757D !important; } - -a.text-secondary:hover, a.text-secondary:focus { - color: #494f54 !important; } - -.text-success { - color: #75CC39 !important; } - -a.text-success:hover, a.text-success:focus { - color: #529326 !important; } - -.text-info { - color: #17a2b8 !important; } - -a.text-info:hover, a.text-info:focus { - color: #0f6674 !important; } - -.text-warning { - color: #FDC02E !important; } - -a.text-warning:hover, a.text-warning:focus { - color: #dc9c02 !important; } - -.text-danger { - color: #D93749 !important; } - -a.text-danger:hover, a.text-danger:focus { - color: #a41f2e !important; } - -.text-light { - color: #f8f9fa !important; } - -a.text-light:hover, a.text-light:focus { - color: #cbd3da !important; } - -.text-dark { - color: #343a40 !important; } - -a.text-dark:hover, a.text-dark:focus { - color: #121416 !important; } - -.text-body { - color: #212529 !important; } - -.text-muted { - color: #6c757d !important; } - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; } - -.text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; } - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; } - -.text-decoration-none { - text-decoration: none !important; } - -.text-break { - word-break: break-word !important; - overflow-wrap: break-word !important; } - -.text-reset { - color: inherit !important; } - -.visible { - visibility: visible !important; } - -.invisible { - visibility: hidden !important; } - -@media print { - *, - *::before, - *::after { - text-shadow: none !important; - box-shadow: none !important; } - - a:not(.btn) { - text-decoration: underline; } - - abbr[title]::after { - content: " (" attr(title) ")"; } - - pre { - white-space: pre-wrap !important; } - - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid; } - - thead { - display: table-header-group; } - - tr, - img { - page-break-inside: avoid; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - @page { - size: a3; } - body { - min-width: 992px !important; } - - .container { - min-width: 992px !important; } - - .navbar { - display: none; } - - .badge { - border: 1px solid #000; } - - .table { - border-collapse: collapse !important; } - .table td, - .table th { - background-color: #fff !important; } - - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important; } - - .table-dark { - color: inherit; } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #dee2e6; } - - .table .thead-dark th { - color: inherit; - border-color: #dee2e6; } } -/* Custom Styles */ -.list-group-item { - border: none; - padding: 0 0 0 .5rem; } - -.card-header, .card-body { - padding: 0.25rem; } - -.accordion > .card .card-header { - margin-bottom: 0; } - -.list-group-item:first-child { - border-radius: 0; } - -.table th, .table td { - padding: 0.25rem; } - -code { - color: black !important; } - -/*# sourceMappingURL=main.css.map */ - - - - - - - - - -
    - - -
    - -
    - -
    - - v@build.version@+@build.number@ -
    -
    - -
    - -
    - - Run All Tests - - - -
    -
    -
    - - - - - -
    - - -
    -
    -

    Test Results Stats (1,213 ms)

    -
    -
    - Bundles:3 - Suites:3 - Specs:13 -
    - - -
    - - BoxLang - 1.0.0-snapshot+2143 - -
    -
    -
    - -
    - - Pass: 9 - - - Failures: 0 - - - Errors: 0 - - - Skipped: 4 - - - Reset - -
    -
    - - -
    - - - - - - - -
    - - - -
    - - - - - - -
    - - - -
    - - - - - - -
    - - -
    -
    - -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - +√ Passed    - Skipped    !! Exception/Error    X Failure \ No newline at end of file diff --git a/bx/tests/results/visualizer/test-results.json b/bx/tests/results/visualizer/test-results.json index aba32e3..068a73b 100644 --- a/bx/tests/results/visualizer/test-results.json +++ b/bx/tests/results/visualizer/test-results.json @@ -1,6 +1,6 @@ { - "totalDuration" : 1392, - "endTime" : 1726170362550, + "totalDuration" : 1042, + "endTime" : 1726235339751, "coverage" : { "data" : { }, "enabled" : false @@ -14,21 +14,21 @@ "CFMLEngine" : "BoxLang", "bundleStats" : [ { "path" : "tests.specs.BDDTest", - "totalDuration" : 665, - "endTime" : 1726170362320, + "totalDuration" : 432, + "endTime" : 1726235339485, "totalPass" : 4, "debugBuffer" : [ ], "totalSkipped" : 2, "globalException" : "", - "id" : "53cd5a1b6250181e24237c11368f34bd", + "id" : "b799f4665a2be26cfd1cfd90f837ab8d", "totalSpecs" : 6, "suiteStats" : [ { - "totalDuration" : 638, - "endTime" : 1726170362312, + "totalDuration" : 395, + "endTime" : 1726235339475, "totalPass" : 4, "specStats" : [ { - "totalDuration" : 146, - "endTime" : 1726170361831, + "totalDuration" : 213, + "endTime" : 1726235339307, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -43,11 +43,11 @@ "failDetail" : "", "name" : "can test for equality", "failStacktrace" : "", - "startTime" : 1726170361685, + "startTime" : 1726235339094, "failOrigin" : { } }, { - "totalDuration" : 54, - "endTime" : 1726170361891, + "totalDuration" : 56, + "endTime" : 1726235339372, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -62,11 +62,11 @@ "failDetail" : "", "name" : "can have more than one expectation to test", "failStacktrace" : "", - "startTime" : 1726170361837, + "startTime" : 1726235339316, "failOrigin" : { } }, { - "totalDuration" : 307, - "endTime" : 1726170362199, + "totalDuration" : 71, + "endTime" : 1726235339445, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -81,11 +81,11 @@ "failDetail" : "", "name" : "can have negative expectations", "failStacktrace" : "", - "startTime" : 1726170361892, + "startTime" : 1726235339374, "failOrigin" : { } }, { - "totalDuration" : 9, - "endTime" : 1726170362212, + "totalDuration" : 2, + "endTime" : 1726235339449, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -100,11 +100,11 @@ "failDetail" : "", "name" : "can have tests that can be skipped easily like this one by prefixing it with x", "failStacktrace" : "", - "startTime" : 1726170362203, + "startTime" : 1726235339447, "failOrigin" : { } }, { - "totalDuration" : 5, - "endTime" : 1726170362219, + "totalDuration" : 2, + "endTime" : 1726235339453, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -119,11 +119,11 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Windows Only)", "failStacktrace" : "", - "startTime" : 1726170362214, + "startTime" : 1726235339451, "failOrigin" : { } }, { - "totalDuration" : 83, - "endTime" : 1726170362310, + "totalDuration" : 21, + "endTime" : 1726235339474, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -138,43 +138,43 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Mac Only)", "failStacktrace" : "", - "startTime" : 1726170362227, + "startTime" : 1726235339453, "failOrigin" : { } } ], "status" : "Passed", "totalSkipped" : 2, "id" : "601a1895b68b67f4d9a549cd363dcd29", "totalSpecs" : 6, - "bundleID" : "53cd5a1b6250181e24237c11368f34bd", + "bundleID" : "b799f4665a2be26cfd1cfd90f837ab8d", "suiteStats" : [ ], "name" : "A spec", - "startTime" : 1726170361674, + "startTime" : 1726235339080, "parentID" : "", "totalFail" : 0, "totalError" : 0 } ], "name" : "tests.specs.BDDTest", - "startTime" : 1726170361655, + "startTime" : 1726235339053, "totalFail" : 0, "totalError" : 0, "totalSuites" : 1 }, { "path" : "tests.specs.BDDTest", - "totalDuration" : 77, - "endTime" : 1726170362465, + "totalDuration" : 119, + "endTime" : 1726235339653, "totalPass" : 4, "debugBuffer" : [ ], "totalSkipped" : 2, "globalException" : "", - "id" : "c9f321129970f11c598a6ed3549dd794", + "id" : "795931bf6ec5608abf3dbbc702e09009", "totalSpecs" : 6, "suiteStats" : [ { - "totalDuration" : 70, - "endTime" : 1726170362463, + "totalDuration" : 98, + "endTime" : 1726235339639, "totalPass" : 4, "specStats" : [ { - "totalDuration" : 12, - "endTime" : 1726170362406, + "totalDuration" : 14, + "endTime" : 1726235339556, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -189,11 +189,11 @@ "failDetail" : "", "name" : "can test for equality", "failStacktrace" : "", - "startTime" : 1726170362394, + "startTime" : 1726235339542, "failOrigin" : { } }, { - "totalDuration" : 14, - "endTime" : 1726170362423, + "totalDuration" : 23, + "endTime" : 1726235339583, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -208,11 +208,11 @@ "failDetail" : "", "name" : "can have more than one expectation to test", "failStacktrace" : "", - "startTime" : 1726170362409, + "startTime" : 1726235339560, "failOrigin" : { } }, { - "totalDuration" : 23, - "endTime" : 1726170362449, + "totalDuration" : 31, + "endTime" : 1726235339620, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -227,11 +227,11 @@ "failDetail" : "", "name" : "can have negative expectations", "failStacktrace" : "", - "startTime" : 1726170362426, + "startTime" : 1726235339589, "failOrigin" : { } }, { "totalDuration" : 1, - "endTime" : 1726170362452, + "endTime" : 1726235339622, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -246,11 +246,11 @@ "failDetail" : "", "name" : "can have tests that can be skipped easily like this one by prefixing it with x", "failStacktrace" : "", - "startTime" : 1726170362451, + "startTime" : 1726235339621, "failOrigin" : { } }, { "totalDuration" : 1, - "endTime" : 1726170362454, + "endTime" : 1726235339623, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -265,11 +265,11 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Windows Only)", "failStacktrace" : "", - "startTime" : 1726170362453, + "startTime" : 1726235339622, "failOrigin" : { } }, { - "totalDuration" : 7, - "endTime" : 1726170362461, + "totalDuration" : 9, + "endTime" : 1726235339636, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -284,43 +284,43 @@ "failDetail" : "", "name" : "can have tests that execute if the right environment exists (Mac Only)", "failStacktrace" : "", - "startTime" : 1726170362454, + "startTime" : 1726235339627, "failOrigin" : { } } ], "status" : "Passed", "totalSkipped" : 2, "id" : "601a1895b68b67f4d9a549cd363dcd29", "totalSpecs" : 6, - "bundleID" : "c9f321129970f11c598a6ed3549dd794", + "bundleID" : "795931bf6ec5608abf3dbbc702e09009", "suiteStats" : [ ], "name" : "A spec", - "startTime" : 1726170362393, + "startTime" : 1726235339541, "parentID" : "", "totalFail" : 0, "totalError" : 0 } ], "name" : "tests.specs.BDDTest", - "startTime" : 1726170362388, + "startTime" : 1726235339534, "totalFail" : 0, "totalError" : 0, "totalSuites" : 1 }, { "path" : "tests.specs.MyFirstSpec", - "totalDuration" : 19, - "endTime" : 1726170362548, + "totalDuration" : 24, + "endTime" : 1726235339749, "totalPass" : 1, "debugBuffer" : [ ], "totalSkipped" : 0, "globalException" : "", - "id" : "ccbba9fede132cb2e9989b5f01873fde", + "id" : "01e5328ef6518b74826d2be98313cce7", "totalSpecs" : 1, "suiteStats" : [ { - "totalDuration" : 11, - "endTime" : 1726170362547, + "totalDuration" : 16, + "endTime" : 1726235339748, "totalPass" : 1, "specStats" : [ { - "totalDuration" : 9, - "endTime" : 1726170362546, + "totalDuration" : 14, + "endTime" : 1726235339747, "failMessage" : "", "focused" : false, "debugBuffer" : [ ], @@ -335,35 +335,35 @@ "failDetail" : "", "name" : "it can add", "failStacktrace" : "", - "startTime" : 1726170362537, + "startTime" : 1726235339733, "failOrigin" : { } } ], "status" : "Passed", "totalSkipped" : 0, "id" : "05b76e295da5568e4679dd79bbea52db", "totalSpecs" : 1, - "bundleID" : "ccbba9fede132cb2e9989b5f01873fde", + "bundleID" : "01e5328ef6518b74826d2be98313cce7", "suiteStats" : [ ], "name" : "My First Test", - "startTime" : 1726170362536, + "startTime" : 1726235339732, "parentID" : "", "totalFail" : 0, "totalError" : 0 } ], "name" : "tests.specs.MyFirstSpec", - "startTime" : 1726170362529, + "startTime" : 1726235339725, "totalFail" : 0, "totalError" : 0, "totalSuites" : 1 } ], "totalBundles" : 3, - "startTime" : 1726170361158, + "startTime" : 1726235338709, "totalFail" : 0, "totalError" : 0, "version" : "@build.version@", "totalSuites" : 3, "CFMLEngineVersion" : "1.0.0-snapshot+2143" -}testbox/system/TestBox.cfc:251)", +}estbox/system/TestBox.cfc:251)", "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", "column": 0, "line": 251, diff --git a/system/runners/BoxLangRunner.bx b/system/runners/BoxLangRunner.bx new file mode 100644 index 0000000..f2e86bd --- /dev/null +++ b/system/runners/BoxLangRunner.bx @@ -0,0 +1,313 @@ +/** + * TestBox Runner for BoxLang + * This script will run TestBox tests from the command line using the BoxLang CLI + * + * Examples: + * - `./testbox/bin/run` + * - `./testbox/bin/run my.bundle` + * - `./testbox/bin/run --directory=tests.specs` + * - `./testbox/bin/run --bundles=my.bundle` + * + * Windows Examples: + * - `./testbox/bin/run.bat` + * - `./testbox/bin/run.bat my.bundle` + * - `./testbox/bin/run.bat --directory=tests.specs` + * - `./testbox/bin/run.bat --bundles=my.bundle` + * + * Options: + * --bundles: A list of test bundles to run, defaults to `*`, ex: `path.to.bundle1,path.to.bundle2`, . Mutually exclusive with `--directory` + * --bundles-pattern: A pattern to match test bundles, defaults to `"*Spec*.cfc|*Test*.cfc|*Spec*.bx|*Test*.bx"` + * --directory : A list of directories to look for tests to execute. Please use dot-notation not absolute notation. + * Mutually exclusive with `--bundles`. Ex: `tests.specs`. Defaults to `tests.specs` + * --reporter : The reporter to use. + * --labels : A list of labels to run, defaults to `*` + * --excludes : A list of labels to exclude, defaults to empty + * --recurse : Recurse into subdirectories, defaults to `true` + * --filter-bundles : A list of bundles to filter by, defaults to `*` + * --filter-suites : A list of suites to filter by, defaults to `*` + * --filter-specs : A list of test names or spec names to filter by, defaults to `*` + * --eager-failure : Fail fast, defaults to `false` + * --runner-options: A JSON struct literal of options to pass into the test runner. Ex: `{"verbose"=true}` + * --verbose : Verbose output, defaults to `false`. This will stream the output of the status of the tests as they run. + * --properties-summary : Generate a properties file with the summary of the test results, defaults to `true`. + * --properties-filename : The name of the properties file to generate, defaults to `TEST.properties` + * If true, it will write them to the report path. + * --reportpath : The path to write the report file to, defaults to the `/tests/results` folder by convention + * --write-report : Write the report to a file in the report path folder, defaults to `true` + * --write-json-report : Write the report as JSON alongside the requested report, defaults to `false` + * --write-visualizer : Write the visualizer to a file in the report path folder, defaults to `false` + */ +class{ + + // Defaults + static final DEFAULT_TEST_DIRECTORY = "tests.specs" + static final DEFAULT_REPORTER = "text" + static final DEFAULT_PROPERTIES_FILENAME = "TEST.properties" + static final DEFAULT_PROPERTIES_SUMMARY = true + + /** + * The main method to run the TestBox tests + */ + function main( args=[] ){ + // CLI Incoming variables + var rootPath = server.cli.executionPath + var options = server.cli.parsed.options + var positional = server.cli.parsed.positionals + var defaultReportPath = rootPath & "/tests/results" + + // Gather the test arguments from the options + var initArgs = { + bundles = options[ "bundles" ] ?: [], + directory = { + mapping : options[ "directory" ] ?: "", + recurse : options[ "recurse" ] ?: true + }, + reporter = options[ "reporter" ] ?: static.DEFAULT_REPORTER, + labels = options[ "labels" ] ?: "", + excludes = options[ "excludes" ] ?: "", + options = options[ "runner-options" ] ?: {}, + bundlesPattern = options[ "bundles-pattern" ] ?: "" + }; + + // Deserialize the JSON options + if( isSimpleValue( initArgs.options ) && initArgs.options.len() ) { + initArgs.options = jsonDeserialize( initArgs.options ); + } + + // Prepare the run arguments + var runArgs = { + testBundles = options[ "filter-bundles" ] ?: [], + testSuites = options[ "filter-suites" ] ?: [], + testSpecs = options[ "filter-specs" ] ?: [], + eagerFailure = options[ "eager-failure" ] ?: false, + verbose = options[ "verbose" ] ?: false + }; + + // Prepare the after run arguments + var afterRunArgs = { + propertiesSummary = options[ "properties-summary" ] ?: static.DEFAULT_PROPERTIES_SUMMARY, + propertiesFilename = options[ "properties-filename" ] ?: static.DEFAULT_PROPERTIES_FILENAME, + reportPath = options[ "reportpath" ] ?: defaultReportPath, + writeReport = options[ "write-report" ] ?: true, + writeVisualizer = options[ "write-visualizer" ] ?: false, + writeJsonReport = options[ "write-json-report" ] ?: false + }; + + // Verbose Listeners + if( runArgs.verbose ){ + runArgs.callbacks = { + onBundleStart = ( target, testResults ) => { + println( "> Testing Bundle: #target.$bx.meta.name#" ) + }, + onBundleEnd = ( target, testResults ) => { + println( "> Bundle Completed: [#target.$bx.meta.name#]" ) + println( "" ); + }, + onSuiteStart = ( target, testResults, suite ) => { + println( "+ Starting Suite: #suite.name#" ) + }, + onSuiteEnd = ( target, testResults, suite ) => { + //println( "+ Suite [#suite.name#] completed #suite.toString()#" ) + }, + onSpecStart = ( target, testResults, suite, spec ) => { + println( "+ Starting Spec/Test: #spec.name#" ) + }, + onSpecEnd = ( target, testResults, suite, spec ) => { + // println( "+ Spec [#spec.name#] completed #spec.toString()#" ) + }, + } + } + + // If we have a positional argument, then we will assume it is a test bundle: Ex: `run my.bundle` + if( positional.len() ) { + initArgs.bundles = positional[ 1 ]; + } + + // If we don't have test-bundles or test-directory, then default to the DEFAULT_TEST_DIRECTORY + if( !initArgs.bundles.len() && !initArgs.directory.mapping.len() ) { + initArgs.directory = static.DEFAULT_TEST_DIRECTORY; + } + + if( runArgs.verbose ){ + startTime = getTickCount(); + println( "Starting TestBox Runner with the following init arguments" ); + println( initArgs ); + } + var testbox = new testbox.system.TestBox( argumentCollection = initArgs ) + if( runArgs.verbose ){ + println( "TestBox Runner started in #getTickCount() - startTime# ms" ); + println( "Running your tests with the following run arguments" ); + println( runArgs ); + } else{ + println( "Running your tests..." ) + } + + // RUN BABY RUN + println( "" ) + var report = testbox.run( argumentCollection = runArgs ) + var testResults = testbox.getResult() + var testResultsAsJson = jsonSerialize( testResults.getMemento( includeDebugBuffer = true ) ) + println( report ) + + // PREPARE RESULTS FOR REPORTING + if( !directoryExists( afterRunArgs.reportPath ) ){ + directoryCreate( afterRunArgs.reportPath ); + } else { + directoryDelete( afterRunArgs.reportPath, true ); + directoryCreate( afterRunArgs.reportPath ); + } + + // WRITE THE REPORTS + if( afterRunArgs.writeReport ){ + generateReports( report, testResultsAsJson, initArgs, afterRunArgs ); + } + // WRITE THE VISUALIZER + if( afterRunArgs.writeVisualizer ){ + generateVisualizer( testResultsAsJson, afterRunArgs ); + } + // WRITE THE SUMMARIES + if( afterRunArgs.propertiesSummary ) { + generatePropertiesSummary( testResults, initArgs, afterRunArgs ); + } + // WRITE THE ANT JUNIT REPORTS + if( initArgs.reporter eq "ANTJunit" ){ + generateAntReports( report, afterRunArgs ); + } + } + + /** + * Generate the reports based on the after run arguments + * + * @report The report to write + * @testResults The test results + * @afterRunArgs The after run arguments + */ + private function generateReports( + required report, + required testResults, + required initArgs, + required afterRunArgs + ){ + // REPORTING TIME + fileWrite( + afterRunArgs.reportPath & "/latestrun.log", + "Tests ran at #dateTimeFormat( now(), 'medium' )#" + ) + + // WRITE THE REPORT + var reportFile = afterRunArgs.reportPath & "/report." + switch( initArgs.reporter ){ + case "min": case "simple" : + reportFile &= "html"; + break; + case "json": + reportFile &= "json"; + break; + case "xml": case "ANTJunit": + reportFile &= "xml"; + break; + default: + reportFile &= "txt"; + } + fileWrite( + reportFile, + report + ) + + // WRITE THE JSON REPORT IF NEEDED + if( afterRunArgs.writeJsonReport ){ + fileWrite( + afterRunArgs.reportPath & "/report.json", + testResults + ) + } + } + + /** + * Generate the visualizer for the test results + * + * @testResults The test results + * @afterRunArgs The after run arguments + */ + private function generateVisualizer( required testResults, required afterRunArgs ){ + directoryCopy( + expandPath( "/testbox/test-visualizer" ), + afterRunArgs.reportPath & "/visualizer" + ) + fileWrite( + afterRunArgs.reportPath & "/visualizer/test-results.json", + testResults + ) + } + + /** + * Generate a properties file with the summary of the test results + * + * @testResults The test results + * @initArgs The init arguments + * @afterRunArgs The after run arguments + */ + private function generatePropertiesSummary( required testResults, required initArgs, required afterRunArgs ){ + var errors = testResults.getTotalFail() + testResults.getTotalError(); + var propertiesReport = "## TestBox Summary Report +test.datetime=#now().toISOString()# +test.#errors ? 'failed' : 'passed'#=true +test.labels=#escapePropertyValue( arrayToList( testResults.getLabels() ) )# +test.excludes=#escapePropertyValue( arrayToList( testResults.getExcludes() ) )# +test.bundles=#escapePropertyValue( initArgs.bundles )# +test.directory=#escapePropertyValue( initArgs.directory.mapping )# +total.bundles=#escapePropertyValue( testResults.getTotalBundles() )# +total.suites=#escapePropertyValue( testResults.getTotalSuites() )# +total.specs=#escapePropertyValue( testResults.getTotalSpecs() )# +total.pass=#escapePropertyValue( testResults.getTotalPass() )# +total.fail=#escapePropertyValue( testResults.getTotalFail() )# +total.error=#escapePropertyValue( testResults.getTotalError() )# +total.skipped=#escapePropertyValue( testResults.getTotalSkipped() )#"; + + if( !trim( lcase( afterRunArgs.propertiesfilename ) ).endsWith( '.properties' ) ) { + afterRunArgs.propertiesfilename &= '.properties'; + } + + fileWrite( + afterRunArgs.reportPath & "/" & afterRunArgs.propertiesFilename, + propertiesReport + ) + } + + /** + * Generate individual JUnit reports for each suite + * + * @report The report to parse + * @afterRunArgs The after run arguments + */ + private function generateAntReports( required report, required afterRunArgs ){ + // Produce individual test files due to how ANT JUnit report parses these. + var xmlReport = xmlParse( report ); + for( var thisSuite in xmlReport.testsuites.XMLChildren ){ + fileWrite( afterRunArgs.reportpath & "/TEST-" & thisSuite.XMLAttributes.package & ".xml", toString( thisSuite ) ); + } + } + + + /** + * Escape a property value + * + * @value The value to escape + * + * @return The escaped value + */ + private function escapePropertyValue( required string value ) { + if ( len( arguments.value ) == 0 ) { + return arguments.value; + } + local.value = replaceNoCase( arguments.value, '\', '\\', 'all' ); + value = replaceNoCase( value, char(13), '\r', 'all' ); + value = replaceNoCase( value, char(10), '\n', 'all' ); + value = replaceNoCase( value, char(9), '\t', 'all' ); + value = replaceNoCase( value, char(60), '\u003c', 'all' ); + value = replaceNoCase( value, char(62), '\u003e', 'all' ); + value = replaceNoCase( value, char(47), '\u002f', 'all' ); + + return replaceNoCase( value, char(32), '\u0020', 'all' ); + } +} diff --git a/tests/specs/coverage/CoverageReporterTest.cfc b/tests/specs/coverage/CoverageReporterTest.cfc index cc07980..3f1da73 100644 --- a/tests/specs/coverage/CoverageReporterTest.cfc +++ b/tests/specs/coverage/CoverageReporterTest.cfc @@ -4,18 +4,6 @@ component extends="testbox.system.BaseSpec" { function run(){ - // TODO: This is a temporary fix for a bug in the BoxLang query engine - // https://ortussolutions.atlassian.net/browse/BL-535 - if ( isBoxLang() ) { - describe( - title: "Skipped in BoxLang due to query issue", - body : () => { - }, - skip: true - ); - return; - } - describe( "CoverageReporter", function(){ it( "can init", function(){ expect( new system.coverage.CoverageReporter() ).toBeComponent(); From 8e38e5f88173d3e015075b1374a63252c22d3ac2 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Tue, 17 Sep 2024 16:15:16 +0200 Subject: [PATCH 63/73] fixing more boxlang runner issues --- bin/run | 2 +- bx/tests/results/TEST.properties | 12 +- bx/tests/results/latestrun.log | 2 +- bx/tests/results/report.json | 366 - bx/tests/results/report.txt | 37 +- bx/tests/results/visualizer/index.html | 556 -- bx/tests/results/visualizer/main.css | 7615 ----------------- bx/tests/results/visualizer/test-results.json | 1781 ---- system/runners/BoxLangRunner.bx | 22 +- 9 files changed, 29 insertions(+), 10364 deletions(-) delete mode 100644 bx/tests/results/report.json delete mode 100644 bx/tests/results/visualizer/index.html delete mode 100644 bx/tests/results/visualizer/main.css delete mode 100644 bx/tests/results/visualizer/test-results.json diff --git a/bin/run b/bin/run index 97d05fe..1120089 100755 --- a/bin/run +++ b/bin/run @@ -1,4 +1,4 @@ #!/usr/bin/env boxlang -# Go baby go! +// Go baby go! new testbox.system.runners.BoxLangRunner().main(); diff --git a/bx/tests/results/TEST.properties b/bx/tests/results/TEST.properties index 88be3dc..5d7be53 100644 --- a/bx/tests/results/TEST.properties +++ b/bx/tests/results/TEST.properties @@ -1,14 +1,14 @@ # TestBox Summary Report -test.datetime=2024-09-13T15:48:59.940097+02:00 +test.datetime=2024-09-17T16:15:11.746743+02:00 test.passed=true test.labels= test.excludes= test.bundles=tests.specs.BDDTest test.directory= -total.bundles=3 -total.suites=3 -total.specs=13 -total.pass=9 +total.bundles=1 +total.suites=1 +total.specs=6 +total.pass=4 total.fail=0 total.error=0 -total.skipped=4 \ No newline at end of file +total.skipped=2 \ No newline at end of file diff --git a/bx/tests/results/latestrun.log b/bx/tests/results/latestrun.log index 4827484..70a50a2 100644 --- a/bx/tests/results/latestrun.log +++ b/bx/tests/results/latestrun.log @@ -1 +1 @@ -Tests ran at Sep 13, 2024, 3:48:59 PM \ No newline at end of file +Tests ran at Sep 17, 2024, 4:15:11 PM \ No newline at end of file diff --git a/bx/tests/results/report.json b/bx/tests/results/report.json deleted file mode 100644 index ce225cf..0000000 --- a/bx/tests/results/report.json +++ /dev/null @@ -1,366 +0,0 @@ -{ - "totalDuration" : 1042, - "endTime" : 1726235339751, - "coverage" : { - "data" : { }, - "enabled" : false - }, - "totalPass" : 9, - "totalSkipped" : 4, - "excludes" : [ ], - "resultID" : "", - "labels" : [ ], - "totalSpecs" : 13, - "CFMLEngine" : "BoxLang", - "bundleStats" : [ { - "path" : "tests.specs.BDDTest", - "totalDuration" : 432, - "endTime" : 1726235339485, - "totalPass" : 4, - "debugBuffer" : [ ], - "totalSkipped" : 2, - "globalException" : "", - "id" : "b799f4665a2be26cfd1cfd90f837ab8d", - "totalSpecs" : 6, - "suiteStats" : [ { - "totalDuration" : 395, - "endTime" : 1726235339475, - "totalPass" : 4, - "specStats" : [ { - "totalDuration" : 213, - "endTime" : 1726235339307, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "c4604d3b7e2f512c5c9ac1a03144223a", - "labels" : [ ], - "displayName" : "can test for equality", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can test for equality", - "failStacktrace" : "", - "startTime" : 1726235339094, - "failOrigin" : { } - }, { - "totalDuration" : 56, - "endTime" : 1726235339372, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "02cec20c140811c9e93c78bdf65928d5", - "labels" : [ ], - "displayName" : "can have more than one expectation to test", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have more than one expectation to test", - "failStacktrace" : "", - "startTime" : 1726235339316, - "failOrigin" : { } - }, { - "totalDuration" : 71, - "endTime" : 1726235339445, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "5415016e3254f610b333428c94708af0", - "labels" : [ ], - "displayName" : "can have negative expectations", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have negative expectations", - "failStacktrace" : "", - "startTime" : 1726235339374, - "failOrigin" : { } - }, { - "totalDuration" : 2, - "endTime" : 1726235339449, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "867c21692e98bfb08dd1265c0d89f50e", - "labels" : [ ], - "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failStacktrace" : "", - "startTime" : 1726235339447, - "failOrigin" : { } - }, { - "totalDuration" : 2, - "endTime" : 1726235339453, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "4f30c954a9638b92118103d04facaaed", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Windows Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Windows Only)", - "failStacktrace" : "", - "startTime" : 1726235339451, - "failOrigin" : { } - }, { - "totalDuration" : 21, - "endTime" : 1726235339474, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Mac Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Mac Only)", - "failStacktrace" : "", - "startTime" : 1726235339453, - "failOrigin" : { } - } ], - "status" : "Passed", - "totalSkipped" : 2, - "id" : "601a1895b68b67f4d9a549cd363dcd29", - "totalSpecs" : 6, - "bundleID" : "b799f4665a2be26cfd1cfd90f837ab8d", - "suiteStats" : [ ], - "name" : "A spec", - "startTime" : 1726235339080, - "parentID" : "", - "totalFail" : 0, - "totalError" : 0 - } ], - "name" : "tests.specs.BDDTest", - "startTime" : 1726235339053, - "totalFail" : 0, - "totalError" : 0, - "totalSuites" : 1 - }, { - "path" : "tests.specs.BDDTest", - "totalDuration" : 119, - "endTime" : 1726235339653, - "totalPass" : 4, - "debugBuffer" : [ ], - "totalSkipped" : 2, - "globalException" : "", - "id" : "795931bf6ec5608abf3dbbc702e09009", - "totalSpecs" : 6, - "suiteStats" : [ { - "totalDuration" : 98, - "endTime" : 1726235339639, - "totalPass" : 4, - "specStats" : [ { - "totalDuration" : 14, - "endTime" : 1726235339556, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "c4604d3b7e2f512c5c9ac1a03144223a", - "labels" : [ ], - "displayName" : "can test for equality", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can test for equality", - "failStacktrace" : "", - "startTime" : 1726235339542, - "failOrigin" : { } - }, { - "totalDuration" : 23, - "endTime" : 1726235339583, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "02cec20c140811c9e93c78bdf65928d5", - "labels" : [ ], - "displayName" : "can have more than one expectation to test", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have more than one expectation to test", - "failStacktrace" : "", - "startTime" : 1726235339560, - "failOrigin" : { } - }, { - "totalDuration" : 31, - "endTime" : 1726235339620, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "5415016e3254f610b333428c94708af0", - "labels" : [ ], - "displayName" : "can have negative expectations", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have negative expectations", - "failStacktrace" : "", - "startTime" : 1726235339589, - "failOrigin" : { } - }, { - "totalDuration" : 1, - "endTime" : 1726235339622, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "867c21692e98bfb08dd1265c0d89f50e", - "labels" : [ ], - "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failStacktrace" : "", - "startTime" : 1726235339621, - "failOrigin" : { } - }, { - "totalDuration" : 1, - "endTime" : 1726235339623, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "4f30c954a9638b92118103d04facaaed", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Windows Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Windows Only)", - "failStacktrace" : "", - "startTime" : 1726235339622, - "failOrigin" : { } - }, { - "totalDuration" : 9, - "endTime" : 1726235339636, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Mac Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Mac Only)", - "failStacktrace" : "", - "startTime" : 1726235339627, - "failOrigin" : { } - } ], - "status" : "Passed", - "totalSkipped" : 2, - "id" : "601a1895b68b67f4d9a549cd363dcd29", - "totalSpecs" : 6, - "bundleID" : "795931bf6ec5608abf3dbbc702e09009", - "suiteStats" : [ ], - "name" : "A spec", - "startTime" : 1726235339541, - "parentID" : "", - "totalFail" : 0, - "totalError" : 0 - } ], - "name" : "tests.specs.BDDTest", - "startTime" : 1726235339534, - "totalFail" : 0, - "totalError" : 0, - "totalSuites" : 1 - }, { - "path" : "tests.specs.MyFirstSpec", - "totalDuration" : 24, - "endTime" : 1726235339749, - "totalPass" : 1, - "debugBuffer" : [ ], - "totalSkipped" : 0, - "globalException" : "", - "id" : "01e5328ef6518b74826d2be98313cce7", - "totalSpecs" : 1, - "suiteStats" : [ { - "totalDuration" : 16, - "endTime" : 1726235339748, - "totalPass" : 1, - "specStats" : [ { - "totalDuration" : 14, - "endTime" : 1726235339747, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "7d7576ae118b6259767aab7a2485831c", - "labels" : [ ], - "displayName" : "it can add", - "failExtendedInfo" : "", - "suiteID" : "05b76e295da5568e4679dd79bbea52db", - "failDetail" : "", - "name" : "it can add", - "failStacktrace" : "", - "startTime" : 1726235339733, - "failOrigin" : { } - } ], - "status" : "Passed", - "totalSkipped" : 0, - "id" : "05b76e295da5568e4679dd79bbea52db", - "totalSpecs" : 1, - "bundleID" : "01e5328ef6518b74826d2be98313cce7", - "suiteStats" : [ ], - "name" : "My First Test", - "startTime" : 1726235339732, - "parentID" : "", - "totalFail" : 0, - "totalError" : 0 - } ], - "name" : "tests.specs.MyFirstSpec", - "startTime" : 1726235339725, - "totalFail" : 0, - "totalError" : 0, - "totalSuites" : 1 - } ], - "totalBundles" : 3, - "startTime" : 1726235338709, - "totalFail" : 0, - "totalError" : 0, - "version" : "@build.version@", - "totalSuites" : 3, - "CFMLEngineVersion" : "1.0.0-snapshot+2143" -} \ No newline at end of file diff --git a/bx/tests/results/report.txt b/bx/tests/results/report.txt index c328185..8b8671e 100644 --- a/bx/tests/results/report.txt +++ b/bx/tests/results/report.txt @@ -1,45 +1,26 @@ █▓▒▒░░░ TestBox v@build.version@+@build.number@ ░░░▒▒▓█ _____________________________________________________________   -√tests.specs.BDDTest (432 ms) +√tests.specs.BDDTest (1030 ms) [Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6]   ( √ ) A spec -    ( √ ) can test for equality (213 ms) -    ( √ ) can have more than one expectation to test (56 ms) -    ( √ ) can have negative expectations (71 ms) -    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (2 ms) -    ( - ) can have tests that execute if the right environment exists (Windows Only) (2 ms) -    ( √ ) can have tests that execute if the right environment exists (Mac Only) (21 ms) -_____________________________________________________________ -  -√tests.specs.BDDTest (119 ms) -[Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6] -  -( √ ) A spec -    ( √ ) can test for equality (14 ms) -    ( √ ) can have more than one expectation to test (23 ms) -    ( √ ) can have negative expectations (31 ms) -    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (1 ms) -    ( - ) can have tests that execute if the right environment exists (Windows Only) (1 ms) -    ( √ ) can have tests that execute if the right environment exists (Mac Only) (9 ms) -_____________________________________________________________ -  -√tests.specs.MyFirstSpec (24 ms) -[Passed: 1] [Failed: 0] [Errors: 0] [Skipped: 0] [Suites/Specs: 1/1] -  -( √ ) My First Test -    ( √ ) it can add (14 ms) +    ( √ ) can test for equality (495 ms) +    ( √ ) can have more than one expectation to test (182 ms) +    ( √ ) can have negative expectations (141 ms) +    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (20 ms) +    ( - ) can have tests that execute if the right environment exists (Windows Only) (7 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (54 ms)     ================================================================================= Final Stats =================================================================================   -[Passed: 9] [Failed: 0] [Errors: 0] [Skipped: 4] [Bundles/Suites/Specs: 3/3/13] +[Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Bundles/Suites/Specs: 1/1/6]   TestBox:        v@build.version@+@build.number@ -Duration:       1042 ms +Duration:       1477 ms CFML Engine:    BoxLang 1.0.0-snapshot+2143 Labels:         None   diff --git a/bx/tests/results/visualizer/index.html b/bx/tests/results/visualizer/index.html deleted file mode 100644 index 8de7caf..0000000 --- a/bx/tests/results/visualizer/index.html +++ /dev/null @@ -1,556 +0,0 @@ - - - - - - Test Visualizer - - - - - - - - - - -
    -
    -
    -
    - - v@build.version@+@build.number@ -
    -
    -
    - -
    - - -
    -
    -
    -
    -
    -
    - Loading... -
    -
    -
    -
    -
    -
    -
    -
    -
    - - diff --git a/bx/tests/results/visualizer/main.css b/bx/tests/results/visualizer/main.css deleted file mode 100644 index 310d547..0000000 --- a/bx/tests/results/visualizer/main.css +++ /dev/null @@ -1,7615 +0,0 @@ -/* Overriden Styles */ -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -:root { - --blue: #007bff; - --indigo: #6610f2; - --purple: #6f42c1; - --pink: #e83e8c; - --red: #dc3545; - --orange: #fd7e14; - --yellow: #ffc107; - --green: #28a745; - --teal: #20c997; - --cyan: #17a2b8; - --white: #fff; - --gray: #6c757d; - --gray-dark: #343a40; - --primary: #3A9ABF; - --secondary: #6C757D; - --success: #75CC39; - --info: #17a2b8; - --warning: #FDC02E; - --danger: #D93749; - --light: #f8f9fa; - --dark: #343a40; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } - -*, -*::before, -*::after { - box-sizing: border-box; } - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - -article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { - display: block; } - -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-size: .80rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: left; - background-color: #fff; } - -[tabindex="-1"]:focus { - outline: 0 !important; } - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; } - -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 0; } - -p { - margin-top: 0; - margin-bottom: 1rem; } - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; } - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; } - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; } - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; } - -dt { - font-weight: 700; } - -dd { - margin-bottom: .5rem; - margin-left: 0; } - -blockquote { - margin: 0 0 1rem; } - -b, -strong { - font-weight: bolder; } - -small { - font-size: 80%; } - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; } - -sub { - bottom: -.25em; } - -sup { - top: -.5em; } - -a { - color: #3A9ABF; - text-decoration: none; - background-color: transparent; } - a:hover { - color: #286b84; - text-decoration: underline; } - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):focus { - outline: 0; } - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; } - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; } - -figure { - margin: 0 0 1rem; } - -img { - vertical-align: middle; - border-style: none; } - -svg { - overflow: hidden; - vertical-align: middle; } - -table { - border-collapse: collapse; } - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #6c757d; - text-align: left; - caption-side: bottom; } - -th { - text-align: inherit; } - -label { - display: inline-block; - margin-bottom: 0.5rem; } - -button { - border-radius: 0; } - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; } - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -button, -input { - overflow: visible; } - -button, -select { - text-transform: none; } - -select { - word-wrap: normal; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - -button:not(:disabled), -[type="button"]:not(:disabled), -[type="reset"]:not(:disabled), -[type="submit"]:not(:disabled) { - cursor: pointer; } - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - padding: 0; - border-style: none; } - -input[type="radio"], -input[type="checkbox"] { - box-sizing: border-box; - padding: 0; } - -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - -webkit-appearance: listbox; } - -textarea { - overflow: auto; - resize: vertical; } - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; } - -progress { - vertical-align: baseline; } - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; } - -[type="search"] { - outline-offset: -2px; - -webkit-appearance: none; } - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; } - -output { - display: inline-block; } - -summary { - display: list-item; - cursor: pointer; } - -template { - display: none; } - -[hidden] { - display: none !important; } - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0; - font-weight: 500; - line-height: 1.2; } - -h1, .h1 { - font-size: 2rem; } - -h2, .h2 { - font-size: 1.5rem; } - -h3, .h3 { - font-size: 1.25rem; } - -h4, .h4 { - font-size: 1rem; } - -h5, .h5 { - font-size: .85rem; } - -h6, .h6 { - font-size: .5rem; } - -.lead { - font-size: 1.25rem; - font-weight: 300; } - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; } - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; } - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; } - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; } - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); } - -small, -.small { - font-size: 80%; - font-weight: 400; } - -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; } - -.list-unstyled { - padding-left: 0; - list-style: none; } - -.list-inline { - padding-left: 0; - list-style: none; } - -.list-inline-item { - display: inline-block; } - .list-inline-item:not(:last-child) { - margin-right: 0.5rem; } - -.initialism { - font-size: 90%; - text-transform: uppercase; } - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; } - -.blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d; } - .blockquote-footer::before { - content: "\2014\00A0"; } - -.img-fluid { - max-width: 100%; - height: auto; } - -.img-thumbnail { - padding: 0.25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - max-width: 100%; - height: auto; } - -.figure { - display: inline-block; } - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; } - -.figure-caption { - font-size: 90%; - color: #6c757d; } - -code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; } - a > code { - color: inherit; } - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; } - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; } - -pre { - display: block; - font-size: 87.5%; - color: #212529; } - pre code { - font-size: inherit; - color: inherit; - word-break: normal; } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - @media (min-width: 576px) { - .container { - max-width: 540px; } } - @media (min-width: 768px) { - .container { - max-width: 720px; } } - @media (min-width: 992px) { - .container { - max-width: 960px; } } - @media (min-width: 1200px) { - .container { - max-width: 1140px; } } - -.container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - -.row { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; } - -.no-gutters { - margin-right: 0; - margin-left: 0; } - .no-gutters > .col, - .no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; } - -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, -.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, -.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, -.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, -.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, -.col-xl-auto { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; } - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - -.col-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - -.col-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - -.col-3 { - flex: 0 0 25%; - max-width: 25%; } - -.col-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - -.col-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - -.col-6 { - flex: 0 0 50%; - max-width: 50%; } - -.col-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - -.col-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - -.col-9 { - flex: 0 0 75%; - max-width: 75%; } - -.col-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - -.col-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - -.col-12 { - flex: 0 0 100%; - max-width: 100%; } - -.order-first { - order: -1; } - -.order-last { - order: 13; } - -.order-0 { - order: 0; } - -.order-1 { - order: 1; } - -.order-2 { - order: 2; } - -.order-3 { - order: 3; } - -.order-4 { - order: 4; } - -.order-5 { - order: 5; } - -.order-6 { - order: 6; } - -.order-7 { - order: 7; } - -.order-8 { - order: 8; } - -.order-9 { - order: 9; } - -.order-10 { - order: 10; } - -.order-11 { - order: 11; } - -.order-12 { - order: 12; } - -.offset-1 { - margin-left: 8.3333333333%; } - -.offset-2 { - margin-left: 16.6666666667%; } - -.offset-3 { - margin-left: 25%; } - -.offset-4 { - margin-left: 33.3333333333%; } - -.offset-5 { - margin-left: 41.6666666667%; } - -.offset-6 { - margin-left: 50%; } - -.offset-7 { - margin-left: 58.3333333333%; } - -.offset-8 { - margin-left: 66.6666666667%; } - -.offset-9 { - margin-left: 75%; } - -.offset-10 { - margin-left: 83.3333333333%; } - -.offset-11 { - margin-left: 91.6666666667%; } - -@media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-sm-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-sm-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-sm-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-sm-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-sm-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-sm-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-sm-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-sm-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-sm-first { - order: -1; } - - .order-sm-last { - order: 13; } - - .order-sm-0 { - order: 0; } - - .order-sm-1 { - order: 1; } - - .order-sm-2 { - order: 2; } - - .order-sm-3 { - order: 3; } - - .order-sm-4 { - order: 4; } - - .order-sm-5 { - order: 5; } - - .order-sm-6 { - order: 6; } - - .order-sm-7 { - order: 7; } - - .order-sm-8 { - order: 8; } - - .order-sm-9 { - order: 9; } - - .order-sm-10 { - order: 10; } - - .order-sm-11 { - order: 11; } - - .order-sm-12 { - order: 12; } - - .offset-sm-0 { - margin-left: 0; } - - .offset-sm-1 { - margin-left: 8.3333333333%; } - - .offset-sm-2 { - margin-left: 16.6666666667%; } - - .offset-sm-3 { - margin-left: 25%; } - - .offset-sm-4 { - margin-left: 33.3333333333%; } - - .offset-sm-5 { - margin-left: 41.6666666667%; } - - .offset-sm-6 { - margin-left: 50%; } - - .offset-sm-7 { - margin-left: 58.3333333333%; } - - .offset-sm-8 { - margin-left: 66.6666666667%; } - - .offset-sm-9 { - margin-left: 75%; } - - .offset-sm-10 { - margin-left: 83.3333333333%; } - - .offset-sm-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-md-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-md-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-md-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-md-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-md-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-md-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-md-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-md-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-md-first { - order: -1; } - - .order-md-last { - order: 13; } - - .order-md-0 { - order: 0; } - - .order-md-1 { - order: 1; } - - .order-md-2 { - order: 2; } - - .order-md-3 { - order: 3; } - - .order-md-4 { - order: 4; } - - .order-md-5 { - order: 5; } - - .order-md-6 { - order: 6; } - - .order-md-7 { - order: 7; } - - .order-md-8 { - order: 8; } - - .order-md-9 { - order: 9; } - - .order-md-10 { - order: 10; } - - .order-md-11 { - order: 11; } - - .order-md-12 { - order: 12; } - - .offset-md-0 { - margin-left: 0; } - - .offset-md-1 { - margin-left: 8.3333333333%; } - - .offset-md-2 { - margin-left: 16.6666666667%; } - - .offset-md-3 { - margin-left: 25%; } - - .offset-md-4 { - margin-left: 33.3333333333%; } - - .offset-md-5 { - margin-left: 41.6666666667%; } - - .offset-md-6 { - margin-left: 50%; } - - .offset-md-7 { - margin-left: 58.3333333333%; } - - .offset-md-8 { - margin-left: 66.6666666667%; } - - .offset-md-9 { - margin-left: 75%; } - - .offset-md-10 { - margin-left: 83.3333333333%; } - - .offset-md-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-lg-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-lg-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-lg-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-lg-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-lg-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-lg-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-lg-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-lg-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-lg-first { - order: -1; } - - .order-lg-last { - order: 13; } - - .order-lg-0 { - order: 0; } - - .order-lg-1 { - order: 1; } - - .order-lg-2 { - order: 2; } - - .order-lg-3 { - order: 3; } - - .order-lg-4 { - order: 4; } - - .order-lg-5 { - order: 5; } - - .order-lg-6 { - order: 6; } - - .order-lg-7 { - order: 7; } - - .order-lg-8 { - order: 8; } - - .order-lg-9 { - order: 9; } - - .order-lg-10 { - order: 10; } - - .order-lg-11 { - order: 11; } - - .order-lg-12 { - order: 12; } - - .offset-lg-0 { - margin-left: 0; } - - .offset-lg-1 { - margin-left: 8.3333333333%; } - - .offset-lg-2 { - margin-left: 16.6666666667%; } - - .offset-lg-3 { - margin-left: 25%; } - - .offset-lg-4 { - margin-left: 33.3333333333%; } - - .offset-lg-5 { - margin-left: 41.6666666667%; } - - .offset-lg-6 { - margin-left: 50%; } - - .offset-lg-7 { - margin-left: 58.3333333333%; } - - .offset-lg-8 { - margin-left: 66.6666666667%; } - - .offset-lg-9 { - margin-left: 75%; } - - .offset-lg-10 { - margin-left: 83.3333333333%; } - - .offset-lg-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-xl-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-xl-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-xl-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-xl-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-xl-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-xl-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-xl-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-xl-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-xl-first { - order: -1; } - - .order-xl-last { - order: 13; } - - .order-xl-0 { - order: 0; } - - .order-xl-1 { - order: 1; } - - .order-xl-2 { - order: 2; } - - .order-xl-3 { - order: 3; } - - .order-xl-4 { - order: 4; } - - .order-xl-5 { - order: 5; } - - .order-xl-6 { - order: 6; } - - .order-xl-7 { - order: 7; } - - .order-xl-8 { - order: 8; } - - .order-xl-9 { - order: 9; } - - .order-xl-10 { - order: 10; } - - .order-xl-11 { - order: 11; } - - .order-xl-12 { - order: 12; } - - .offset-xl-0 { - margin-left: 0; } - - .offset-xl-1 { - margin-left: 8.3333333333%; } - - .offset-xl-2 { - margin-left: 16.6666666667%; } - - .offset-xl-3 { - margin-left: 25%; } - - .offset-xl-4 { - margin-left: 33.3333333333%; } - - .offset-xl-5 { - margin-left: 41.6666666667%; } - - .offset-xl-6 { - margin-left: 50%; } - - .offset-xl-7 { - margin-left: 58.3333333333%; } - - .offset-xl-8 { - margin-left: 66.6666666667%; } - - .offset-xl-9 { - margin-left: 75%; } - - .offset-xl-10 { - margin-left: 83.3333333333%; } - - .offset-xl-11 { - margin-left: 91.6666666667%; } } -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529; } - .table th, - .table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; } - .table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; } - .table tbody + tbody { - border-top: 2px solid #dee2e6; } - -.table-sm th, -.table-sm td { - padding: 0.3rem; } - -.table-bordered { - border: 1px solid #dee2e6; } - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6; } - .table-bordered thead th, - .table-bordered thead td { - border-bottom-width: 2px; } - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; } - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); } - -.table-hover tbody tr:hover { - color: #212529; - background-color: rgba(0, 0, 0, 0.075); } - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #c8e3ed; } -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #99cade; } - -.table-hover .table-primary:hover { - background-color: #b5d9e7; } - .table-hover .table-primary:hover > td, - .table-hover .table-primary:hover > th { - background-color: #b5d9e7; } - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #d6d8db; } -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #b3b7bb; } - -.table-hover .table-secondary:hover { - background-color: #c8cbcf; } - .table-hover .table-secondary:hover > td, - .table-hover .table-secondary:hover > th { - background-color: #c8cbcf; } - -.table-success, -.table-success > th, -.table-success > td { - background-color: #d8f1c8; } -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #b7e498; } - -.table-hover .table-success:hover { - background-color: #caecb4; } - .table-hover .table-success:hover > td, - .table-hover .table-success:hover > th { - background-color: #caecb4; } - -.table-info, -.table-info > th, -.table-info > td { - background-color: #bee5eb; } -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #86cfda; } - -.table-hover .table-info:hover { - background-color: #abdde5; } - .table-hover .table-info:hover > td, - .table-hover .table-info:hover > th { - background-color: #abdde5; } - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #feedc4; } -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #fede92; } - -.table-hover .table-warning:hover { - background-color: #fee5ab; } - .table-hover .table-warning:hover > td, - .table-hover .table-warning:hover > th { - background-color: #fee5ab; } - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f4c7cc; } -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #eb97a0; } - -.table-hover .table-danger:hover { - background-color: #f0b2b9; } - .table-hover .table-danger:hover > td, - .table-hover .table-danger:hover > th { - background-color: #f0b2b9; } - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; } -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #fbfcfc; } - -.table-hover .table-light:hover { - background-color: #ececf6; } - .table-hover .table-light:hover > td, - .table-hover .table-light:hover > th { - background-color: #ececf6; } - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c6c8ca; } -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #95999c; } - -.table-hover .table-dark:hover { - background-color: #b9bbbe; } - .table-hover .table-dark:hover > td, - .table-hover .table-dark:hover > th { - background-color: #b9bbbe; } - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); } - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); } - .table-hover .table-active:hover > td, - .table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); } - -.table .thead-dark th { - color: #fff; - background-color: #343a40; - border-color: #454d55; } -.table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6; } - -.table-dark { - color: #fff; - background-color: #343a40; } - .table-dark th, - .table-dark td, - .table-dark thead th { - border-color: #454d55; } - .table-dark.table-bordered { - border: 0; } - .table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); } - .table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, 0.075); } - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-sm > .table-bordered { - border: 0; } } -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-md > .table-bordered { - border: 0; } } -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-lg > .table-bordered { - border: 0; } } -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-xl > .table-bordered { - border: 0; } } -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered { - border: 0; } - -.form-control { - display: block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; } } - .form-control::-ms-expand { - background-color: transparent; - border: 0; } - .form-control:focus { - color: #495057; - background-color: #fff; - border-color: #99cce0; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .form-control::placeholder { - color: #6c757d; - opacity: 1; } - .form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; } - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff; } - -.form-control-file, -.form-control-range { - display: block; - width: 100%; } - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; } - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; } - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; } - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; } - .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; } - -.form-control-sm { - height: calc(1.5em + 0.5rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.form-control-lg { - height: calc(1.5em + 1rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -select.form-control[size], select.form-control[multiple] { - height: auto; } - -textarea.form-control { - height: auto; } - -.form-group { - margin-bottom: 1rem; } - -.form-text { - display: block; - margin-top: 0.25rem; } - -.form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; } - .form-row > .col, - .form-row > [class*="col-"] { - padding-right: 5px; - padding-left: 5px; } - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; } - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; } - .form-check-input:disabled ~ .form-check-label { - color: #6c757d; } - -.form-check-label { - margin-bottom: 0; } - -.form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; } - .form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; } - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #75CC39; } - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #212529; - background-color: rgba(117, 204, 57, 0.9); - border-radius: 0.25rem; } - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #75CC39; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .form-control:valid ~ .valid-feedback, - .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, - .form-control.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #75CC39; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2375CC39' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - .was-validated .custom-select:valid ~ .valid-feedback, - .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, - .custom-select.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #75CC39; } -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #75CC39; } - .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #75CC39; } -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; } -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #91d662; - background-color: #91d662; } -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #75CC39; } - -.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #75CC39; } -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; } -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #75CC39; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.25); } - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #D93749; } - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(217, 55, 73, 0.9); - border-radius: 0.25rem; } - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #D93749; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .form-control:invalid ~ .invalid-feedback, - .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, - .form-control.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #D93749; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D93749' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23D93749' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - .was-validated .custom-select:invalid ~ .invalid-feedback, - .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, - .custom-select.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #D93749; } -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #D93749; } - .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #D93749; } -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; } -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #e16270; - background-color: #e16270; } -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #D93749; } - -.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #D93749; } -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; } -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #D93749; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.25); } - -.form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; } - .form-inline .form-check { - width: 100%; } - @media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; } - .form-inline .form-control-plaintext { - display: inline-block; } - .form-inline .input-group, - .form-inline .custom-select { - width: auto; } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; } - .form-inline .form-check-input { - position: relative; - flex-shrink: 0; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; } - .form-inline .custom-control { - align-items: center; - justify-content: center; } - .form-inline .custom-control-label { - margin-bottom: 0; } } - -.btn { - cursor: pointer; - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .btn { - transition: none; } } - .btn:hover { - color: #212529; - text-decoration: none; } - .btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .btn.disabled, .btn:disabled { - opacity: 0.65; } - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; } - -.btn-primary { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-primary:hover { - color: #fff; - background-color: #3182a2; - border-color: #2e7a98; } - .btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } - .btn-primary.disabled, .btn-primary:disabled { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #2e7a98; - border-color: #2b738e; } - .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(88, 169, 201, 0.5); } - -.btn-secondary { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-secondary:hover { - color: #fff; - background-color: #5a6268; - border-color: #545b62; } - .btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - .btn-secondary.disabled, .btn-secondary:disabled { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #545b62; - border-color: #4e555b; } - .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - -.btn-success { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-success:hover { - color: #fff; - background-color: #63b12e; - border-color: #5ea72b; } - .btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } - .btn-success.disabled, .btn-success:disabled { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #5ea72b; - border-color: #589d28; } - .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(104, 179, 55, 0.5); } - -.btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b; } - .btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - .btn-info.disabled, .btn-info:disabled { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { - color: #fff; - background-color: #117a8b; - border-color: #10707f; } - .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - -.btn-warning { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-warning:hover { - color: #212529; - background-color: #fdb508; - border-color: #f6ae02; } - .btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } - .btn-warning.disabled, .btn-warning:disabled { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: #212529; - background-color: #f6ae02; - border-color: #e9a502; } - .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(220, 169, 45, 0.5); } - -.btn-danger { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-danger:hover { - color: #fff; - background-color: #c42537; - border-color: #ba2334; } - .btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } - .btn-danger.disabled, .btn-danger:disabled { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #ba2334; - border-color: #af2131; } - .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(223, 85, 100, 0.5); } - -.btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; } - .btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - .btn-light.disabled, .btn-light:disabled { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df; } - .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124; } - .btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - .btn-dark.disabled, .btn-dark:disabled { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #1d2124; - border-color: #171a1d; } - .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - -.btn-outline-primary { - color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:hover { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - .btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #3A9ABF; - background-color: transparent; } - .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - -.btn-outline-secondary { - color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:hover { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #6C757D; - background-color: transparent; } - .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #6C757D; - border-color: #6C757D; } - .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - -.btn-outline-success { - color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:hover { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - .btn-outline-success.disabled, .btn-outline-success:disabled { - color: #75CC39; - background-color: transparent; } - .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { - color: #212529; - background-color: #75CC39; - border-color: #75CC39; } - .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - -.btn-outline-info { - color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - .btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; } - .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - -.btn-outline-warning { - color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:hover { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - .btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #FDC02E; - background-color: transparent; } - .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #FDC02E; - border-color: #FDC02E; } - .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - -.btn-outline-danger { - color: #D93749; - border-color: #D93749; } - .btn-outline-danger:hover { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - .btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #D93749; - background-color: transparent; } - .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #D93749; - border-color: #D93749; } - .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - .btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; } - .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - -.btn-outline-dark { - color: #343a40; - border-color: #343a40; } - .btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - .btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; } - .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - -.btn-link { - font-weight: 400; - color: #3A9ABF; - text-decoration: none; } - .btn-link:hover { - color: #286b84; - text-decoration: underline; } - .btn-link:focus, .btn-link.focus { - text-decoration: underline; - box-shadow: none; } - .btn-link:disabled, .btn-link.disabled { - color: #6c757d; - pointer-events: none; } - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.75rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.btn-block { - display: block; - width: 100%; } - .btn-block + .btn-block { - margin-top: 0.5rem; } - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; } - -.fade { - transition: opacity 0.15s linear; } - @media (prefers-reduced-motion: reduce) { - .fade { - transition: none; } } - .fade:not(.show) { - opacity: 0; } - -.collapse:not(.show) { - display: none; } - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; } } - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; } - -.dropdown-toggle { - white-space: nowrap; } - .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; } - .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - -.dropdown-menu-left { - right: auto; - left: 0; } - -.dropdown-menu-right { - right: 0; - left: auto; } - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; } - - .dropdown-menu-sm-right { - right: 0; - left: auto; } } -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; } - - .dropdown-menu-md-right { - right: 0; - left: auto; } } -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; } - - .dropdown-menu-lg-right { - right: 0; - left: auto; } } -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; } - - .dropdown-menu-xl-right { - right: 0; - left: auto; } } -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; } -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; } -.dropup .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; } -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; } -.dropright .dropdown-toggle:empty::after { - margin-left: 0; } -.dropright .dropdown-toggle::after { - vertical-align: 0; } - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; } -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; } -.dropleft .dropdown-toggle::after { - display: none; } -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; } -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; } -.dropleft .dropdown-toggle::before { - vertical-align: 0; } - -.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { - right: auto; - bottom: auto; } - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; } - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; } - .dropdown-item:hover, .dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; } - .dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #3A9ABF; } - .dropdown-item.disabled, .dropdown-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: transparent; } - -.dropdown-menu.show { - display: block; } - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; } - -.dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #212529; } - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; } - .btn-group > .btn:hover, - .btn-group-vertical > .btn:hover { - z-index: 1; } - .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, - .btn-group-vertical > .btn:focus, - .btn-group-vertical > .btn:active, - .btn-group-vertical > .btn.active { - z-index: 1; } - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; } -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { - margin-left: 0; } - .dropleft .dropdown-toggle-split::before { - margin-right: 0; } - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; } - .btn-group-vertical > .btn, - .btn-group-vertical > .btn-group { - width: 100%; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; } - .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), - .btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; } - .btn-group-toggle > .btn input[type="radio"], - .btn-group-toggle > .btn input[type="checkbox"], - .btn-group-toggle > .btn-group > .btn input[type="radio"], - .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; } - .input-group > .form-control, - .input-group > .form-control-plaintext, - .input-group > .custom-select, - .input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; } - .input-group > .form-control + .form-control, - .input-group > .form-control + .custom-select, - .input-group > .form-control + .custom-file, - .input-group > .form-control-plaintext + .form-control, - .input-group > .form-control-plaintext + .custom-select, - .input-group > .form-control-plaintext + .custom-file, - .input-group > .custom-select + .form-control, - .input-group > .custom-select + .custom-select, - .input-group > .custom-select + .custom-file, - .input-group > .custom-file + .form-control, - .input-group > .custom-file + .custom-select, - .input-group > .custom-file + .custom-file { - margin-left: -1px; } - .input-group > .form-control:focus, - .input-group > .custom-select:focus, - .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; } - .input-group > .custom-file .custom-file-input:focus { - z-index: 4; } - .input-group > .form-control:not(:last-child), - .input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .form-control:not(:first-child), - .input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .input-group > .custom-file { - display: flex; - align-items: center; } - .input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.input-group-prepend, -.input-group-append { - display: flex; } - .input-group-prepend .btn, - .input-group-append .btn { - position: relative; - z-index: 2; } - .input-group-prepend .btn:focus, - .input-group-append .btn:focus { - z-index: 3; } - .input-group-prepend .btn + .btn, - .input-group-prepend .btn + .input-group-text, - .input-group-prepend .input-group-text + .input-group-text, - .input-group-prepend .input-group-text + .btn, - .input-group-append .btn + .btn, - .input-group-append .btn + .input-group-text, - .input-group-append .input-group-text + .input-group-text, - .input-group-append .input-group-text + .btn { - margin-left: -1px; } - -.input-group-prepend { - margin-right: -1px; } - -.input-group-append { - margin-left: -1px; } - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .input-group-text input[type="radio"], - .input-group-text input[type="checkbox"] { - margin-top: 0; } - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(1.5em + 1rem + 2px); } - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(1.5em + 0.5rem + 2px); } - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; } - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.custom-control { - position: relative; - display: block; - min-height: 1.5rem; - padding-left: 1.5rem; } - -.custom-control-inline { - display: inline-flex; - margin-right: 1rem; } - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; } - .custom-control-input:checked ~ .custom-control-label::before { - color: #fff; - border-color: #3A9ABF; - background-color: #3A9ABF; } - .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #99cce0; } - .custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #fff; - background-color: #c0e0ec; - border-color: #c0e0ec; } - .custom-control-input:disabled ~ .custom-control-label { - color: #6c757d; } - .custom-control-input:disabled ~ .custom-control-label::before { - background-color: #e9ecef; } - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; } - .custom-control-label::before { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #fff; - border: #adb5bd solid 1px; } - .custom-control-label::after { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: no-repeat 50% / 50% 50%; } - -.custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; } -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #3A9ABF; - background-color: #3A9ABF; } -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - -.custom-radio .custom-control-label::before { - border-radius: 50%; } -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - -.custom-switch { - padding-left: 2.25rem; } - .custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; } - .custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; } } - .custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #fff; - transform: translateX(0.75rem); } - .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(58, 154, 191, 0.5); } - -.custom-select { - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; - appearance: none; } - .custom-select:focus { - border-color: #99cce0; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; } - .custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; } - .custom-select:disabled { - color: #6c757d; - background-color: #e9ecef; } - .custom-select::-ms-expand { - display: none; } - -.custom-select-sm { - height: calc(1.5em + 0.5rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; } - -.custom-select-lg { - height: calc(1.5em + 1rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; } - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin-bottom: 0; } - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin: 0; - opacity: 0; } - .custom-file-input:focus ~ .custom-file-label { - border-color: #99cce0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-file-input:disabled ~ .custom-file-label { - background-color: #e9ecef; } - .custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; } - .custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); } - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + 0.75rem); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; } - -.custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - appearance: none; } - .custom-range:focus { - outline: none; } - .custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - .custom-range::-moz-focus-outer { - border: 0; } - .custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; } } - .custom-range::-webkit-slider-thumb:active { - background-color: #c0e0ec; } - .custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; } } - .custom-range::-moz-range-thumb:active { - background-color: #c0e0ec; } - .custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #3A9ABF; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; } } - .custom-range::-ms-thumb:active { - background-color: #c0e0ec; } - .custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; } - .custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; } - .custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-moz-range-track { - cursor: default; } - .custom-range:disabled::-ms-thumb { - background-color: #adb5bd; } - -.custom-control-label::before, -.custom-file-label, -.custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - transition: none; } } - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - -.nav-link { - display: block; - padding: 0.5rem 1rem; } - .nav-link:hover, .nav-link:focus { - text-decoration: none; } - .nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; } - -.nav-tabs { - border-bottom: 1px solid #dee2e6; } - .nav-tabs .nav-item { - margin-bottom: -1px; } - .nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; } - .nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; } - .nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav-pills .nav-link { - border-radius: 0.25rem; } -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #fff; - background-color: #3A9ABF; } - -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; } - -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; } - -.tab-content > .tab-pane { - display: none; } -.tab-content > .active { - display: block; } - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 1rem; } - .navbar > .container, - .navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; } - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; } - .navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; } - -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; } - .navbar-nav .dropdown-menu { - position: static; - float: none; } - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; } - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; } - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; } - .navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; } - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; } - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-sm .navbar-toggler { - display: none; } } -@media (max-width: 767.98px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-md .navbar-toggler { - display: none; } } -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-lg .navbar-toggler { - display: none; } } -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xl .navbar-toggler { - display: none; } } -.navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; } - .navbar-expand .navbar-nav { - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand .navbar-toggler { - display: none; } - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); } -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); } - .navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); } -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); } -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); } -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); } - -.navbar-dark .navbar-brand { - color: #fff; } - .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #fff; } -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); } - .navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); } -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff; } -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); } -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-text a { - color: #fff; } - .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #fff; } - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; } - .card > hr { - margin-right: 0; - margin-left: 0; } - .card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - -.card-body { - flex: 1 1 auto; - padding: 1.25rem; } - -.card-title { - margin-bottom: 0.75rem; } - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; } - -.card-text:last-child { - margin-bottom: 0; } - -.card-link:hover { - text-decoration: none; } -.card-link + .card-link { - margin-left: 1.25rem; } - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); } - .card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } - .card-header + .list-group .list-group-item:first-child { - border-top: 0; } - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); } - .card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; } - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; } - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; } - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); } - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); } - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); } - -.card-deck { - display: flex; - flex-direction: column; } - .card-deck .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; } } - -.card-group { - display: flex; - flex-direction: column; } - .card-group > .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-group { - flex-flow: row wrap; } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; } } - -.card-columns .card { - margin-bottom: 0.75rem; } -@media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; } - .card-columns .card { - display: inline-block; - width: 100%; } } - -.accordion > .card { - overflow: hidden; } - .accordion > .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; } - .accordion > .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; } - .accordion > .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .accordion > .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; } - .accordion > .card .card-header { - margin-bottom: -1px; } - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0.25rem; } - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; } - .breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #6c757d; - content: "/"; } -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; } -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; } -.breadcrumb-item.active { - color: #6c757d; } - -.pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; } - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #3A9ABF; - background-color: #fff; - border: 1px solid #dee2e6; } - .page-link:hover { - z-index: 2; - color: #286b84; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; } - .page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.25); } - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; } -.page-item.active .page-link { - z-index: 1; - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #fff; - border-color: #dee2e6; } - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; } -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; } - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; } -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; } -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; } - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .badge { - transition: none; } } - a.badge:hover, a.badge:focus { - text-decoration: none; } - .badge:empty { - display: none; } - -.btn .badge { - position: relative; - top: -1px; } - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; } - -.badge-primary { - color: #fff; - background-color: #3A9ABF; } - a.badge-primary:hover, a.badge-primary:focus { - color: #fff; - background-color: #2e7a98; } - a.badge-primary:focus, a.badge-primary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(58, 154, 191, 0.5); } - -.badge-secondary { - color: #fff; - background-color: #6C757D; } - a.badge-secondary:hover, a.badge-secondary:focus { - color: #fff; - background-color: #545b62; } - a.badge-secondary:focus, a.badge-secondary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - -.badge-success { - color: #212529; - background-color: #75CC39; } - a.badge-success:hover, a.badge-success:focus { - color: #212529; - background-color: #5ea72b; } - a.badge-success:focus, a.badge-success.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(117, 204, 57, 0.5); } - -.badge-info { - color: #fff; - background-color: #17a2b8; } - a.badge-info:hover, a.badge-info:focus { - color: #fff; - background-color: #117a8b; } - a.badge-info:focus, a.badge-info.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - -.badge-warning { - color: #212529; - background-color: #FDC02E; } - a.badge-warning:hover, a.badge-warning:focus { - color: #212529; - background-color: #f6ae02; } - a.badge-warning:focus, a.badge-warning.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(253, 192, 46, 0.5); } - -.badge-danger { - color: #fff; - background-color: #D93749; } - a.badge-danger:hover, a.badge-danger:focus { - color: #fff; - background-color: #ba2334; } - a.badge-danger:focus, a.badge-danger.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(217, 55, 73, 0.5); } - -.badge-light { - color: #212529; - background-color: #f8f9fa; } - a.badge-light:hover, a.badge-light:focus { - color: #212529; - background-color: #dae0e5; } - a.badge-light:focus, a.badge-light.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - -.badge-dark { - color: #fff; - background-color: #343a40; } - a.badge-dark:hover, a.badge-dark:focus { - color: #fff; - background-color: #1d2124; } - a.badge-dark:focus, a.badge-dark.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; } - @media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; } } - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; } - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; } - -.alert-heading { - color: inherit; } - -.alert-link { - font-weight: 700; } - -.alert-dismissible { - padding-right: 4rem; } - .alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; } - -.alert-primary { - color: #1e5063; - background-color: #d8ebf2; - border-color: #c8e3ed; } - .alert-primary hr { - border-top-color: #b5d9e7; } - .alert-primary .alert-link { - color: #12303c; } - -.alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; } - .alert-secondary hr { - border-top-color: #c8cbcf; } - .alert-secondary .alert-link { - color: #202326; } - -.alert-success { - color: #3d6a1e; - background-color: #e3f5d7; - border-color: #d8f1c8; } - .alert-success hr { - border-top-color: #caecb4; } - .alert-success .alert-link { - color: #264213; } - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; } - .alert-info hr { - border-top-color: #abdde5; } - .alert-info .alert-link { - color: #062c33; } - -.alert-warning { - color: #846418; - background-color: #fff2d5; - border-color: #feedc4; } - .alert-warning hr { - border-top-color: #fee5ab; } - .alert-warning .alert-link { - color: #594310; } - -.alert-danger { - color: #711d26; - background-color: #f7d7db; - border-color: #f4c7cc; } - .alert-danger hr { - border-top-color: #f0b2b9; } - .alert-danger .alert-link { - color: #481318; } - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; } - .alert-light hr { - border-top-color: #ececf6; } - .alert-light .alert-link { - color: #686868; } - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; } - .alert-dark hr { - border-top-color: #b9bbbe; } - .alert-dark .alert-link { - color: #040505; } - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; } - to { - background-position: 0 0; } } -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; } - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #3A9ABF; - transition: width 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; } } - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; } - -.progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; } - @media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; } } - -.media { - display: flex; - align-items: flex-start; } - -.media-body { - flex: 1; } - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; } - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; } - .list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; } - .list-group-item-action:active { - color: #212529; - background-color: #e9ecef; } - -.list-group-item { - position: relative; - display: block; - padding: 0.25rem 0.5rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); } - .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - .list-group-item.disabled, .list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff; } - .list-group-item.active { - z-index: 2; - color: #fff; - background-color: #3A9ABF; - border-color: #3A9ABF; } - -.list-group-horizontal { - flex-direction: row; } - .list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; } - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; } - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; } - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; } - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; } - .list-group-flush .list-group-item:last-child { - margin-bottom: -1px; } -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; } -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; } - -.list-group-item-primary { - color: #1e5063; - background-color: #c8e3ed; } - .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #1e5063; - background-color: #b5d9e7; } - .list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #1e5063; - border-color: #1e5063; } - -.list-group-item-secondary { - color: #383d41; - background-color: #d6d8db; } - .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #383d41; - background-color: #c8cbcf; } - .list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #383d41; - border-color: #383d41; } - -.list-group-item-success { - color: #3d6a1e; - background-color: #d8f1c8; } - .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #3d6a1e; - background-color: #caecb4; } - .list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #3d6a1e; - border-color: #3d6a1e; } - -.list-group-item-info { - color: #0c5460; - background-color: #bee5eb; } - .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #0c5460; - background-color: #abdde5; } - .list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #0c5460; - border-color: #0c5460; } - -.list-group-item-warning { - color: #846418; - background-color: #feedc4; } - .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #846418; - background-color: #fee5ab; } - .list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #846418; - border-color: #846418; } - -.list-group-item-danger { - color: #711d26; - background-color: #f4c7cc; } - .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #711d26; - background-color: #f0b2b9; } - .list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #711d26; - border-color: #711d26; } - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe; } - .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6; } - .list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #818182; - border-color: #818182; } - -.list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca; } - .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #1b1e21; - background-color: #b9bbbe; } - .list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #1b1e21; - border-color: #1b1e21; } - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: .5; } - .close:hover { - color: #000; - text-decoration: none; } - .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: .75; } - -button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; } - -a.close.disabled { - pointer-events: none; } - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; - border-radius: 0.25rem; } - .toast:not(:last-child) { - margin-bottom: 0.75rem; } - .toast.showing { - opacity: 1; } - .toast.show { - display: block; - opacity: 1; } - .toast.hide { - display: none; } - -.toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); } - -.toast-body { - padding: 0.75rem; } - -.modal-open { - overflow: hidden; } - .modal-open .modal { - overflow-x: hidden; - overflow-y: auto; } - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; } - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; } - .modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); } - @media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; } } - .modal.show .modal-dialog { - transform: none; } - -.modal-dialog-scrollable { - display: flex; - max-height: calc(100% - 1rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden; } - .modal-dialog-scrollable .modal-header, - .modal-dialog-scrollable .modal-footer { - flex-shrink: 0; } - .modal-dialog-scrollable .modal-body { - overflow-y: auto; } - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - 1rem); } - .modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: ""; } - .modal-dialog-centered.modal-dialog-scrollable { - flex-direction: column; - justify-content: center; - height: 100%; } - .modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none; } - .modal-dialog-centered.modal-dialog-scrollable::before { - content: none; } - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; } - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; } - .modal-backdrop.fade { - opacity: 0; } - .modal-backdrop.show { - opacity: 0.5; } - -.modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; } - .modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; } - -.modal-title { - margin-bottom: 0; - line-height: 1.5; } - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; } - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } - .modal-footer > :not(:first-child) { - margin-left: .25rem; } - .modal-footer > :not(:last-child) { - margin-right: .25rem; } - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; } - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; } - - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem); } - - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); } - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); } - - .modal-sm { - max-width: 300px; } } -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - max-width: 800px; } } -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; } } -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: 0.9; } - .tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; } - .tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { - padding: 0.4rem 0; } - .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; } - .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; } - -.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { - padding: 0 0.4rem; } - .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; } - -.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { - padding: 0.4rem 0; } - .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; } - .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; } - -.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { - padding: 0 0.4rem; } - .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; } - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; } - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; } - .popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; } - .popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-popover-top, .bs-popover-auto[x-placement^="top"] { - margin-bottom: 0.5rem; } - .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { - bottom: calc((0.5rem + 1px) * -1); } - .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); } - .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #fff; } - -.bs-popover-right, .bs-popover-auto[x-placement^="right"] { - margin-left: 0.5rem; } - .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); } - .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #fff; } - -.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { - margin-top: 0.5rem; } - .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { - top: calc((0.5rem + 1px) * -1); } - .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); } - .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #fff; } - .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; } - -.bs-popover-left, .bs-popover-auto[x-placement^="left"] { - margin-right: 0.5rem; } - .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); } - .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #fff; } - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); } - .popover-header:empty { - display: none; } - -.popover-body { - padding: 0.5rem 0.75rem; - color: #212529; } - -.carousel { - position: relative; } - -.carousel.pointer-event { - touch-action: pan-y; } - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; } - .carousel-inner::after { - display: block; - clear: both; - content: ""; } - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; } } - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; } - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - transform: translateX(100%); } - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - transform: translateX(-100%); } - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; } -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; } -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; } - @media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - transition: none; } } - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; } } - .carousel-control-prev:hover, .carousel-control-prev:focus, - .carousel-control-next:hover, - .carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; } - -.carousel-control-prev { - left: 0; } - -.carousel-control-next { - right: 0; } - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: no-repeat 50% / 100% 100%; } - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; } - .carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: .5; - transition: opacity 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; } } - .carousel-indicators .active { - opacity: 1; } - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; } - -@keyframes spinner-border { - to { - transform: rotate(360deg); } } -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border .75s linear infinite; } - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; } - -@keyframes spinner-grow { - 0% { - transform: scale(0); } - 50% { - opacity: 1; } } -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow .75s linear infinite; } - -.spinner-grow-sm { - width: 1rem; - height: 1rem; } - -.align-baseline { - vertical-align: baseline !important; } - -.align-top { - vertical-align: top !important; } - -.align-middle { - vertical-align: middle !important; } - -.align-bottom { - vertical-align: bottom !important; } - -.align-text-bottom { - vertical-align: text-bottom !important; } - -.align-text-top { - vertical-align: text-top !important; } - -.bg-primary { - background-color: #3A9ABF !important; } - -a.bg-primary:hover, a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #2e7a98 !important; } - -.bg-secondary { - background-color: #6C757D !important; } - -a.bg-secondary:hover, a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #545b62 !important; } - -.bg-success { - background-color: #75CC39 !important; } - -a.bg-success:hover, a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #5ea72b !important; } - -.bg-info { - background-color: #17a2b8 !important; } - -a.bg-info:hover, a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #117a8b !important; } - -.bg-warning { - background-color: #FDC02E !important; } - -a.bg-warning:hover, a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #f6ae02 !important; } - -.bg-danger { - background-color: #D93749 !important; } - -a.bg-danger:hover, a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #ba2334 !important; } - -.bg-light { - background-color: #f8f9fa !important; } - -a.bg-light:hover, a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #dae0e5 !important; } - -.bg-dark { - background-color: #343a40 !important; } - -a.bg-dark:hover, a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #1d2124 !important; } - -.bg-white { - background-color: #fff !important; } - -.bg-transparent { - background-color: transparent !important; } - -.border { - border: 1px solid #dee2e6 !important; } - -.border-top { - border-top: 1px solid #dee2e6 !important; } - -.border-right { - border-right: 1px solid #dee2e6 !important; } - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important; } - -.border-left { - border-left: 1px solid #dee2e6 !important; } - -.border-0 { - border: 0 !important; } - -.border-top-0 { - border-top: 0 !important; } - -.border-right-0 { - border-right: 0 !important; } - -.border-bottom-0 { - border-bottom: 0 !important; } - -.border-left-0 { - border-left: 0 !important; } - -.border-primary { - border-color: #3A9ABF !important; } - -.border-secondary { - border-color: #6C757D !important; } - -.border-success { - border-color: #75CC39 !important; } - -.border-info { - border-color: #17a2b8 !important; } - -.border-warning { - border-color: #FDC02E !important; } - -.border-danger { - border-color: #D93749 !important; } - -.border-light { - border-color: #f8f9fa !important; } - -.border-dark { - border-color: #343a40 !important; } - -.border-white { - border-color: #fff !important; } - -.rounded-sm { - border-radius: 0.2rem !important; } - -.rounded { - border-radius: 0.25rem !important; } - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; } - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; } - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-lg { - border-radius: 0.3rem !important; } - -.rounded-circle { - border-radius: 50% !important; } - -.rounded-pill { - border-radius: 50rem !important; } - -.rounded-0 { - border-radius: 0 !important; } - -.clearfix::after { - display: block; - clear: both; - content: ""; } - -.d-none { - display: none !important; } - -.d-inline { - display: inline !important; } - -.d-inline-block { - display: inline-block !important; } - -.d-block { - display: block !important; } - -.d-table { - display: table !important; } - -.d-table-row { - display: table-row !important; } - -.d-table-cell { - display: table-cell !important; } - -.d-flex { - display: flex !important; } - -.d-inline-flex { - display: inline-flex !important; } - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; } - - .d-sm-inline { - display: inline !important; } - - .d-sm-inline-block { - display: inline-block !important; } - - .d-sm-block { - display: block !important; } - - .d-sm-table { - display: table !important; } - - .d-sm-table-row { - display: table-row !important; } - - .d-sm-table-cell { - display: table-cell !important; } - - .d-sm-flex { - display: flex !important; } - - .d-sm-inline-flex { - display: inline-flex !important; } } -@media (min-width: 768px) { - .d-md-none { - display: none !important; } - - .d-md-inline { - display: inline !important; } - - .d-md-inline-block { - display: inline-block !important; } - - .d-md-block { - display: block !important; } - - .d-md-table { - display: table !important; } - - .d-md-table-row { - display: table-row !important; } - - .d-md-table-cell { - display: table-cell !important; } - - .d-md-flex { - display: flex !important; } - - .d-md-inline-flex { - display: inline-flex !important; } } -@media (min-width: 992px) { - .d-lg-none { - display: none !important; } - - .d-lg-inline { - display: inline !important; } - - .d-lg-inline-block { - display: inline-block !important; } - - .d-lg-block { - display: block !important; } - - .d-lg-table { - display: table !important; } - - .d-lg-table-row { - display: table-row !important; } - - .d-lg-table-cell { - display: table-cell !important; } - - .d-lg-flex { - display: flex !important; } - - .d-lg-inline-flex { - display: inline-flex !important; } } -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; } - - .d-xl-inline { - display: inline !important; } - - .d-xl-inline-block { - display: inline-block !important; } - - .d-xl-block { - display: block !important; } - - .d-xl-table { - display: table !important; } - - .d-xl-table-row { - display: table-row !important; } - - .d-xl-table-cell { - display: table-cell !important; } - - .d-xl-flex { - display: flex !important; } - - .d-xl-inline-flex { - display: inline-flex !important; } } -@media print { - .d-print-none { - display: none !important; } - - .d-print-inline { - display: inline !important; } - - .d-print-inline-block { - display: inline-block !important; } - - .d-print-block { - display: block !important; } - - .d-print-table { - display: table !important; } - - .d-print-table-row { - display: table-row !important; } - - .d-print-table-cell { - display: table-cell !important; } - - .d-print-flex { - display: flex !important; } - - .d-print-inline-flex { - display: inline-flex !important; } } -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; } - .embed-responsive::before { - display: block; - content: ""; } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; } - -.embed-responsive-21by9::before { - padding-top: 42.8571428571%; } - -.embed-responsive-16by9::before { - padding-top: 56.25%; } - -.embed-responsive-4by3::before { - padding-top: 75%; } - -.embed-responsive-1by1::before { - padding-top: 100%; } - -.flex-row { - flex-direction: row !important; } - -.flex-column { - flex-direction: column !important; } - -.flex-row-reverse { - flex-direction: row-reverse !important; } - -.flex-column-reverse { - flex-direction: column-reverse !important; } - -.flex-wrap { - flex-wrap: wrap !important; } - -.flex-nowrap { - flex-wrap: nowrap !important; } - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; } - -.flex-fill { - flex: 1 1 auto !important; } - -.flex-grow-0 { - flex-grow: 0 !important; } - -.flex-grow-1 { - flex-grow: 1 !important; } - -.flex-shrink-0 { - flex-shrink: 0 !important; } - -.flex-shrink-1 { - flex-shrink: 1 !important; } - -.justify-content-start { - justify-content: flex-start !important; } - -.justify-content-end { - justify-content: flex-end !important; } - -.justify-content-center { - justify-content: center !important; } - -.justify-content-between { - justify-content: space-between !important; } - -.justify-content-around { - justify-content: space-around !important; } - -.align-items-start { - align-items: flex-start !important; } - -.align-items-end { - align-items: flex-end !important; } - -.align-items-center { - align-items: center !important; } - -.align-items-baseline { - align-items: baseline !important; } - -.align-items-stretch { - align-items: stretch !important; } - -.align-content-start { - align-content: flex-start !important; } - -.align-content-end { - align-content: flex-end !important; } - -.align-content-center { - align-content: center !important; } - -.align-content-between { - align-content: space-between !important; } - -.align-content-around { - align-content: space-around !important; } - -.align-content-stretch { - align-content: stretch !important; } - -.align-self-auto { - align-self: auto !important; } - -.align-self-start { - align-self: flex-start !important; } - -.align-self-end { - align-self: flex-end !important; } - -.align-self-center { - align-self: center !important; } - -.align-self-baseline { - align-self: baseline !important; } - -.align-self-stretch { - align-self: stretch !important; } - -@media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; } - - .flex-sm-column { - flex-direction: column !important; } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; } - - .flex-sm-wrap { - flex-wrap: wrap !important; } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-sm-fill { - flex: 1 1 auto !important; } - - .flex-sm-grow-0 { - flex-grow: 0 !important; } - - .flex-sm-grow-1 { - flex-grow: 1 !important; } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-sm-start { - justify-content: flex-start !important; } - - .justify-content-sm-end { - justify-content: flex-end !important; } - - .justify-content-sm-center { - justify-content: center !important; } - - .justify-content-sm-between { - justify-content: space-between !important; } - - .justify-content-sm-around { - justify-content: space-around !important; } - - .align-items-sm-start { - align-items: flex-start !important; } - - .align-items-sm-end { - align-items: flex-end !important; } - - .align-items-sm-center { - align-items: center !important; } - - .align-items-sm-baseline { - align-items: baseline !important; } - - .align-items-sm-stretch { - align-items: stretch !important; } - - .align-content-sm-start { - align-content: flex-start !important; } - - .align-content-sm-end { - align-content: flex-end !important; } - - .align-content-sm-center { - align-content: center !important; } - - .align-content-sm-between { - align-content: space-between !important; } - - .align-content-sm-around { - align-content: space-around !important; } - - .align-content-sm-stretch { - align-content: stretch !important; } - - .align-self-sm-auto { - align-self: auto !important; } - - .align-self-sm-start { - align-self: flex-start !important; } - - .align-self-sm-end { - align-self: flex-end !important; } - - .align-self-sm-center { - align-self: center !important; } - - .align-self-sm-baseline { - align-self: baseline !important; } - - .align-self-sm-stretch { - align-self: stretch !important; } } -@media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; } - - .flex-md-column { - flex-direction: column !important; } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; } - - .flex-md-wrap { - flex-wrap: wrap !important; } - - .flex-md-nowrap { - flex-wrap: nowrap !important; } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-md-fill { - flex: 1 1 auto !important; } - - .flex-md-grow-0 { - flex-grow: 0 !important; } - - .flex-md-grow-1 { - flex-grow: 1 !important; } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-md-start { - justify-content: flex-start !important; } - - .justify-content-md-end { - justify-content: flex-end !important; } - - .justify-content-md-center { - justify-content: center !important; } - - .justify-content-md-between { - justify-content: space-between !important; } - - .justify-content-md-around { - justify-content: space-around !important; } - - .align-items-md-start { - align-items: flex-start !important; } - - .align-items-md-end { - align-items: flex-end !important; } - - .align-items-md-center { - align-items: center !important; } - - .align-items-md-baseline { - align-items: baseline !important; } - - .align-items-md-stretch { - align-items: stretch !important; } - - .align-content-md-start { - align-content: flex-start !important; } - - .align-content-md-end { - align-content: flex-end !important; } - - .align-content-md-center { - align-content: center !important; } - - .align-content-md-between { - align-content: space-between !important; } - - .align-content-md-around { - align-content: space-around !important; } - - .align-content-md-stretch { - align-content: stretch !important; } - - .align-self-md-auto { - align-self: auto !important; } - - .align-self-md-start { - align-self: flex-start !important; } - - .align-self-md-end { - align-self: flex-end !important; } - - .align-self-md-center { - align-self: center !important; } - - .align-self-md-baseline { - align-self: baseline !important; } - - .align-self-md-stretch { - align-self: stretch !important; } } -@media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; } - - .flex-lg-column { - flex-direction: column !important; } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; } - - .flex-lg-wrap { - flex-wrap: wrap !important; } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-lg-fill { - flex: 1 1 auto !important; } - - .flex-lg-grow-0 { - flex-grow: 0 !important; } - - .flex-lg-grow-1 { - flex-grow: 1 !important; } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-lg-start { - justify-content: flex-start !important; } - - .justify-content-lg-end { - justify-content: flex-end !important; } - - .justify-content-lg-center { - justify-content: center !important; } - - .justify-content-lg-between { - justify-content: space-between !important; } - - .justify-content-lg-around { - justify-content: space-around !important; } - - .align-items-lg-start { - align-items: flex-start !important; } - - .align-items-lg-end { - align-items: flex-end !important; } - - .align-items-lg-center { - align-items: center !important; } - - .align-items-lg-baseline { - align-items: baseline !important; } - - .align-items-lg-stretch { - align-items: stretch !important; } - - .align-content-lg-start { - align-content: flex-start !important; } - - .align-content-lg-end { - align-content: flex-end !important; } - - .align-content-lg-center { - align-content: center !important; } - - .align-content-lg-between { - align-content: space-between !important; } - - .align-content-lg-around { - align-content: space-around !important; } - - .align-content-lg-stretch { - align-content: stretch !important; } - - .align-self-lg-auto { - align-self: auto !important; } - - .align-self-lg-start { - align-self: flex-start !important; } - - .align-self-lg-end { - align-self: flex-end !important; } - - .align-self-lg-center { - align-self: center !important; } - - .align-self-lg-baseline { - align-self: baseline !important; } - - .align-self-lg-stretch { - align-self: stretch !important; } } -@media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; } - - .flex-xl-column { - flex-direction: column !important; } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; } - - .flex-xl-wrap { - flex-wrap: wrap !important; } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-xl-fill { - flex: 1 1 auto !important; } - - .flex-xl-grow-0 { - flex-grow: 0 !important; } - - .flex-xl-grow-1 { - flex-grow: 1 !important; } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-xl-start { - justify-content: flex-start !important; } - - .justify-content-xl-end { - justify-content: flex-end !important; } - - .justify-content-xl-center { - justify-content: center !important; } - - .justify-content-xl-between { - justify-content: space-between !important; } - - .justify-content-xl-around { - justify-content: space-around !important; } - - .align-items-xl-start { - align-items: flex-start !important; } - - .align-items-xl-end { - align-items: flex-end !important; } - - .align-items-xl-center { - align-items: center !important; } - - .align-items-xl-baseline { - align-items: baseline !important; } - - .align-items-xl-stretch { - align-items: stretch !important; } - - .align-content-xl-start { - align-content: flex-start !important; } - - .align-content-xl-end { - align-content: flex-end !important; } - - .align-content-xl-center { - align-content: center !important; } - - .align-content-xl-between { - align-content: space-between !important; } - - .align-content-xl-around { - align-content: space-around !important; } - - .align-content-xl-stretch { - align-content: stretch !important; } - - .align-self-xl-auto { - align-self: auto !important; } - - .align-self-xl-start { - align-self: flex-start !important; } - - .align-self-xl-end { - align-self: flex-end !important; } - - .align-self-xl-center { - align-self: center !important; } - - .align-self-xl-baseline { - align-self: baseline !important; } - - .align-self-xl-stretch { - align-self: stretch !important; } } -.float-left { - float: left !important; } - -.float-right { - float: right !important; } - -.float-none { - float: none !important; } - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; } - - .float-sm-right { - float: right !important; } - - .float-sm-none { - float: none !important; } } -@media (min-width: 768px) { - .float-md-left { - float: left !important; } - - .float-md-right { - float: right !important; } - - .float-md-none { - float: none !important; } } -@media (min-width: 992px) { - .float-lg-left { - float: left !important; } - - .float-lg-right { - float: right !important; } - - .float-lg-none { - float: none !important; } } -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; } - - .float-xl-right { - float: right !important; } - - .float-xl-none { - float: none !important; } } -.overflow-auto { - overflow: auto !important; } - -.overflow-hidden { - overflow: hidden !important; } - -.position-static { - position: static !important; } - -.position-relative { - position: relative !important; } - -.position-absolute { - position: absolute !important; } - -.position-fixed { - position: fixed !important; } - -.position-sticky { - position: sticky !important; } - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; } } - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; } - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; } - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } - -.shadow-none { - box-shadow: none !important; } - -.w-25 { - width: 25% !important; } - -.w-50 { - width: 50% !important; } - -.w-75 { - width: 75% !important; } - -.w-100 { - width: 100% !important; } - -.w-auto { - width: auto !important; } - -.h-25 { - height: 25% !important; } - -.h-50 { - height: 50% !important; } - -.h-75 { - height: 75% !important; } - -.h-100 { - height: 100% !important; } - -.h-auto { - height: auto !important; } - -.mw-100 { - max-width: 100% !important; } - -.mh-100 { - max-height: 100% !important; } - -.min-vw-100 { - min-width: 100vw !important; } - -.min-vh-100 { - min-height: 100vh !important; } - -.vw-100 { - width: 100vw !important; } - -.vh-100 { - height: 100vh !important; } - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); } - -.m-0 { - margin: 0 !important; } - -.mt-0, -.my-0 { - margin-top: 0 !important; } - -.mr-0, -.mx-0 { - margin-right: 0 !important; } - -.mb-0, -.my-0 { - margin-bottom: 0 !important; } - -.ml-0, -.mx-0 { - margin-left: 0 !important; } - -.m-1 { - margin: 0.25rem !important; } - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; } - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; } - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; } - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; } - -.m-2 { - margin: 0.5rem !important; } - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; } - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; } - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; } - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; } - -.m-3 { - margin: 1rem !important; } - -.mt-3, -.my-3 { - margin-top: 1rem !important; } - -.mr-3, -.mx-3 { - margin-right: 1rem !important; } - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; } - -.ml-3, -.mx-3 { - margin-left: 1rem !important; } - -.m-4 { - margin: 1.5rem !important; } - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; } - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; } - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; } - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; } - -.m-5 { - margin: 3rem !important; } - -.mt-5, -.my-5 { - margin-top: 3rem !important; } - -.mr-5, -.mx-5 { - margin-right: 3rem !important; } - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; } - -.ml-5, -.mx-5 { - margin-left: 3rem !important; } - -.p-0 { - padding: 0 !important; } - -.pt-0, -.py-0 { - padding-top: 0 !important; } - -.pr-0, -.px-0 { - padding-right: 0 !important; } - -.pb-0, -.py-0 { - padding-bottom: 0 !important; } - -.pl-0, -.px-0 { - padding-left: 0 !important; } - -.p-1 { - padding: 0.25rem !important; } - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; } - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; } - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; } - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; } - -.p-2 { - padding: 0.5rem !important; } - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; } - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; } - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; } - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; } - -.p-3 { - padding: 1rem !important; } - -.pt-3, -.py-3 { - padding-top: 1rem !important; } - -.pr-3, -.px-3 { - padding-right: 1rem !important; } - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; } - -.pl-3, -.px-3 { - padding-left: 1rem !important; } - -.p-4 { - padding: 1.5rem !important; } - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; } - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; } - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; } - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; } - -.p-5 { - padding: 3rem !important; } - -.pt-5, -.py-5 { - padding-top: 3rem !important; } - -.pr-5, -.px-5 { - padding-right: 3rem !important; } - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; } - -.pl-5, -.px-5 { - padding-left: 3rem !important; } - -.m-n1 { - margin: -0.25rem !important; } - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; } - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; } - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; } - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; } - -.m-n2 { - margin: -0.5rem !important; } - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; } - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; } - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; } - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; } - -.m-n3 { - margin: -1rem !important; } - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; } - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; } - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; } - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; } - -.m-n4 { - margin: -1.5rem !important; } - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; } - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; } - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; } - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; } - -.m-n5 { - margin: -3rem !important; } - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; } - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; } - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; } - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; } - -.m-auto { - margin: auto !important; } - -.mt-auto, -.my-auto { - margin-top: auto !important; } - -.mr-auto, -.mx-auto { - margin-right: auto !important; } - -.mb-auto, -.my-auto { - margin-bottom: auto !important; } - -.ml-auto, -.mx-auto { - margin-left: auto !important; } - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; } - - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; } - - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; } - - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; } - - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; } - - .m-sm-1 { - margin: 0.25rem !important; } - - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; } - - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; } - - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; } - - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; } - - .m-sm-2 { - margin: 0.5rem !important; } - - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; } - - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; } - - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; } - - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; } - - .m-sm-3 { - margin: 1rem !important; } - - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; } - - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; } - - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; } - - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; } - - .m-sm-4 { - margin: 1.5rem !important; } - - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; } - - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; } - - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; } - - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; } - - .m-sm-5 { - margin: 3rem !important; } - - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; } - - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; } - - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; } - - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; } - - .p-sm-0 { - padding: 0 !important; } - - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; } - - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; } - - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; } - - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; } - - .p-sm-1 { - padding: 0.25rem !important; } - - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; } - - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; } - - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; } - - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; } - - .p-sm-2 { - padding: 0.5rem !important; } - - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; } - - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; } - - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; } - - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; } - - .p-sm-3 { - padding: 1rem !important; } - - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; } - - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; } - - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; } - - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; } - - .p-sm-4 { - padding: 1.5rem !important; } - - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; } - - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; } - - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; } - - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; } - - .p-sm-5 { - padding: 3rem !important; } - - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; } - - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; } - - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; } - - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; } - - .m-sm-n1 { - margin: -0.25rem !important; } - - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important; } - - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important; } - - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important; } - - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important; } - - .m-sm-n2 { - margin: -0.5rem !important; } - - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important; } - - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important; } - - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important; } - - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important; } - - .m-sm-n3 { - margin: -1rem !important; } - - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important; } - - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important; } - - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important; } - - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important; } - - .m-sm-n4 { - margin: -1.5rem !important; } - - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important; } - - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important; } - - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important; } - - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important; } - - .m-sm-n5 { - margin: -3rem !important; } - - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important; } - - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important; } - - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important; } - - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important; } - - .m-sm-auto { - margin: auto !important; } - - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; } - - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; } - - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; } - - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; } } -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; } - - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; } - - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; } - - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; } - - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; } - - .m-md-1 { - margin: 0.25rem !important; } - - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; } - - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; } - - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; } - - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; } - - .m-md-2 { - margin: 0.5rem !important; } - - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; } - - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; } - - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; } - - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; } - - .m-md-3 { - margin: 1rem !important; } - - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; } - - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; } - - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; } - - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; } - - .m-md-4 { - margin: 1.5rem !important; } - - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; } - - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; } - - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; } - - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; } - - .m-md-5 { - margin: 3rem !important; } - - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; } - - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; } - - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; } - - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; } - - .p-md-0 { - padding: 0 !important; } - - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; } - - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; } - - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; } - - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; } - - .p-md-1 { - padding: 0.25rem !important; } - - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; } - - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; } - - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; } - - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; } - - .p-md-2 { - padding: 0.5rem !important; } - - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; } - - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; } - - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; } - - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; } - - .p-md-3 { - padding: 1rem !important; } - - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; } - - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; } - - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; } - - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; } - - .p-md-4 { - padding: 1.5rem !important; } - - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; } - - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; } - - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; } - - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; } - - .p-md-5 { - padding: 3rem !important; } - - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; } - - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; } - - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; } - - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; } - - .m-md-n1 { - margin: -0.25rem !important; } - - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important; } - - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important; } - - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important; } - - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important; } - - .m-md-n2 { - margin: -0.5rem !important; } - - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important; } - - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important; } - - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important; } - - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important; } - - .m-md-n3 { - margin: -1rem !important; } - - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important; } - - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important; } - - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important; } - - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important; } - - .m-md-n4 { - margin: -1.5rem !important; } - - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important; } - - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important; } - - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important; } - - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important; } - - .m-md-n5 { - margin: -3rem !important; } - - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important; } - - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important; } - - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important; } - - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important; } - - .m-md-auto { - margin: auto !important; } - - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; } - - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; } - - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; } - - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; } } -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; } - - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; } - - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; } - - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; } - - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; } - - .m-lg-1 { - margin: 0.25rem !important; } - - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; } - - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; } - - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; } - - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; } - - .m-lg-2 { - margin: 0.5rem !important; } - - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; } - - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; } - - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; } - - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; } - - .m-lg-3 { - margin: 1rem !important; } - - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; } - - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; } - - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; } - - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; } - - .m-lg-4 { - margin: 1.5rem !important; } - - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; } - - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; } - - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; } - - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; } - - .m-lg-5 { - margin: 3rem !important; } - - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; } - - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; } - - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; } - - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; } - - .p-lg-0 { - padding: 0 !important; } - - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; } - - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; } - - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; } - - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; } - - .p-lg-1 { - padding: 0.25rem !important; } - - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; } - - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; } - - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; } - - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; } - - .p-lg-2 { - padding: 0.5rem !important; } - - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; } - - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; } - - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; } - - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; } - - .p-lg-3 { - padding: 1rem !important; } - - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; } - - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; } - - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; } - - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; } - - .p-lg-4 { - padding: 1.5rem !important; } - - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; } - - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; } - - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; } - - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; } - - .p-lg-5 { - padding: 3rem !important; } - - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; } - - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; } - - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; } - - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; } - - .m-lg-n1 { - margin: -0.25rem !important; } - - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important; } - - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important; } - - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important; } - - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important; } - - .m-lg-n2 { - margin: -0.5rem !important; } - - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important; } - - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important; } - - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important; } - - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important; } - - .m-lg-n3 { - margin: -1rem !important; } - - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important; } - - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important; } - - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important; } - - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important; } - - .m-lg-n4 { - margin: -1.5rem !important; } - - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important; } - - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important; } - - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important; } - - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important; } - - .m-lg-n5 { - margin: -3rem !important; } - - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important; } - - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important; } - - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important; } - - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important; } - - .m-lg-auto { - margin: auto !important; } - - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; } - - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; } - - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; } - - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; } } -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; } - - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; } - - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; } - - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; } - - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; } - - .m-xl-1 { - margin: 0.25rem !important; } - - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; } - - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; } - - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; } - - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; } - - .m-xl-2 { - margin: 0.5rem !important; } - - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; } - - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; } - - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; } - - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; } - - .m-xl-3 { - margin: 1rem !important; } - - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; } - - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; } - - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; } - - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; } - - .m-xl-4 { - margin: 1.5rem !important; } - - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; } - - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; } - - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; } - - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; } - - .m-xl-5 { - margin: 3rem !important; } - - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; } - - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; } - - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; } - - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; } - - .p-xl-0 { - padding: 0 !important; } - - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; } - - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; } - - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; } - - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; } - - .p-xl-1 { - padding: 0.25rem !important; } - - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; } - - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; } - - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; } - - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; } - - .p-xl-2 { - padding: 0.5rem !important; } - - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; } - - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; } - - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; } - - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; } - - .p-xl-3 { - padding: 1rem !important; } - - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; } - - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; } - - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; } - - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; } - - .p-xl-4 { - padding: 1.5rem !important; } - - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; } - - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; } - - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; } - - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; } - - .p-xl-5 { - padding: 3rem !important; } - - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; } - - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; } - - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; } - - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; } - - .m-xl-n1 { - margin: -0.25rem !important; } - - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important; } - - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important; } - - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important; } - - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important; } - - .m-xl-n2 { - margin: -0.5rem !important; } - - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important; } - - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important; } - - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important; } - - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important; } - - .m-xl-n3 { - margin: -1rem !important; } - - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important; } - - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important; } - - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important; } - - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important; } - - .m-xl-n4 { - margin: -1.5rem !important; } - - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important; } - - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important; } - - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important; } - - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important; } - - .m-xl-n5 { - margin: -3rem !important; } - - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important; } - - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important; } - - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important; } - - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important; } - - .m-xl-auto { - margin: auto !important; } - - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; } - - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; } - - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; } - - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; } } -.text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } - -.text-justify { - text-align: justify !important; } - -.text-wrap { - white-space: normal !important; } - -.text-nowrap { - white-space: nowrap !important; } - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; } - - .text-sm-right { - text-align: right !important; } - - .text-sm-center { - text-align: center !important; } } -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; } - - .text-md-right { - text-align: right !important; } - - .text-md-center { - text-align: center !important; } } -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; } - - .text-lg-right { - text-align: right !important; } - - .text-lg-center { - text-align: center !important; } } -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; } - - .text-xl-right { - text-align: right !important; } - - .text-xl-center { - text-align: center !important; } } -.text-lowercase { - text-transform: lowercase !important; } - -.text-uppercase { - text-transform: uppercase !important; } - -.text-capitalize { - text-transform: capitalize !important; } - -.font-weight-light { - font-weight: 300 !important; } - -.font-weight-lighter { - font-weight: lighter !important; } - -.font-weight-normal { - font-weight: 400 !important; } - -.font-weight-bold { - font-weight: 700 !important; } - -.font-weight-bolder { - font-weight: bolder !important; } - -.font-italic { - font-style: italic !important; } - -.text-white { - color: #fff !important; } - -.text-primary { - color: #3A9ABF !important; } - -a.text-primary:hover, a.text-primary:focus { - color: #286b84 !important; } - -.text-secondary { - color: #6C757D !important; } - -a.text-secondary:hover, a.text-secondary:focus { - color: #494f54 !important; } - -.text-success { - color: #75CC39 !important; } - -a.text-success:hover, a.text-success:focus { - color: #529326 !important; } - -.text-info { - color: #17a2b8 !important; } - -a.text-info:hover, a.text-info:focus { - color: #0f6674 !important; } - -.text-warning { - color: #FDC02E !important; } - -a.text-warning:hover, a.text-warning:focus { - color: #dc9c02 !important; } - -.text-danger { - color: #D93749 !important; } - -a.text-danger:hover, a.text-danger:focus { - color: #a41f2e !important; } - -.text-light { - color: #f8f9fa !important; } - -a.text-light:hover, a.text-light:focus { - color: #cbd3da !important; } - -.text-dark { - color: #343a40 !important; } - -a.text-dark:hover, a.text-dark:focus { - color: #121416 !important; } - -.text-body { - color: #212529 !important; } - -.text-muted { - color: #6c757d !important; } - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; } - -.text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; } - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; } - -.text-decoration-none { - text-decoration: none !important; } - -.text-break { - word-break: break-word !important; - overflow-wrap: break-word !important; } - -.text-reset { - color: inherit !important; } - -.visible { - visibility: visible !important; } - -.invisible { - visibility: hidden !important; } - -@media print { - *, - *::before, - *::after { - text-shadow: none !important; - box-shadow: none !important; } - - a:not(.btn) { - text-decoration: underline; } - - abbr[title]::after { - content: " (" attr(title) ")"; } - - pre { - white-space: pre-wrap !important; } - - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid; } - - thead { - display: table-header-group; } - - tr, - img { - page-break-inside: avoid; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - @page { - size: a3; } - body { - min-width: 992px !important; } - - .container { - min-width: 992px !important; } - - .navbar { - display: none; } - - .badge { - border: 1px solid #000; } - - .table { - border-collapse: collapse !important; } - .table td, - .table th { - background-color: #fff !important; } - - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important; } - - .table-dark { - color: inherit; } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #dee2e6; } - - .table .thead-dark th { - color: inherit; - border-color: #dee2e6; } } -/* Custom Styles */ -.list-group-item { - border: none; - padding: 0 0 0 .5rem; } - -.card-header, .card-body { - padding: 0.25rem; } - -.accordion > .card .card-header { - margin-bottom: 0; } - -.list-group-item:first-child { - border-radius: 0; } - -.table th, .table td { - padding: 0.25rem; } - -code { - color: black !important; } - -/*# sourceMappingURL=main.css.map */ diff --git a/bx/tests/results/visualizer/test-results.json b/bx/tests/results/visualizer/test-results.json deleted file mode 100644 index 068a73b..0000000 --- a/bx/tests/results/visualizer/test-results.json +++ /dev/null @@ -1,1781 +0,0 @@ -{ - "totalDuration" : 1042, - "endTime" : 1726235339751, - "coverage" : { - "data" : { }, - "enabled" : false - }, - "totalPass" : 9, - "totalSkipped" : 4, - "excludes" : [ ], - "resultID" : "", - "labels" : [ ], - "totalSpecs" : 13, - "CFMLEngine" : "BoxLang", - "bundleStats" : [ { - "path" : "tests.specs.BDDTest", - "totalDuration" : 432, - "endTime" : 1726235339485, - "totalPass" : 4, - "debugBuffer" : [ ], - "totalSkipped" : 2, - "globalException" : "", - "id" : "b799f4665a2be26cfd1cfd90f837ab8d", - "totalSpecs" : 6, - "suiteStats" : [ { - "totalDuration" : 395, - "endTime" : 1726235339475, - "totalPass" : 4, - "specStats" : [ { - "totalDuration" : 213, - "endTime" : 1726235339307, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "c4604d3b7e2f512c5c9ac1a03144223a", - "labels" : [ ], - "displayName" : "can test for equality", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can test for equality", - "failStacktrace" : "", - "startTime" : 1726235339094, - "failOrigin" : { } - }, { - "totalDuration" : 56, - "endTime" : 1726235339372, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "02cec20c140811c9e93c78bdf65928d5", - "labels" : [ ], - "displayName" : "can have more than one expectation to test", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have more than one expectation to test", - "failStacktrace" : "", - "startTime" : 1726235339316, - "failOrigin" : { } - }, { - "totalDuration" : 71, - "endTime" : 1726235339445, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "5415016e3254f610b333428c94708af0", - "labels" : [ ], - "displayName" : "can have negative expectations", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have negative expectations", - "failStacktrace" : "", - "startTime" : 1726235339374, - "failOrigin" : { } - }, { - "totalDuration" : 2, - "endTime" : 1726235339449, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "867c21692e98bfb08dd1265c0d89f50e", - "labels" : [ ], - "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failStacktrace" : "", - "startTime" : 1726235339447, - "failOrigin" : { } - }, { - "totalDuration" : 2, - "endTime" : 1726235339453, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "4f30c954a9638b92118103d04facaaed", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Windows Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Windows Only)", - "failStacktrace" : "", - "startTime" : 1726235339451, - "failOrigin" : { } - }, { - "totalDuration" : 21, - "endTime" : 1726235339474, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Mac Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Mac Only)", - "failStacktrace" : "", - "startTime" : 1726235339453, - "failOrigin" : { } - } ], - "status" : "Passed", - "totalSkipped" : 2, - "id" : "601a1895b68b67f4d9a549cd363dcd29", - "totalSpecs" : 6, - "bundleID" : "b799f4665a2be26cfd1cfd90f837ab8d", - "suiteStats" : [ ], - "name" : "A spec", - "startTime" : 1726235339080, - "parentID" : "", - "totalFail" : 0, - "totalError" : 0 - } ], - "name" : "tests.specs.BDDTest", - "startTime" : 1726235339053, - "totalFail" : 0, - "totalError" : 0, - "totalSuites" : 1 - }, { - "path" : "tests.specs.BDDTest", - "totalDuration" : 119, - "endTime" : 1726235339653, - "totalPass" : 4, - "debugBuffer" : [ ], - "totalSkipped" : 2, - "globalException" : "", - "id" : "795931bf6ec5608abf3dbbc702e09009", - "totalSpecs" : 6, - "suiteStats" : [ { - "totalDuration" : 98, - "endTime" : 1726235339639, - "totalPass" : 4, - "specStats" : [ { - "totalDuration" : 14, - "endTime" : 1726235339556, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "c4604d3b7e2f512c5c9ac1a03144223a", - "labels" : [ ], - "displayName" : "can test for equality", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can test for equality", - "failStacktrace" : "", - "startTime" : 1726235339542, - "failOrigin" : { } - }, { - "totalDuration" : 23, - "endTime" : 1726235339583, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "02cec20c140811c9e93c78bdf65928d5", - "labels" : [ ], - "displayName" : "can have more than one expectation to test", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have more than one expectation to test", - "failStacktrace" : "", - "startTime" : 1726235339560, - "failOrigin" : { } - }, { - "totalDuration" : 31, - "endTime" : 1726235339620, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "5415016e3254f610b333428c94708af0", - "labels" : [ ], - "displayName" : "can have negative expectations", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have negative expectations", - "failStacktrace" : "", - "startTime" : 1726235339589, - "failOrigin" : { } - }, { - "totalDuration" : 1, - "endTime" : 1726235339622, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "867c21692e98bfb08dd1265c0d89f50e", - "labels" : [ ], - "displayName" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that can be skipped easily like this one by prefixing it with x", - "failStacktrace" : "", - "startTime" : 1726235339621, - "failOrigin" : { } - }, { - "totalDuration" : 1, - "endTime" : 1726235339623, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Skipped", - "skip" : true, - "error" : { }, - "id" : "4f30c954a9638b92118103d04facaaed", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Windows Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Windows Only)", - "failStacktrace" : "", - "startTime" : 1726235339622, - "failOrigin" : { } - }, { - "totalDuration" : 9, - "endTime" : 1726235339636, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "a5acb9b700b0c30bbb8196c3ce975cc6", - "labels" : [ ], - "displayName" : "can have tests that execute if the right environment exists (Mac Only)", - "failExtendedInfo" : "", - "suiteID" : "601a1895b68b67f4d9a549cd363dcd29", - "failDetail" : "", - "name" : "can have tests that execute if the right environment exists (Mac Only)", - "failStacktrace" : "", - "startTime" : 1726235339627, - "failOrigin" : { } - } ], - "status" : "Passed", - "totalSkipped" : 2, - "id" : "601a1895b68b67f4d9a549cd363dcd29", - "totalSpecs" : 6, - "bundleID" : "795931bf6ec5608abf3dbbc702e09009", - "suiteStats" : [ ], - "name" : "A spec", - "startTime" : 1726235339541, - "parentID" : "", - "totalFail" : 0, - "totalError" : 0 - } ], - "name" : "tests.specs.BDDTest", - "startTime" : 1726235339534, - "totalFail" : 0, - "totalError" : 0, - "totalSuites" : 1 - }, { - "path" : "tests.specs.MyFirstSpec", - "totalDuration" : 24, - "endTime" : 1726235339749, - "totalPass" : 1, - "debugBuffer" : [ ], - "totalSkipped" : 0, - "globalException" : "", - "id" : "01e5328ef6518b74826d2be98313cce7", - "totalSpecs" : 1, - "suiteStats" : [ { - "totalDuration" : 16, - "endTime" : 1726235339748, - "totalPass" : 1, - "specStats" : [ { - "totalDuration" : 14, - "endTime" : 1726235339747, - "failMessage" : "", - "focused" : false, - "debugBuffer" : [ ], - "status" : "Passed", - "skip" : false, - "error" : { }, - "id" : "7d7576ae118b6259767aab7a2485831c", - "labels" : [ ], - "displayName" : "it can add", - "failExtendedInfo" : "", - "suiteID" : "05b76e295da5568e4679dd79bbea52db", - "failDetail" : "", - "name" : "it can add", - "failStacktrace" : "", - "startTime" : 1726235339733, - "failOrigin" : { } - } ], - "status" : "Passed", - "totalSkipped" : 0, - "id" : "05b76e295da5568e4679dd79bbea52db", - "totalSpecs" : 1, - "bundleID" : "01e5328ef6518b74826d2be98313cce7", - "suiteStats" : [ ], - "name" : "My First Test", - "startTime" : 1726235339732, - "parentID" : "", - "totalFail" : 0, - "totalError" : 0 - } ], - "name" : "tests.specs.MyFirstSpec", - "startTime" : 1726235339725, - "totalFail" : 0, - "totalError" : 0, - "totalSuites" : 1 - } ], - "totalBundles" : 3, - "startTime" : 1726235338709, - "totalFail" : 0, - "totalError" : 0, - "version" : "@build.version@", - "totalSuites" : 3, - "CFMLEngineVersion" : "1.0.0-snapshot+2143" -}estbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673137, - "totalDuration": 7, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673144, - "name": "testExpectedExceptionNoValue", - "id": "EA719766B29000E8EB13E08618EB62D8", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673144, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673148, - "name": "testExpectedExceptionFromMethodWithType", - "id": "DEA4D1B7E4D5685C8F5E56FC2EF4B07F", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673148, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673152, - "name": "testRaiseException_pass", - "id": "DB1CDA5E9576C02CE49C6A3009AC84EA", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673152, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673156, - "name": "testExpectedExceptionFromMethodWithTypeAndRegex", - "id": "5F2998DAA434E0999157C33D2998677F", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673156, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1011)", - "codePrintPlain": "1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n1013: \t\t\t\t// store spec status\n", - "column": 0, - "line": 1011, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n1013: \t\t\t\t// store spec status
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673160, - "name": "testExpectedExceptionWithValue", - "id": "821A8EBFF6CCAD78FF707B72D7566B3E", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673160, - "totalDuration": 3, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673163, - "name": "testRaiseException_fail_wrong_exception_raised", - "id": "38E9FBD5CD24CC185DB762502F1D2E1E", - "failMessage": "" - }, { - "error": { - "Extended_Info": "", - "Message": "java.util.ConcurrentModificationException", - "Detail": "", - "additional": {}, - "TagContext": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "ErrorCode": "0", - "type": "java.util.ConcurrentModificationException", - "StackTrace": "lucee.runtime.exp.NativeException: java.util.ConcurrentModificationException\n\tat java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)\n\tat java.util.HashMap$KeyIterator.next(HashMap.java:1466)\n\tat io.undertow.servlet.util.IteratorEnumeration.nextElement(IteratorEnumeration.java:44)\n\tat lucee.runtime.type.scope.RequestImpl.clear(RequestImpl.java:157)\n\tat lucee.runtime.functions.struct.StructClear.call(StructClear.java:36)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)\n\tat specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)\n\tat system.basespec_cfc$cf.udfCall(/testbox/system/BaseSpec.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.call(UDFImpl.java:226)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:693)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.call(ComponentImpl.java:1997)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:756)\n\tat lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1718)\n\tat system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:812)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)\n\tat system.testbox_cfc$cf.udfCall(/testbox/system/TestBox.cfc)\n\tat lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:107)\n\tat lucee.runtime.type.UDFImpl._call(UDFImpl.java:357)\n\tat lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:695)\n\tat lucee.runtime.ComponentImpl._call(ComponentImpl.java:573)\n\tat lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2014)\n\tat lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:833)\n\tat lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1737)\n\tat system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:805)\n\tat tests.runner_cfm$cf.call(/tests/runner.cfm:21)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:933)\n\tat lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)\n\tat lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:218)\n\tat lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43)\n\tat lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)\n\tat lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)\n\tat lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)\n\tat lucee.runtime.engine.Request.exe(Request.java:44)\n\tat lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1090)\n\tat lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1038)\n\tat lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)\n\tat lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\n\tat org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:47)\n\tat io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\n\tat sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:764)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:801)\n\tat com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)\n\tat sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71)\n\tat sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54)\n\tat com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)\n\tat io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java)\n\tat io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)\n\tat io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.ConcurrentModificationException\n\t... 137 more\n", - "ExtendedInfo": "" - }, - "startTime": 1553009673163, - "totalDuration": 4, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.mxunitexpectedexceptions_cfc$cf.udfCall1(/tests/specsWithFailures/MXUnitExpectedExceptions.cfc:18)", - "codePrintPlain": "16: \n17: \tfunction teardown(){\n18: \t\tstructClear( request );\n19: \t}\n20: \n", - "column": 0, - "line": 18, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/MXUnitExpectedExceptions.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "16:
    \n17: \tfunction teardown(){
    \n18: \t\tstructClear( request );
    \n19: \t}
    \n20:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall5(/testbox/system/BaseSpec.cfc:1010)", - "codePrintPlain": "1008: \t\t\t\t} finally {\n1009: \t\t\t\t\t// execute teardown()\n1010: \t\t\t\t\tif( structKeyExists( this, \"teardown\" ) ){ this.teardown( currentMethod=arguments.spec.name ); }\n1011: \t\t\t\t}\n1012: \n", - "column": 0, - "line": 1010, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1008: \t\t\t\t} finally {
    \n1009: \t\t\t\t\t// execute teardown()
    \n1010: \t\t\t\t\tif( structKeyExists( this, "teardown" ) ){ this.teardown( currentMethod=arguments.spec.name ); }
    \n1011: \t\t\t\t}
    \n1012:
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:208)", - "codePrintPlain": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n207: \t\t\t\t\t\trunner=this\n208: \t\t\t\t\t);\n209: \n210: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 208, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "206: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n207: \t\t\t\t\t\trunner=this
    \n208: \t\t\t\t\t);
    \n209:
    \n210: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.unitrunner_cfc$cf.udfCall(/testbox/system/runners/UnitRunner.cfc:81)", - "codePrintPlain": "79: \t\t\t\t\t\ttestResults=arguments.testResults,\n80: \t\t\t\t\t\tbundleStats=bundleStats,\n81: \t\t\t\t\t\tcallbacks=arguments.callbacks\n82: \t\t\t\t\t);\n83: \n", - "column": 0, - "line": 81, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/UnitRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "79: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n80: \t\t\t\t\t\tbundleStats=bundleStats,
    \n81: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n82: \t\t\t\t\t);
    \n83:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:478)", - "codePrintPlain": "476: \t\t\t\t// Run via xUnit Style\n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )\n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n479: \t\t\t}\n480: \t\t} catch( Any e ){\n", - "column": 0, - "line": 478, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "476: \t\t\t\t// Run via xUnit Style
    \n477: \t\t\t\tnew testbox.system.runners.UnitRunner( options=variables.options,testbox=this )
    \n478: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n479: \t\t\t}
    \n480: \t\t} catch( Any e ){
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }, { - "Raw_Trace": "tests.runner_cfm$cf.call(/tests/runner.cfm:21)", - "codePrintPlain": "19: \n20: \n21: \n", - "column": 0, - "line": 21, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/runner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "19:
    \n20: <!--- Include the TestBox HTML Runner --->
    \n21: <cfinclude template="/testbox/system/runners/HTMLRunner.cfm" >
    \n" - }], - "status": "Error", - "suiteID": "0F9E64ECB27A3F1E33BC78FB7266E610", - "endTime": 1553009673167, - "name": "testExpectException_should_fail", - "id": "9AE953744ABF596DB46DABAAF47A36E0", - "failMessage": "" - }], - "endTime": 1553009673167, - "totalError": 7, - "name": "tests.specsWithFailures.MXUnitExpectedExceptions", - "id": "0F9E64ECB27A3F1E33BC78FB7266E610", - "suiteStats": [] - }], - "globalException": "" - }, { - "totalSuites": 1, - "startTime": 1553009673173, - "totalPass": 1, - "totalDuration": 15, - "totalSkipped": 0, - "totalFail": 1, - "totalSpecs": 2, - "path": "tests.specsWithFailures.TeardownWithFailureBDD", - "endTime": 1553009673188, - "totalError": 0, - "name": "tests.specsWithFailures.TeardownWithFailureBDD", - "id": "7DA7FE371A5DA234729404FCED6D1494", - "suiteStats": [{ - "startTime": 1553009673174, - "totalPass": 1, - "totalDuration": 13, - "totalSkipped": 0, - "totalFail": 1, - "totalSpecs": 2, - "bundleID": "7DA7FE371A5DA234729404FCED6D1494", - "status": "Failed", - "parentID": "", - "specStats": [{ - "error": {}, - "startTime": 1553009673174, - "totalDuration": 5, - "failOrigin": {}, - "status": "Passed", - "suiteID": "734EAC2A2E0173AB943C7F55FC61E4B4", - "endTime": 1553009673179, - "name": "passes", - "id": "60E1FD85154BCE145E454EB6A78FED66", - "failMessage": "" - }, { - "error": {}, - "startTime": 1553009673179, - "totalDuration": 8, - "failOrigin": [{ - "Raw_Trace": "specswithfailures.teardownwithfailurebdd_cfc$cf.udfCall(/tests/specsWithFailures/TeardownWithFailureBDD.cfc:34)", - "codePrintPlain": "32: \n33: \t\t\tit(\"fails\", function(){\n34: \t\t\t\texpect( 1 ).toBe( 3 );\n35: \t\t\t});\n36: \n", - "column": 0, - "line": 34, - "template": "/Users/iurquiza/Projects/ortus/TestBox/tests/specsWithFailures/TeardownWithFailureBDD.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "32:
    \n33: \t\t\tit("fails", function(){
    \n34: \t\t\t\texpect( 1 ).toBe( 3 );
    \n35: \t\t\t});
    \n36:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall6(/testbox/system/BaseSpec.cfc:1237)", - "codePrintPlain": "1235: \t\tstring implements=\"\"\n1236: \t){\n1237: \t\treturn this.$mockBox.createStub( argumentCollection=arguments );\n1238: \t}\n1239: \n", - "column": 0, - "line": 1237, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "1235: \t\tstring implements=""
    \n1236: \t){
    \n1237: \t\treturn this.$mockBox.createStub( argumentCollection=arguments );
    \n1238: \t}
    \n1239:
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall4(/testbox/system/BaseSpec.cfc:888)", - "codePrintPlain": "886: \t\t\treturn function(){\n887: \t\t\t\t// Execute the body of the spec\n888: \t\t\t\tnextClosure.body( spec = thread.spec, suite = thread.suite, data = nextClosure.data );\n889: \t\t\t};\n890: \t\t}\n", - "column": 0, - "line": 888, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "886: \t\t\treturn function(){
    \n887: \t\t\t\t// Execute the body of the spec
    \n888: \t\t\t\tnextClosure.body( spec = thread.spec, suite = thread.suite, data = nextClosure.data );
    \n889: \t\t\t};
    \n890: \t\t}
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall4(/testbox/system/BaseSpec.cfc:863)", - "codePrintPlain": "861: \t\t);\n862: \t\t// Run the specs\n863: \t\tspecStack();\n864: \n865: \t\treturn this;\n", - "column": 0, - "line": 863, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "861: \t\t);
    \n862: \t\t// Run the specs
    \n863: \t\tspecStack();
    \n864:
    \n865: \t\treturn this;
    \n" - }, { - "Raw_Trace": "system.basespec_cfc$cf.udfCall3(/testbox/system/BaseSpec.cfc:701)", - "codePrintPlain": "699: \n700: \t\t\t\ttry{\n701: \t\t\t\t\trunAroundEachClosures( arguments.suite, arguments.spec );\n702: \t\t\t\t} catch( any e ){\n703: \t\t\t\t\trethrow;\n", - "column": 0, - "line": 701, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/BaseSpec.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "699:
    \n700: \t\t\t\ttry{
    \n701: \t\t\t\t\trunAroundEachClosures( arguments.suite, arguments.spec );
    \n702: \t\t\t\t} catch( any e ){
    \n703: \t\t\t\t\trethrow;
    \n" - }, { - "Raw_Trace": "system.runners.bddrunner_cfc$cf.udfCall(/testbox/system/runners/BDDRunner.cfc:221)", - "codePrintPlain": "219: \t\t\t\t\t\tsuiteStats=thread.suiteStats,\n220: \t\t\t\t\t\trunner=this\n221: \t\t\t\t\t);\n222: \n223: \t\t\t\t\t// verify call backs\n", - "column": 0, - "line": 221, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/BDDRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "219: \t\t\t\t\t\tsuiteStats=thread.suiteStats,
    \n220: \t\t\t\t\t\trunner=this
    \n221: \t\t\t\t\t);
    \n222:
    \n223: \t\t\t\t\t// verify call backs
    \n" - }, { - "Raw_Trace": "system.runners.bddrunner_cfc$cf.udfCall(/testbox/system/runners/BDDRunner.cfc:83)", - "codePrintPlain": "81: \t\t\t\t\t\ttestResults=arguments.testResults,\n82: \t\t\t\t\t\tbundleStats=bundleStats,\n83: \t\t\t\t\t\tcallbacks=arguments.callbacks\n84: \t\t\t\t\t);\n85: \n", - "column": 0, - "line": 83, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/BDDRunner.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "81: \t\t\t\t\t\ttestResults=arguments.testResults,
    \n82: \t\t\t\t\t\tbundleStats=bundleStats,
    \n83: \t\t\t\t\t\tcallbacks=arguments.callbacks
    \n84: \t\t\t\t\t);
    \n85:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall2(/testbox/system/TestBox.cfc:473)", - "codePrintPlain": "471: \t\t\t\t// Run via BDD Style\n472: \t\t\t\tnew testbox.system.runners.BDDRunner( options=variables.options, testbox=this )\n473: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );\n474: \t\t\t}\n475: \t\t\telse{\n", - "column": 0, - "line": 473, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "471: \t\t\t\t// Run via BDD Style
    \n472: \t\t\t\tnew testbox.system.runners.BDDRunner( options=variables.options, testbox=this )
    \n473: \t\t\t\t\t.run( target, arguments.testResults, arguments.callbacks );
    \n474: \t\t\t}
    \n475: \t\t\telse{
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:251)", - "codePrintPlain": "249: \t\t\t\tbundlePath = thisBundlePath,\n250: \t\t\t\ttestResults = results,\n251: \t\t\t\tcallbacks = arguments.callbacks\n252: \t\t\t);\n253: \n", - "column": 0, - "line": 251, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "249: \t\t\t\tbundlePath = thisBundlePath,
    \n250: \t\t\t\ttestResults = results,
    \n251: \t\t\t\tcallbacks = arguments.callbacks
    \n252: \t\t\t);
    \n253:
    \n" - }, { - "Raw_Trace": "system.testbox_cfc$cf.udfCall1(/testbox/system/TestBox.cfc:160)", - "codePrintPlain": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }\n159: \t\t// run it and get results\n160: \t\tvar results = runRaw( argumentCollection=arguments );\n161: \t\t// store latest results\n162: \t\tvariables.result = results;\n", - "column": 0, - "line": 160, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/TestBox.cfc", - "id": "??", - "type": "cfml", - "codePrintHTML": "158: \t\tif( !isNull( arguments.reporter ) ){ variables.reporter = arguments.reporter; }
    \n159: \t\t// run it and get results
    \n160: \t\tvar results = runRaw( argumentCollection=arguments );
    \n161: \t\t// store latest results
    \n162: \t\tvariables.result = results;
    \n" - }, { - "Raw_Trace": "system.runners.htmlrunner_cfm$cf.call(/testbox/system/runners/HTMLRunner.cfm:49)", - "codePrintPlain": "47: \n48: // Run Tests using correct reporter\n49: results = testbox.run( reporter=url.reporter );\n50: \n51: // Write TEST.properties in report destination path.\n", - "column": 0, - "line": 49, - "template": "/Users/iurquiza/Projects/ortus/TestBox/system/runners/HTMLRunner.cfm", - "id": "??", - "type": "cfml", - "codePrintHTML": "47:
    \n48: // Run Tests using correct reporter
    \n49: results = testbox.run( reporter=url.reporter );
    \n50:
    \n51: // Write TEST.properties in report destination path.
    \n" - }], - "status": "Failed", - "suiteID": "734EAC2A2E0173AB943C7F55FC61E4B4", - "endTime": 1553009673187, - "name": "fails", - "id": "5C518249D53779A16FA8302C61C4DDDA", - "failMessage": "Expected [3] but received [1]" - }], - "endTime": 1553009673187, - "totalError": 0, - "name": "A suite", - "id": "734EAC2A2E0173AB943C7F55FC61E4B4", - "suiteStats": [] - }], - "globalException": "" - }], - "totalPass": 2, - "totalDuration": 115, - "version": "@build.version@+@build.number@", - "totalSkipped": 0, - "totalFail": 2, - "totalSpecs": 11, - "excludes": ["exclude1", "exclude2"], - "labels": ["label1", "label2"], - "resultID": "", - "endTime": 1553009673188, - "coverage": { - "data": { - "sonarQubeResults": "/Users/iurquiza/Projects/ortus/TestBox/tests/results/sonarQubeResults", - "browserResults": "/Users/iurquiza/Projects/ortus/TestBox/tests/results/coverageReport", - "stats": { - "totalCoveredLines": 1253, - "numFiles": 78, - "percTotalCoverage": 0.167022127433, - "totalExecutableLines": 7502 - } - }, - "enabled": true - }, - "totalError": 7, - "totalBundles": 3 -} \ No newline at end of file diff --git a/system/runners/BoxLangRunner.bx b/system/runners/BoxLangRunner.bx index f2e86bd..54405e7 100644 --- a/system/runners/BoxLangRunner.bx +++ b/system/runners/BoxLangRunner.bx @@ -119,25 +119,27 @@ class{ } // If we have a positional argument, then we will assume it is a test bundle: Ex: `run my.bundle` + // Mutually exclusive with `--directory`, so wipe out the directory if( positional.len() ) { - initArgs.bundles = positional[ 1 ]; + initArgs.bundles = positional[ 1 ] + initArgs.directory = {} } - // If we don't have test-bundles or test-directory, then default to the DEFAULT_TEST_DIRECTORY + // If we don't have test-bundles or a test-directory, then default to the DEFAULT_TEST_DIRECTORY if( !initArgs.bundles.len() && !initArgs.directory.mapping.len() ) { - initArgs.directory = static.DEFAULT_TEST_DIRECTORY; + initArgs.directory = static.DEFAULT_TEST_DIRECTORY } if( runArgs.verbose ){ - startTime = getTickCount(); - println( "Starting TestBox Runner with the following init arguments" ); - println( initArgs ); + startTime = getTickCount() + println( "Starting TestBox Runner with the following init arguments" ) + println( initArgs ) } var testbox = new testbox.system.TestBox( argumentCollection = initArgs ) if( runArgs.verbose ){ - println( "TestBox Runner started in #getTickCount() - startTime# ms" ); - println( "Running your tests with the following run arguments" ); - println( runArgs ); + println( "TestBox Runner started in #getTickCount() - startTime# ms" ) + println( "Running your tests with the following arguments" ) + println( runArgs ) } else{ println( "Running your tests..." ) } @@ -255,7 +257,7 @@ test.#errors ? 'failed' : 'passed'#=true test.labels=#escapePropertyValue( arrayToList( testResults.getLabels() ) )# test.excludes=#escapePropertyValue( arrayToList( testResults.getExcludes() ) )# test.bundles=#escapePropertyValue( initArgs.bundles )# -test.directory=#escapePropertyValue( initArgs.directory.mapping )# +test.directory=#escapePropertyValue( initArgs.directory?.mapping )# total.bundles=#escapePropertyValue( testResults.getTotalBundles() )# total.suites=#escapePropertyValue( testResults.getTotalSuites() )# total.specs=#escapePropertyValue( testResults.getTotalSpecs() )# From cbcb311d76a8e9bf540b3e1962570b701a5a7e2b Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Tue, 17 Sep 2024 16:29:03 +0200 Subject: [PATCH 64/73] just updating samples --- bx/tests/results/TEST.properties | 2 +- bx/tests/results/latestrun.log | 2 +- bx/tests/results/report.txt | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bx/tests/results/TEST.properties b/bx/tests/results/TEST.properties index 5d7be53..d617011 100644 --- a/bx/tests/results/TEST.properties +++ b/bx/tests/results/TEST.properties @@ -1,5 +1,5 @@ # TestBox Summary Report -test.datetime=2024-09-17T16:15:11.746743+02:00 +test.datetime=2024-09-17T16:15:31.178216+02:00 test.passed=true test.labels= test.excludes= diff --git a/bx/tests/results/latestrun.log b/bx/tests/results/latestrun.log index 70a50a2..91110be 100644 --- a/bx/tests/results/latestrun.log +++ b/bx/tests/results/latestrun.log @@ -1 +1 @@ -Tests ran at Sep 17, 2024, 4:15:11 PM \ No newline at end of file +Tests ran at Sep 17, 2024, 4:15:31 PM \ No newline at end of file diff --git a/bx/tests/results/report.txt b/bx/tests/results/report.txt index 8b8671e..2a38aa1 100644 --- a/bx/tests/results/report.txt +++ b/bx/tests/results/report.txt @@ -1,16 +1,16 @@ █▓▒▒░░░ TestBox v@build.version@+@build.number@ ░░░▒▒▓█ _____________________________________________________________   -√tests.specs.BDDTest (1030 ms) +√tests.specs.BDDTest (776 ms) [Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Suites/Specs: 1/6]   ( √ ) A spec -    ( √ ) can test for equality (495 ms) -    ( √ ) can have more than one expectation to test (182 ms) -    ( √ ) can have negative expectations (141 ms) -    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (20 ms) -    ( - ) can have tests that execute if the right environment exists (Windows Only) (7 ms) -    ( √ ) can have tests that execute if the right environment exists (Mac Only) (54 ms) +    ( √ ) can test for equality (182 ms) +    ( √ ) can have more than one expectation to test (120 ms) +    ( √ ) can have negative expectations (150 ms) +    ( - ) can have tests that can be skipped easily like this one by prefixing it with x (127 ms) +    ( - ) can have tests that execute if the right environment exists (Windows Only) (4 ms) +    ( √ ) can have tests that execute if the right environment exists (Mac Only) (57 ms)     ================================================================================= @@ -20,7 +20,7 @@ Final Stats [Passed: 4] [Failed: 0] [Errors: 0] [Skipped: 2] [Bundles/Suites/Specs: 1/1/6]   TestBox:        v@build.version@+@build.number@ -Duration:       1477 ms +Duration:       1167 ms CFML Engine:    BoxLang 1.0.0-snapshot+2143 Labels:         None   From c296eb0fc667aec82dea3d7b74b791ea013bd3d8 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Tue, 17 Sep 2024 19:10:35 +0200 Subject: [PATCH 65/73] adding applications --- bx/browser/Application.bx | 29 +++++++++++++++++++++++++++++ bx/runner/Application.bx | 29 +++++++++++++++++++++++++++++ cfml/browser/Application.cfc | 22 ++++++++++++++++++++++ cfml/runner/Application.cfc | 22 ++++++++++++++++++++++ cfml/tests/Application.cfc | 2 +- 5 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 bx/browser/Application.bx create mode 100644 bx/runner/Application.bx create mode 100644 cfml/browser/Application.cfc create mode 100644 cfml/runner/Application.cfc diff --git a/bx/browser/Application.bx b/bx/browser/Application.bx new file mode 100644 index 0000000..98a12e9 --- /dev/null +++ b/bx/browser/Application.bx @@ -0,0 +1,29 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +class { + this.name = "Test Browser"; + + // The mapping to easily access the tests + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + // The mapping to easily access the root application usually the parent folder + this.mappings[ "/root" ] = expandPath( "/../" ); + + // Any application settings go here + + /** + * Executes BEFORE any runner or test requested. + */ + boolean function onRequestStart( String targetPage ){ + return true; + } + + /** + * Executes AFTER any runner or test requested. + */ + void function onRequestEnd( String targetPage ){ + } + +} diff --git a/bx/runner/Application.bx b/bx/runner/Application.bx new file mode 100644 index 0000000..4c84b2a --- /dev/null +++ b/bx/runner/Application.bx @@ -0,0 +1,29 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +class { + this.name = "Global Test Runner"; + + // The mapping to easily access the tests + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + // The mapping to easily access the root application usually the parent folder + this.mappings[ "/root" ] = expandPath( "/../" ); + + // Any application settings go here + + /** + * Executes BEFORE any runner or test requested. + */ + boolean function onRequestStart( String targetPage ){ + return true; + } + + /** + * Executes AFTER any runner or test requested. + */ + void function onRequestEnd( String targetPage ){ + } + +} diff --git a/cfml/browser/Application.cfc b/cfml/browser/Application.cfc new file mode 100644 index 0000000..bfc3bee --- /dev/null +++ b/cfml/browser/Application.cfc @@ -0,0 +1,22 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +component { + + this.name = "A TestBox Browser"; + // any other application.cfc stuff goes below: + this.sessionManagement = true; + + // any mappings go here, we create one that points to the root called test. + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + + // any orm definitions go here. + + // request start + public boolean function onRequestStart( String targetPage ){ + return true; + } + +} diff --git a/cfml/runner/Application.cfc b/cfml/runner/Application.cfc new file mode 100644 index 0000000..1aabd49 --- /dev/null +++ b/cfml/runner/Application.cfc @@ -0,0 +1,22 @@ +/** + * Copyright Since 2005 Ortus Solutions, Corp + * www.ortussolutions.com + * ************************************************************************************* + */ +component { + + this.name = "A TestBox Global Runner"; + // any other application.cfc stuff goes below: + this.sessionManagement = true; + + // any mappings go here, we create one that points to the root called test. + this.mappings[ "/tests" ] = getDirectoryFromPath( getCurrentTemplatePath() ); + + // any orm definitions go here. + + // request start + public boolean function onRequestStart( String targetPage ){ + return true; + } + +} diff --git a/cfml/tests/Application.cfc b/cfml/tests/Application.cfc index d8d5808..a821add 100644 --- a/cfml/tests/Application.cfc +++ b/cfml/tests/Application.cfc @@ -5,7 +5,7 @@ */ component { - this.name = "A TestBox Runner Suite " & hash( getCurrentTemplatePath() ); + this.name = "A TestBox Runner Suite"; // any other application.cfc stuff goes below: this.sessionManagement = true; From 2441f9ec526cdfe77c8af839fc580314314f7fd8 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 19 Sep 2024 10:31:09 +0200 Subject: [PATCH 66/73] adding cron for daily tests --- .github/workflows/cron.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/workflows/cron.yml diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml new file mode 100644 index 0000000..0e687cd --- /dev/null +++ b/.github/workflows/cron.yml @@ -0,0 +1,10 @@ +name: Daily Test BE Engines + +on: + schedule: + - cron: '0 0 * * *' # Runs at 00:00 UTC every day + +jobs: + tests: + uses: ./.github/workflows/tests.yml + secrets: inherit From dbe163f464cf272b3aa5f44c28576327570878d7 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 19 Sep 2024 13:39:19 +0200 Subject: [PATCH 67/73] more fixes to browser on adobe issues --- bx/browser/index.bxm | 32 ++++++++++++++++++-------------- cfml/browser/index.cfm | 34 +++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/bx/browser/index.bxm b/bx/browser/index.bxm index 77d6df2..74c60d4 100644 --- a/bx/browser/index.bxm +++ b/bx/browser/index.bxm @@ -88,20 +88,24 @@ Below is a listing of the runners matching the "runner*.(cfm|bxm)" pattern.

    - - - - class="btn btn-success btn-sm my-1 mx-1" - - class="btn btn-info btn-sm my-1 mx-1" - - > - #runners.name# - - + + +

    No runners found in this directory

    + + + + class="btn btn-success btn-sm my-1 mx-1" + + class="btn btn-info btn-sm my-1 mx-1" +
    + > + #runners.name# + + + diff --git a/cfml/browser/index.cfm b/cfml/browser/index.cfm index 485e396..1ad8dd4 100644 --- a/cfml/browser/index.cfm +++ b/cfml/browser/index.cfm @@ -5,7 +5,7 @@ ASSETS_DIR = expandPath( "/testbox/system/reports/assets" ); TESTBOX_VERSION = new testBox.system.TestBox().getVersion(); // TEST LOCATIONS -> UPDATE AS YOU SEE FIT - rootMapping = "/tests/specs"; + rootMapping = "/tests"; // Local Variables rootPath = expandPath( rootMapping ); @@ -90,20 +90,24 @@ Below is a listing of the runners matching the "runner*.(cfm|bxm)" pattern.

    - - - - class="btn btn-success btn-sm my-1 mx-1" - - class="btn btn-info btn-sm my-1 mx-1" - - > - #runners.name# - - + + +

    No runners found in this directory

    + + + + class="btn btn-success btn-sm my-1 mx-1" + + class="btn btn-info btn-sm my-1 mx-1" +
    + > + #runners.name# + + + From db87ca3d88b698f30e9d9a363690f2a33bce48e3 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 19 Sep 2024 14:25:21 +0200 Subject: [PATCH 68/73] TESTBOX-402 #resolve New matcher: toHaveKeyWithCase() TESTBOX-403 #resolve Assertions: key() and notKey() now have a CaseSensitive boolean argument --- system/Assertion.cfc | 25 +++++++++++++++++-------- system/Expectation.cfc | 16 ++++++++++++++++ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/system/Assertion.cfc b/system/Assertion.cfc index d8b82c2..445537b 100644 --- a/system/Assertion.cfc +++ b/system/Assertion.cfc @@ -411,11 +411,13 @@ component { * @target The target object/struct * @key The key to check for existence * @message The message to send in the failure + * @caseSensitive If the key check is case sensitive */ function key( required any target, required string key, - message = "" + message = "", + boolean caseSensitive = false ){ arguments.target = normalizeToStruct( arguments.target ); @@ -428,7 +430,11 @@ component { arguments.key .listToArray() .filter( function( thisKey ){ - return structKeyExists( target, arguments.thisKey ); + if( caseSensitive ){ + return target.keyList().find( arguments.thisKey ); + } else { + return structKeyExists( target, arguments.thisKey ); + } } ) .len() != listLen( arguments.key ) ) { @@ -443,32 +449,35 @@ component { * @target The target object/struct * @key The key to check for existence * @message The message to send in the failure + * @caseSensitive If the key check is case sensitive */ function notKey( required any target, required string key, - message = "" + message = "", + boolean caseSensitive = false ){ arguments.target = normalizeToStruct( arguments.target ); arguments.message = ( len( arguments.message ) ? arguments.message : "The key [#arguments.key#] exists in the target object. Found keys are [#structKeyArray( arguments.target ).toString()#]" ); - if ( !structKeyExists( arguments.target, arguments.key ) ) { - return this; - } - // Inflate Key and process if ( arguments.key .listToArray() .filter( function( thisKey ){ - return structKeyExists( target, arguments.thisKey ); + if( caseSensitive ){ + return target.keyList().find( arguments.thisKey ); + } else { + return structKeyExists( target, arguments.thisKey ); + } } ) .len() > 0 ) { fail( arguments.message ); } + return this; } /** diff --git a/system/Expectation.cfc b/system/Expectation.cfc index 76cad87..bd480e6 100644 --- a/system/Expectation.cfc +++ b/system/Expectation.cfc @@ -391,6 +391,22 @@ component accessors="true" { return this; } + /** + * Assert that a given key exists in the passed in struct/object with case sensitivity + * + * @key A key or a list of keys to check that the structure MUST contain + * @message The message to send in the failure + */ + function toHaveKeyWithCase( required string key, message = "" ){ + arguments.target = this.actual; + if ( this.isNot ) { + variables.assert.notKey( argumentCollection = arguments ); + } else { + variables.assert.key( argumentCollection = arguments ); + } + return this; + } + /** * Assert that a given key exists in the passed in struct by searching the entire nested structure * From fbf8cee304034ab550bc5657e0fcd70f15fb0b0b Mon Sep 17 00:00:00 2001 From: lmajano Date: Thu, 19 Sep 2024 12:26:01 +0000 Subject: [PATCH 69/73] Apply cfformat changes --- system/Assertion.cfc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/system/Assertion.cfc b/system/Assertion.cfc index 445537b..748ad94 100644 --- a/system/Assertion.cfc +++ b/system/Assertion.cfc @@ -408,15 +408,15 @@ component { /** * Assert that a given key exists in the passed in struct/object * - * @target The target object/struct - * @key The key to check for existence - * @message The message to send in the failure + * @target The target object/struct + * @key The key to check for existence + * @message The message to send in the failure * @caseSensitive If the key check is case sensitive */ function key( required any target, required string key, - message = "", + message = "", boolean caseSensitive = false ){ arguments.target = normalizeToStruct( arguments.target ); @@ -430,7 +430,7 @@ component { arguments.key .listToArray() .filter( function( thisKey ){ - if( caseSensitive ){ + if ( caseSensitive ) { return target.keyList().find( arguments.thisKey ); } else { return structKeyExists( target, arguments.thisKey ); @@ -446,15 +446,15 @@ component { /** * Assert that a given key DOES NOT exist in the passed in struct/object * - * @target The target object/struct - * @key The key to check for existence - * @message The message to send in the failure + * @target The target object/struct + * @key The key to check for existence + * @message The message to send in the failure * @caseSensitive If the key check is case sensitive */ function notKey( required any target, required string key, - message = "", + message = "", boolean caseSensitive = false ){ arguments.target = normalizeToStruct( arguments.target ); @@ -467,7 +467,7 @@ component { arguments.key .listToArray() .filter( function( thisKey ){ - if( caseSensitive ){ + if ( caseSensitive ) { return target.keyList().find( arguments.thisKey ); } else { return structKeyExists( target, arguments.thisKey ); From 26c3adfd97dfcf76408f4bec2aa8cc5c2c88d13c Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 19 Sep 2024 17:33:20 +0200 Subject: [PATCH 70/73] update of compat slug --- server-boxlang@1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server-boxlang@1.json b/server-boxlang@1.json index e6607d9..846cf3e 100644 --- a/server-boxlang@1.json +++ b/server-boxlang@1.json @@ -23,6 +23,6 @@ "BOXLANG_DEBUG":true }, "scripts":{ - "onServerInitialInstall":"install bx-compat,bx-unsafe-evaluate" + "onServerInitialInstall":"install bx-compat-cfml,bx-unsafe-evaluate" } } From 6f00bc0b90e3f3749f60ded066ccca85055240b9 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Thu, 19 Sep 2024 18:29:37 +0200 Subject: [PATCH 71/73] better boxlang detection --- system/TestBox.cfc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system/TestBox.cfc b/system/TestBox.cfc index 560efcd..51aac6c 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -33,9 +33,9 @@ component accessors="true" { property name="bundlesPattern"; // Static Variables - variables.TESTBOX_PATH = expandPath( "/testbox" ); - variables.IS_BOXLANG = server.keyExists( "boxlang" ); - variables.IS_CLI = !getFunctionList().keyExists( "getPageContext" ); + variables.TESTBOX_PATH = expandPath( "/testbox" ); + variables.IS_BOXLANG = server.keyExists( "boxlang" ); + variables.IS_CLI = variables.IS_BOXLANG && server.boxlang.cliMode ? true : false; variables.DEFAULT_REPORTER = variables.IS_CLI ? "text" : "simple"; variables.DEFAULT_BUNDLES_PATTERN = "*Spec*.cfc|*Test*.cfc|*Spec*.bx|*Test*.bx"; // TestBox Info : Modified by the build process. From 4a79a7d297fcec32ece084582cfadef38146906e Mon Sep 17 00:00:00 2001 From: lmajano Date: Thu, 19 Sep 2024 16:30:23 +0000 Subject: [PATCH 72/73] Apply cfformat changes --- system/TestBox.cfc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system/TestBox.cfc b/system/TestBox.cfc index 51aac6c..7fb97bd 100644 --- a/system/TestBox.cfc +++ b/system/TestBox.cfc @@ -33,9 +33,9 @@ component accessors="true" { property name="bundlesPattern"; // Static Variables - variables.TESTBOX_PATH = expandPath( "/testbox" ); - variables.IS_BOXLANG = server.keyExists( "boxlang" ); - variables.IS_CLI = variables.IS_BOXLANG && server.boxlang.cliMode ? true : false; + variables.TESTBOX_PATH = expandPath( "/testbox" ); + variables.IS_BOXLANG = server.keyExists( "boxlang" ); + variables.IS_CLI = variables.IS_BOXLANG && server.boxlang.cliMode ? true : false; variables.DEFAULT_REPORTER = variables.IS_CLI ? "text" : "simple"; variables.DEFAULT_BUNDLES_PATTERN = "*Spec*.cfc|*Test*.cfc|*Spec*.bx|*Test*.bx"; // TestBox Info : Modified by the build process. From 988d1c5a7f86d7d8c26221ed1d2175b07b367742 Mon Sep 17 00:00:00 2001 From: Luis Majano Date: Fri, 27 Sep 2024 09:13:38 -0600 Subject: [PATCH 73/73] finalized changelog [no ci] --- changelog.md | 112 +++++++++------------------------------------------ 1 file changed, 20 insertions(+), 92 deletions(-) diff --git a/changelog.md b/changelog.md index 35a7f22..21ccb5f 100644 --- a/changelog.md +++ b/changelog.md @@ -9,103 +9,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [5.4.0] - 2024-05-13 - -### Improvement - -- [TESTBOX-385](https://ortussolutions.atlassian.net/browse/TESTBOX-385) Remove all unsafe references to evaluate -- [TESTBOX-386](https://ortussolutions.atlassian.net/browse/TESTBOX-386) Add lists of runners to Browser Page -- [TESTBOX-387](https://ortussolutions.atlassian.net/browse/TESTBOX-387) more compats on engine detection -- [TESTBOX-388](https://ortussolutions.atlassian.net/browse/TESTBOX-388) Adobe 2023 / Lucee 6 Certification - -## [5.3.1] - 2023-09-13 - -### Fixed - -- The variable `thisSuite` isn't defined if the for loop in the try/catch is never reached before the error. - () - -## [5.3.0] - 2023-08-01 - ### New Features -- [TESTBOX-379](https://ortussolutions.atlassian.net/browse/TESTBOX-379) New expectations: `toBeIn(), toBeInWithCase()` so you can verify a needle in string or array targets -- [TESTBOX-380](https://ortussolutions.atlassian.net/browse/TESTBOX-380) New matchers and assertions: `toStartWith(), toStartWithCase(), startsWith(), startsWthCase()` and their appropriate negations -- [TESTBOX-381](https://ortussolutions.atlassian.net/browse/TESTBOX-381) New matchers and assertions: `toEndWith(), toEndWithCase(), endsWith(), endsWithCase()` and their appropriate negations - -### Bugs - -- [TESTBOX-378](https://ortussolutions.atlassian.net/browse/TESTBOX-378) onSpecError `suiteSpecs` is invalid, it's `suiteStats` - -## [5.2.0] - 2023-07-28 - -### New Features - -- [TESTBOX-375](https://ortussolutions.atlassian.net/browse/TESTBOX-375) Updated mixerUtil for faster performance and new approaches to dynamic mixins -- [TESTBOX-376](https://ortussolutions.atlassian.net/browse/TESTBOX-376) Add `bundlesPattern` to testbox.system.TestBox `init` method -- [TESTBOX-377](https://ortussolutions.atlassian.net/browse/TESTBOX-377) TestBox Modules - -### Bugs - -- [TESTBOX-346](https://ortussolutions.atlassian.net/browse/TESTBOX-346) `expect(sut).toBeInstanceOf("something")` breaks if sut is a query -- [TESTBOX-374](https://ortussolutions.atlassian.net/browse/TESTBOX-374) cbstreams doesn't entirely work outside of ColdBox - -### Improvements - -- [TESTBOX-20](https://ortussolutions.atlassian.net/browse/TESTBOX-20) toBeInstanceOf() Expectation handle Java classes - -## [5.1.0] - 2023-07-06 - -### Added - -- Update to `cbstreams` 2.x series for compat purposes. - -### Fixed - -- Small regresion on [TESTBOX-370](https://ortussolutions.atlassian.net/browse/TESTBOX-370) `toHaveKey` works on queries in Lucee but not ColdFusion - -## [5.0.0] - 2023-05-10 - -### Fixed - -- [TESTBOX-341](https://ortussolutions.atlassian.net/browse/TESTBOX-341) toHaveLength param should be numeric -- [TESTBOX-354](https://ortussolutions.atlassian.net/browse/TESTBOX-354) Element $DEBUGBUFFER is undefined in THIS -- [TESTBOX-356](https://ortussolutions.atlassian.net/browse/TESTBOX-356) Don't assume TagContext has length on simpleReporter -- [TESTBOX-357](https://ortussolutions.atlassian.net/browse/TESTBOX-357) notToThrow() incorrectly passes when no regex is specified -- [TESTBOX-360](https://ortussolutions.atlassian.net/browse/TESTBOX-360) full null support not working on Application env test -- [TESTBOX-361](https://ortussolutions.atlassian.net/browse/TESTBOX-361) MockBox Suite: Key \[aNull] doesn't exist -- [TESTBOX-362](https://ortussolutions.atlassian.net/browse/TESTBOX-362) Cannot create sub folders within testing spec directories. - -### Improvements - -- [TESTBOX-333](https://ortussolutions.atlassian.net/browse/TESTBOX-333) Add contributing.md to repo -- [TESTBOX-339](https://ortussolutions.atlassian.net/browse/TESTBOX-339) full null support automated testing -- [TESTBOX-353](https://ortussolutions.atlassian.net/browse/TESTBOX-353) allow globbing path patterns in testBundles argument -- [TESTBOX-355](https://ortussolutions.atlassian.net/browse/TESTBOX-355) Add debugBuffer to JSONReporter -- [TESTBOX-366](https://ortussolutions.atlassian.net/browse/TESTBOX-366) ANTJunit Reporter better visualization of the fail origin and details -- [TESTBOX-368](https://ortussolutions.atlassian.net/browse/TESTBOX-368) Support list of Directories for HTMLRunner to allow more modular tests structure -- [TESTBOX-370](https://ortussolutions.atlassian.net/browse/TESTBOX-370) `toHaveKey` works on queries in Lucee but not ColdFusion - -### Added - -- [TESTBOX-371](https://ortussolutions.atlassian.net/browse/TESTBOX-371) Add CoverageReporter for batching code coverage reports -- [TESTBOX-137](https://ortussolutions.atlassian.net/browse/TESTBOX-137) Ability to spy on existing methods: $spy() -- [TESTBOX-342](https://ortussolutions.atlassian.net/browse/TESTBOX-342) Add development dependencies to box.json -- [TESTBOX-344](https://ortussolutions.atlassian.net/browse/TESTBOX-344) Performance optimizations for BaseSpec creations by lazy loading external objects -- [TESTBOX-345](https://ortussolutions.atlassian.net/browse/TESTBOX-345) add a skip(\[message]) like fail() for skipping from inside a spec -- [TESTBOX-365](https://ortussolutions.atlassian.net/browse/TESTBOX-365) New build process using CommandBox -- [TESTBOX-372](https://ortussolutions.atlassian.net/browse/TESTBOX-372) Adobe 2023 and Lucee 6 Support - -[Unreleased]: https://github.com/Ortus-Solutions/TestBox/compare/v5.3.1...HEAD +- TESTBOX-391 MockBox converted to script +- TESTBOX-392 BoxLang classes support +- TESTBOX-393 New environment helpers to do skip detections or anything you see fit: isAdobe, isLucee, isBoxLang, isWindows, isMac, isLinux +- TESTBOX-394 new `test(), xtest(), ftest()` alias for more natuarl testing +- TESTBOX-397 debug() get's two new arguments: label and showUDFs +- TESTBOX-398 DisplayName on a bundle now shows up in the reports +- TESTBOX-399 xUnit new annotation for @DisplayName so it can show instead of the function name +- TESTBOX-401 BoxLang CLI mode and Runner +- TESTBOX-402 New matcher: toHaveKeyWithCase() +- TESTBOX-403 Assertions: key() and notKey() now have a CaseSensitive boolean argument -[5.3.1]: https://github.com/Ortus-Solutions/TestBox/compare/v5.3.0...v5.3.1 +## Improvements -[5.3.0]: https://github.com/Ortus-Solutions/TestBox/compare/v5.2.0...v5.3.0 +- TESTBOX-289 showUDFs = false option with debug() +- TESTBOX-331 TextReporter doesn't correctly support testBundles URL param +- TESTBOX-395 adding missing focused argument to spec methods +- TESTBOX-396 Generating a repeatable id for specs to track them better in future UIs -[5.2.0]: https://github.com/Ortus-Solutions/TestBox/compare/v5.1.0...v5.2.0 +## Bugs -[5.1.0]: https://github.com/Ortus-Solutions/TestBox/compare/HEAD...v5.1.0 +- TESTBOX-123 If test spec descriptor contains a comma, it can not be drilled down to run that one spec directly +- TESTBOX-338 describe handler in non-called test classes being executed -\[]: +## Tasks -\[]: +- TESTBOX-400 Drop Adobe 2018 support