You’ve heard of the hype, but is crypto a good investment for you? We explore options from high-growth bitcoin to alternatives like USDC, and explain how investors can start to add cryptocurrency to their portfolios.

Watch: Is crypto a good investment?

! ( function ( r, u, m, b, l, e ) {
( r._Rumble = b ),
r[ b ] ||
( r[ b ] = function () {
( r[ b ]._ = r[ b ]._ || [] ).push( arguments );
if ( r[ b ]._.length == 1 ) {
( l = u.createElement( m ) ),
( e = u.getElementsByTagName( m )[ 0 ] ),
( l.async = 1 ),
( l.src=”https://rumble.com/embedJS/ulkdw1″ +
/* replace [PUBID] */ ( arguments[ 1 ].video
? ‘.’ + arguments[ 1 ].video
: ” ) +
‘/?url=” +
encodeURIComponent( location.href ) +
“&args=” +
encodeURIComponent(
JSON.stringify( [].slice.apply( arguments ) )
) ),
e.parentNode.insertBefore( l, e );
}
} );
} )( window, document, “script’, ‘Rumble’ );
/* In this function you return the URL to the ad. The ‘ad’ variable will be the ad requested, which in this example can be ‘preroll_1’, ‘preroll_2’, etc.
* This function gets called in bursts, with all the waterfall IDs of a given ad in succession
* It will be called again with the next ad unit 5 seconds after the first waterfall ad is needed by the player in the current ad
*/
function request_ad( ad, callback ) {
// console.log( ‘prepare ad ‘ + ad );

/* when ad is ready you use the callback function with the vast tag URL */
callback( ad );
}

( function () {
/* configuration section */
var DEBUG = true;
var video_id = ‘v1ke9qo’
? ‘v1ke9qo’
: ”;
var player_id = ‘v1ke9qo’ ? ‘videoplayer-‘ + ‘v1ke9qo’ : ”;
var ad_timeout = 1500; /* number of ms the player will wait for an ad, not the same as prebid timeout */
var player_div = document.getElementById( player_id );
var autoplay_control=”2″;
var mute_control=””;
var setup_ads = function () {
/* set up ad points for each new video, you can change this based on your needs, this is just an example */

/* in the array of ads you can provide a URL or an ID to signify which ad we need */
insert_ad( 0, [
‘https://pubads.g.doubleclick.net/gampad/ads?iu=/57452754/Rumble_Video&description_url=http%3A%2F%2Fmoneysense.ca&tfcd=0&npa=0&sz=400×300%7C640x480&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=”,
] );

// insert_ad( “25%’, [ ‘midroll_25_1’ ] );

// if ( player_div.clientWidth > 600 ) {
// insert_ad( ‘50%’, [ ‘midroll_50_big_1’, ‘midroll_50_big_2’ ] );
// } else {
// insert_ad( ‘50%’, [ ‘midroll_50_1’ ] );
// }
};

/* Do not change below: code implementing prebid support, you should not have to change what is below */

var api;
var ads_queue = []; /* all ads defined, we will request next set of ads as the previous one is done */
var ready_ads = {}; /* as ads become ready, we will populate this for the player to use */
var prepare_on;

var loaded_new_video = function () {
if ( DEBUG )
// console.log( ‘Setting up ad cuepoints’ );
ready_ads = {};
ads_queue = [];

api.clearAds();
setup_ads();

prepare_next_ads();
};

var insert_ad = function ( timecode, waterfall ) {
// if ( DEBUG )
// console.log(
// ‘insert_ad timecode: ‘ +
// timecode +
// ‘ , waterfall: ‘ +
// waterfall.length +
// ‘ ads’
// );

ads_queue.push( waterfall );
api.insertAd( timecode, waterfall );
};

var ads_request = function ( ad ) {
var id = ad.url;
var timeout;

// if ( DEBUG ) console.log( ‘player is ready for: ‘ + id );
if ( prepare_on && prepare_on == id ) {
prepare_on = false;
setTimeout( function () {
prepare_next_ads();
}, 5000 );
}

if ( typeof ready_ads[ id ] == ‘string’ ) {
/* ad is ready, let the player use it */
return ready_ads[ id ];
}

ready_ads[ id ] = function ( url ) {
if ( timeout ) {
clearTimeout( timeout );
timeout = 0;
}

ad.callback( url );

ready_ads[ id ] = true;
};

timeout = setTimeout( function () {
// if ( DEBUG ) console.log( ‘Ad : ‘ + id + ‘ has timed out’ );
ready_ads[ id ] = true;

ad.callback( false );
}, ad_timeout );

/* ask the player to wait */
return true;
};

var prepare_next_ads = function () {
if ( ads_queue.length == 0 ) return;

var next_ads = ads_queue.shift();

// if ( DEBUG ) console.log( ‘Preparing next ad’ );

/* we will prepare next set of ads based on this ad gets requested by the player */
prepare_on = next_ads[ 0 ];

/* go through the waterfall asking for ads */
for ( i = 0; i < next_ads.length; i++ ) {
simple_request_ad( next_ads[ i ] );
}
};

var simple_request_ad = function ( id ) {
request_ad( id, function ( url ) {
ad_ready( id, url );
} );
};

var ad_ready = function ( id, url ) {
if ( typeof ready_ads[ id ] == 'function' ) {
/* looks like the player is already waiting for an ad */
ready_ads[ id ]( url.md );
} else if ( ready_ads[ id ] ) {
/* already an ad defined with that id, or the player timed out on it */
return;
}

/* have it ready for the player when its needed */
ready_ads[ id ] = url;
};
// Not load anything if video id is not entered.
if ( ! video_id ) {
console.log('Please set rumble video id!');
return false;
}
/* You can configure the player as you see fit, just leave the player_id and api lines intact */
if ( autoplay_control ) {
Rumble( 'play', {
video: video_id,
div: player_id,
autoplay: '2',
api: function ( api_object ) {
/* the following 4 lines are required and should not be changed */
api = api_object;
if ( ! mute_control ) {
api.mute();
} else {
api.unmute();
}
api.on( 'loadVideo', loaded_new_video );
api.on( 'adRequest', ads_request );
loaded_new_video();
},
} );
} else {
Rumble( 'play', {
video: video_id,
div: player_id,
api: function ( api_object ) {
/* the following 4 lines are required and should not be changed */
api = api_object;
if ( ! mute_control ) {
api.mute();
} else {
api.unmute();
}
api.on( 'loadVideo', loaded_new_video );
api.on( 'adRequest', ads_request );
loaded_new_video();
},
} );
}
} )();

Subscribe to the MoneySense YouTube channel to watch all of the videos in this series and more.

Read more on crypto:

The post Watch: Is crypto a good investment? appeared first on MoneySense.

MoneySense Editors

Source link

You May Also Like

Wage theft often goes unpunished despite state systems meant to combat it

This is an updated version of a story first published on Jan.…

Oregon jury: PacifiCorp must pay punitive damages for fires, plus award that could reach billions

PORTLAND, Ore. — A jury in Oregon says the electric utility PacifiCorp…

South Korean, German leaders agree to cooperate on supply chains, North Korea

SEOUL, South Korea — The leaders of South Korea and Germany on…

Spirit Baggage Fees: How They Work – NerdWallet

If you’ve booked a flight on Spirit Airlines recently, you may have…